我正在尝试将桌面屏幕转换到 ffserver 并将其作为 webm 进行流式传输。我正在使用以下 ffserver 配置:
<Feed feed1.ffm> # This is the input feed where FFmpeg will send
File ./feed1.ffm # video stream.
FileMaxSize 1G # Maximum file size for buffering video
ACL allow 127.0.0.1
ACL allow localhost
</Feed>
<Stream test.webm> # Output stream URL definition
Feed feed1.ffm # Feed from which to receive video
Format webm
# Audio settings
AudioCodec vorbis
AudioBitRate 64 # Audio bitrate
# Video settings
VideoCodec libvpx
VideoSize 720x576 # Video resolution
VideoFrameRate 25 # Video FPS
AVOptionVideo cpu-used 10
AVOptionVideo qmin 10
AVOptionVideo qmax 42
AVOptionVideo quality good
AVOptionAudio flags +global_header
PreRoll 15
StartSendOnKey
VideoBitRate 400 # Video bitrate
</Stream>
在我的桌面上执行以下命令:
ffmpeg -f x11grab -r 25 -s 1280x800 -i :0.0 -f alsa -i pulse http://127.0.0.1:8090/feed1.ffm
ffmpeg 版本为 2.4.2,并且启用了 libvpx(Arch 上的最新版本)。我收到错误:
[libvpx @ 0x20a21a0] CQ level 0 must be between minimum and maximum quantizer value (10-42)
在客户端。据我所知,通过调用 ffmpeg -h full ,无法设置 cq-level,并且将 qmin 设置为 0 不起作用(我猜由于某种原因,它最终变成了 3) ffmpeg 强制执行最小值)。
此配置似乎适用于互联网上的其他人,但我不知道如果 cq-level 默认为 0,会如何。如果有人有任何想法,我将非常感激。
最佳答案
将 -c:v libvpx
添加到控制台语法中:
ffmpeg -f x11grab -r 25 -s 1280x800 -i :0.0 -c:v libvpx -f alsa -i pulse http://127.0.0.1:8090/feed1.ffm
此外,我建议阅读 ffmpeg streaming guide
关于ffmpeg - 使用 ffmpeg/ffserver 流式传输 webm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26222512/