ffmpeg concat demuxer 在加入视频时冻结我的视频帧

Posted

技术标签:

【中文标题】ffmpeg concat demuxer 在加入视频时冻结我的视频帧【英文标题】:ffmpeg concat demuxer freezes my video frames while joining the videos 【发布时间】:2019-11-15 00:57:33 【问题描述】:

我正在尝试使用此命令ffmpeg -f concat -i mylist.txt -c copy finalvideo.webm 连接 6 个相同分辨率和相同编解码器的 WebM 视频文件,但结果视频冻结了某些部分,确切地说是每个部分连接的位置 是的,我正在使用最新的 ffmpeg

生成的视频音频频谱您很容易看到视频音频冻结

https://i.stack.imgur.com/SX6WT.gif

mylist.txt

file '1.webm'
file '2.webm'
file '3.webm'
file '4.webm'
file '5.webm'
file '6.webm'

我的日志

https://pastebin.com/Rzqr6w3b

【问题讨论】:

【参考方案1】:

这可能是由于编解码器的编码需要在每个连接点重置。删除复制编解码器的要求,让 ffmpeg 使用默认设置对其重新编码,或者指定您自己的特定编解码器和设置来重新编码流。

默认值:

ffmpeg -f concat -i mylist.txt finalvideo.webm

或选择特定的编解码器:

ffmpeg -f concat -i mylist.txt -c:v libvpx -c:a libvorbis finalvideo.webm

【讨论】:

它不工作,同样的结果,但这次我也失去了视频质量 是的,每次使用有损格式重新编码时质量都会下降。您可以尝试 -c:v copy 和 -c:a 以保持视频质量不变。但是,如果重新编码音频并不能解决那里的口吃,那是由于现有音频流之间的信号中断。如果是这种情况,唯一的解决方案是为完整的流找到(或制作/合成)一个新的来源。

以上是关于ffmpeg concat demuxer 在加入视频时冻结我的视频帧的主要内容,如果未能解决你的问题,请参考以下文章

把自定义的demuxer加入ffmpeg源码

sh Concat_demuxer.sh

ffmpeg 基本用法

ffmpeg 检查demux codec

[ffmpeg_3.3.2]demuxing_decoding.c

ffmpeg decode, encode, transcode, mux, demux, stream, filter的区别