dem*_*pap 5 vlc-media-player ffmpeg latency video-streaming video-codecs
在 Linux 服务器(FFmpeg)和 Windows 客户端(VLC 播放器)之间的视频流应用程序上,有大约 10 秒的明显延迟。
FFmpeg 命令:
ffmpeg -re -f v4l2 -i /dev/video0 http://192.168.1.101:8090/feed1.ffm
Run Code Online (Sandbox Code Playgroud)
VLC 播放器:
http://192.168.1.101:8090/test.swf
Run Code Online (Sandbox Code Playgroud)
尽管服务器和客户端同时启动,但 VLC 播放器会延迟大约 10 秒来播放流,从服务器捕获的第一帧开始播放。因此,经常会有 10 秒的延迟。
我试图找出导致这种延迟的原因:
我的第一个想法是编解码器会延迟编码。在这种情况下,我应该在我的 ffserver 配置文件中包含什么编解码器?我尝试了许多视频编解码器(rawvideo、flv、mjpeg),但结果相同。
其次,是否可以在我的 ffmpeg 命令中包含一个参数来控制延迟?
另一方面,这种延迟会不会因为 VLC 播放器而发生?
我理解这个问题有点笼统。但是,如果您遇到类似问题,任何帮助将不胜感激。
FFserver 配置文件:
Port 8090
BindAddress 0.0.0.0
MaxClients 10
MaxBandwidth 40000
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 500M
ACL allow localhost
ACL allow 127.0.0.1
ACL allow 192.168.0.0 192.168.255.255
</Feed>
<Stream test.swf>
Feed feed1.ffm
Format swf
VideoCodec flv
VideoSize 640x480
VideoFrameRate 30
VideoBitRate 400
AVOptionVideo flags +global_header
AVOptionVideo cpu-used 0
AVOptionVideo qmin 10
AVOptionVideo qmax 42
PreRoll 5
StartSendOnKey
NoAudio
</Stream>
Run Code Online (Sandbox Code Playgroud)
小智 2
添加使用 x265 编解码器的选项ffmpeg
和-tune zerolatency
最佳选项,将 VideoSize 640x480 减少到 VideoSize 320x240。
最后,将播放器从 vlc 更改为 ffplay