ffmpeg如何控制fps tbr tbn tbc参数

Posted

技术标签:

【中文标题】ffmpeg如何控制fps tbr tbn tbc参数【英文标题】:ffmpeg how to control fps tbr tbn tbc parameters 【发布时间】:2013-04-02 14:58:57 【问题描述】:

RT,我有两个 avi 文件,

A.avi: fps 30 tbr 30 tbn 30 tbc 30.
B.avi: fps 2 tbr 2 tbn 2 tbc 2.

问题是如何在 B.avi 上设置相同的值 30?

【问题讨论】:

非常感谢,我正在使用 cmd-tools :) 此类问题属于video.stackexchange.com/questions/tagged/ffmpeg -r设置fps-video_track_timescale设置tbn,参考ffmpeg concat compressed video result in wrong time span 【参考方案1】:

您可以使用指定的帧速率重新编码:

ffmpeg -i B.avi -codec:v mpeg4 -r 30 -qscale:v 2 -codec:a copy C.avi

这些选项的含义:

-codec:v mpeg4 - 使用名为 mpeg4 的编码器用于 MPEG-4 第 2 部分 视频。 -r 30 - 将输出帧速率设置为 30。 -qscale:v 2 - 使用恒定量化参数设置视频输出质量。 mpeg4 的推荐范围是 2-5。 -codec:a copy - 将音频从输入复制到输出以避免重新编码。

请注意,ffmpeg 将简单地复制帧以达到您想要的输出帧速率。相反,如果您降低帧速率 ffmpeg 会丢帧。

【讨论】:

【参考方案2】:

如果你想要更多的精度控制,不仅仅是控制 fps。还有 tbr、tbn、tbc。 假设您了解它的含义。 tbc,tbn,tbr

检查

ffmpeg -x264opts timebase=???

ffmpeg -time_base

或使用格式工厂,默认为您提供相同的 tbr、tbn、tbc。

【讨论】:

ffmpeg -i input.mp4 -time_base 1/30 -c:a copy -c:v copy output.mp4 是我用的。 time_base 参数成功更改了“tbn”以匹配两个视频,而无需重新编码。如果在加入视频之前需要统一其他设置,您可能需要应用其他参数。【参考方案3】:

您可以通过-video_track_timescale 更改时基或tbn tbc,例如。 G。将tbntbc 更改为30:

ffmpeg -i 1.avi -c:v copy -video_track_timescale 30 1.avi

【讨论】:

这对我很有帮助。我有一个视频,我想在前面加上几秒钟的黑色。连接的视频播放速度要慢得多,有效帧速率仅为所需帧速率的四分之一。我能够使用ffmpeg -f lavfi -i color=size=1920x1080:rate=60:color=black -t 10 -video_track_timescale 60k black.mp4 生成一个与实际视频匹配的 tbn 视频。在这种情况下,tbc 似乎并不重要。

以上是关于ffmpeg如何控制fps tbr tbn tbc参数的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg 的 tbr tbc 和 tbn的意义

ffmpeg concat 让视频更长

无法使用 ffmpeg 更改视频字幕编解码器

使用 capture.get(CV_CAP_PROP_FPS) 时 OpenCV 报告 TBR 而不是 FPS

使用 FFmpeg 裁剪视频会过度增加 tbn 值

如何以正确的大小从 VOB 中保存帧?