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

Posted

技术标签:

【中文标题】使用 FFmpeg 裁剪视频会过度增加 tbn 值【英文标题】:Cropping video with FFmpeg increases the tbn value too much 【发布时间】:2016-04-05 03:42:23 【问题描述】:

这里是原始视频的信息:

 Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2016-04-05 03:00:09
  Duration: 00:01:50.09, start: 0.000000, bitrate: 8131 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, bt470bg/bt470bg/smpte170m), 1920x1080, 7995 kb/s, SAR 1:1 DAR 16:9, 44.49 fps, 90k tbr, 90k tbn, 180k tbc (default)

然后我使用这个ffmpeg 命令来裁剪视频:

ffmpeg -i file.mp4 -vf "crop=480:480:0:0" -b:v 2048k -preset ultrafast cropped.mp4

以下是裁剪视频的信息:

 Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.28.101
  Duration: 00:01:50.16, start: 0.023220, bitrate: 1078 kb/s
    Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1282x716 [SAR 1:1 DAR 641:358], 1002 kb/s, 44.49 fps, 44.49 tbr, 220455000.00 tbn, 88.98 tbc (default)

我手机的默认视频播放器无法播放此视频。如果我使用 MX Player,我必须将解码器更改为 Software decoder(而不是 Hardware)才能打开它。

我注意到重新编码后 tbn 值增加了。旧值为 90k。新值为 220455k。也许这就是默认视频播放器不起作用的原因。

问题:为什么tbn 的值这么大?如何避免?

【问题讨论】:

【参考方案1】:

您可以使用 video_track_timescale 为 MOV/MP4 文件指定 tbn

ffmpeg -i file.mp4 -vf "crop=480:480:0:0" -b:v 2048k -preset ultrafast \
       -video_track_timescale 90000 cropped.mp4

(您可能还需要尝试明确设置输出帧率-r 45

【讨论】:

非常感谢!完美!

以上是关于使用 FFmpeg 裁剪视频会过度增加 tbn 值的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg使用filter crop 裁剪视频

ffmpeg 的 tbr tbc 和 tbn的意义

使用 FFMPEG 裁剪视频时出错

FFmpeg-ffmpeg fps tbr tbn tbc的参数可以修改吗

ffmpeg如何控制fps tbr tbn tbc参数

在 Android 中使用 FFmpeg 将视频裁剪为方形格式