我正在尝试使用 FFMPEG 流式传输我的本地网络摄像头。出于测试目的,我在本地执行此操作并尝试使用 VLC(3.0.8,Windows 10)打开流。这是我从 FFMPEG 流式传输的方式:
ffmpeg -f dshow -i video="Microsoft Camera Front" -preset fast -s 1280x720
-vcodec libx264 -tune ssim -b 500k -f mpegts udp://127.0.0.1:1234
我可以使用无缝播放流
ffplay udp://127.0.0.1:1234
但是,我无法使用 VLC 使其工作。我单击“打开网络流”并尝试了不同的格式,例如udp://127.0.0.1:1234
或udp://@:127.0.0.1:1234
或udp://@:1234
。使用后者,它设法打开流,但没有显示任何视频。但是,从编解码器信息窗口,它甚至似乎检测到正确的编解码器(编解码器:H264 - MPEG-4 AVC(第 10 部分)(h264)。从统计窗口中,我注意到它接收的数据的比特率在 40kb/s 和 100kb/s 之间变化,这似乎是合理的,因为我的流速约为 560kbit/s。
所以它似乎只是不显示视频。另一台装有 Windows 10 的 PC 也出现了同样的情况。有人知道哪里出了问题吗?提前感谢您的任何提示!
答案1
在服务器(ffmpeg)和客户端(vlc)两端添加数据包大小;
在 ffmpeg 中:
>ffmpeg -re -i "path/to/my/video.mp4" -vcodec libx264 -f mpegts udp://127.0.0.1:1234?pkt_size=1316
在VLC中:
>udp://127.0.0.1:1234?pkt_size=1316
答案2
在 VLC 中需要符号“@”才能工作
udp://@127.0.0.1:1234?pkt_size=1316