![使用 VLC/FFmpeg 从另一台计算机网络摄像头播放和录制直播](https://linux22.com/image/1334508/%E4%BD%BF%E7%94%A8%20VLC%2FFFmpeg%20%E4%BB%8E%E5%8F%A6%E4%B8%80%E5%8F%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%91%84%E5%83%8F%E5%A4%B4%E6%92%AD%E6%94%BE%E5%92%8C%E5%BD%95%E5%88%B6%E7%9B%B4%E6%92%AD.png)
我最近试图在一台机器上设置视频服务器并在另一台机器上播放它,它可以正常工作..但问题是它总是卡在中间..而且与原始流相比非常慢..大约 5 秒的延迟,这是完全不可接受的!
我收到的警告信息通常包括以下内容:
在客户端,哪一个是被堵塞的。
[0x24d1ab0] ts demux warning: discontinuity received 0x5 instead of 0xe (pid=68)
[0x7f4340015e50] rtp demux warning: 2 packet(s) lost
reference picture missing during reorder
Missing reference picture
mmco: unref short failure
Reference 4 >= 4 (H264 - MPEG-4 AVC (part 10)) stopped
error while decoding MB 34 14, bytestream (575)
这是流媒体堵塞时的图片:
当它顺利运行时,它看起来是这样的:
这是我在服务器上收到的错误消息:
[0x2513820] main generic debug: auto hidding mouse
[0x2296230] main mux warning: late buffer for mux input (1840085)
最后,这是我在服务器上使用的命令行:
vlc -vvv v4l2:///dev/video1:v4l2-width=640:v4l2-height=480 --sout
'#duplicate{dst=display,dst="transcode{vcodec=h264,vb=800,ab=128}
:duplicate{dst=rtp{mux=ts,dst=172.22.2.87,port=50004}'
在客户端上:
vlc -vvv rtp://@:50004
我认为这可能是来自 VLC 或我的命令。我尝试了不同的传输协议,但都没有成功。我也尝试了 FFmpeg,得到了类似的结果 + 警告消息。我当时认为它们都在 Linux 中使用相同的库。
以下是使用 FFmpeg 的命令:
ffmpeg -f video4linux2 -i /dev/video1 -vcodec libx264 -s 320x240 -pix_fmt
yuv420p -vb 200000 -minrate 200000 -maxrate 200000 -bufsize 2000000 -acodec
libmp3lame -ab 128k -ar 44100 -ac 2 -f mpegts udp://172.22.2.87:5544
总之,我想找到一个解决流媒体延迟(非常高)和卡塞问题的方法。