FFmpeg-ffmpeg fps tbr tbn tbc的参数可以修改吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FFmpeg-ffmpeg fps tbr tbn tbc的参数可以修改吗相关的知识,希望对你有一定的参考价值。
参考技术A 目前参数都是固定的,不可以修改的哦ffmpeg concat 让视频更长
【中文标题】ffmpeg concat 让视频更长【英文标题】:ffmpeg concat makes video longer 【发布时间】:2017-09-20 14:11:46 【问题描述】:我有 2 个要使用 ffmpeg 连接的视频文件
initial.mp4 视频:h264(高)(avc1 / 0x31637661)、yuv420p(tv)、720x720、1077 kb/s、15.98 fps、16 tbr、600 tbn、1200 tbc(默认)
结尾.mp4 视频:h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt470bg), 720x720 [SAR 1:1 DAR 1:1], 1287 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (默认
video_instructions_with_ending.txt
file initial.mp4
file initial.mp4
file initial.mp4
file ending.mp4
FFmpeg 命令
ffmpeg -f concat -i video_instructions_with_ending.txt -c copy output.mp4 -y
output.mp4 视频:h264 (High) (avc1 / 0x31637661), yuv420p(tv), 720x720, 27 kb/s, 0.43 fps, 48 tbr, 19200 tbn, 38400 tbc (默认)
输出文件应该是 6 秒。但是输出文件是3分32秒。
任何帮助将不胜感激
对于我使用的文件,您可以从:HERE获取它
【问题讨论】:
请参考this answer,我想这将是您的解决方案。 【参考方案1】:我尝试了以下命令,它对我有用
ffmpeg -i initial.mp4 -i initial.mp4 -i initial.mp4 -i ending.mp4 -filter_complex concat=n=4:v=1:a=0 -f MOV output.mp4 -y
解释: FFmpeg 有三种 concat 方法
-
concat 协议(ffmpeg -i 'concat:input1|input2' -codec 复制输出)。 - 将它用于二进制 concat 兼容文件,如 avi、mpeg-ts 文件
concat demuxer(您已经解释过的方法)- 当您想避免重新编码并且您的格式不支持文件级连接时使用。
concat 过滤器:(上面的答案)- 如果您需要重新编码,例如在应用过滤器时使用。
第三个选项适合这种情况,因为我们需要重新编码文件。
【讨论】:
嗨,阿伦,感谢您的解释。对于第三个选项,因为它是重新编码,我会遭受质量损失对吗? 不一定。我们可以应用其他参数来进行无损编码。有一个参数crf(0-51)。其中 0 表示完全无损,51 表示最有损。当我尝试使用 18 的 crf 时,我可以获得源比特率。以下是命令,我试过'ffmpeg -i initial.mp4 -i initial.mp4 -i initial.mp4 -i ending.mp4 -filter_complex concat=n=4:v=1:a=0 -crf 18 output.mp4 -y' 参考:trac.ffmpeg.org/wiki/Encode/H.264 这修复了我的issue,非常感谢!我以为我在使用 MP4 时要避免这种方法,但显然不是!非常感谢:)【参考方案2】:在ending.mp4
上运行此命令,然后与新文件连接:
ffmpeg -i ending.mp4 -c copy -video_track_timescale 600 newending.mp4
长话短说,时基不同,所以结尾视频会延长。有关时间戳和基准的上下文,请参阅 https://***.com/a/43337235/5726027。
【讨论】:
您好,感谢您的帮助。我试过了,不幸的是合并的视频没有 newending.mp4 。这是为什么呢? 您的视频没有相同的编码。一个或两个可能需要重新编码。以上是关于FFmpeg-ffmpeg fps tbr tbn tbc的参数可以修改吗的主要内容,如果未能解决你的问题,请参考以下文章