当 ffmpeg 中的音频较长时,将黑帧附加到视频中
Posted
技术标签:
【中文标题】当 ffmpeg 中的音频较长时,将黑帧附加到视频中【英文标题】:Append black frames to video when audio is longer in ffmpeg 【发布时间】:2018-04-08 13:22:57 【问题描述】:我正在尝试将 ffmpeg 用作视频编辑器,这主要是因为常规视频编辑器丢失的帧比我习惯的要多。
ffmpeg -i "videoplayback1" -t 00:09:51 -i "audioplayback1" -t 00:09:54.38 -vcodec libx264 -crf 20 -acodec copy "playback1.mp4"
如您所见,我将视频修剪得比音频短,但我想要的是与-shortest
命令开关相反的东西,让文件在音频@987654323 的持续时间内继续@,并在剩余时间添加物理黑框。
就像现在一样,视频仍然被剪辑,就像我使用-shortest
开关一样。我尝试了一些-vf
和filter_complex
,但我得到了错误,或者音频仍然被截断,视频冻结,但持续时间是最长的-t
。
只要音频正在播放,我将如何添加黑框?
【问题讨论】:
【参考方案1】:您的命令格式错误,因为它没有修剪比音频短的视频。期权放置很重要。输入的输入选项位于该输入之前,所以
ffmpeg -t 00:09:51 -i "videoplayback1" -t 00:09:54.38 -i "audioplayback1" -vcodec libx264 ...
根据您的编辑要求,我会删除视频修剪并使用绘图框过滤器在所需的视频修剪点之后使帧变黑。
ffmpeg -i "videoplayback1" -t 00:09:54.38 -i "audioplayback1" -vf drawbox=t=fill:enable='gt(t,591)' -shortest -c:v libx264 -crf 20 -c:a copy "playback1.mp4"
drawbox
设置为在 591 秒的视频后以默认颜色黑色绘制整个帧。 -shortest
终止输出。
【讨论】:
Missing ')' or too many args in 'gt(t'
Error when evaluating the expression 'gt(t' for enable
Error initializing filter 'drawbox' with args 't=fill:enable=gt(t'
Error opening filters!
听起来你需要转义逗号。让它'gt(t\,591)'
Undefined constant or missing '(' in 'fill'
您使用的是旧版本的 ffmpeg。将填充更改为最大值。
嗯。在这里,我以为我使用的是最新的代表。此外,现在使用带有 max 和转义逗号的命令,整个视频在最短的 -t
处停止。删除 -shortest
会在音频末尾增加大约 20 秒。以上是关于当 ffmpeg 中的音频较长时,将黑帧附加到视频中的主要内容,如果未能解决你的问题,请参考以下文章
使用 ffmpeg 和 python 将视频中的所有音频流提取到单独的音频文件中