ffmpeg如何控制fps tbr tbn tbc参数

kak*_*ace 6 ffmpeg

RT,我有两个avi文件,

A.avi: fps 30 tbr 30 tbn 30 tbc 30.
B.avi: fps 2 tbr 2 tbn 2 tbc 2.
Run Code Online (Sandbox Code Playgroud)

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

llo*_*gan 7

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

ffmpeg -i B.avi -codec:v mpeg4 -r 30 -qscale:v 2 -codec:a copy C.avi
Run Code Online (Sandbox Code Playgroud)

这些选项的含义:

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

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


小智 6

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

ffmpeg -i 1.avi -c:v copy -video_track_timescale 30 1.avi
Run Code Online (Sandbox Code Playgroud)

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