首页 > 解决方案 > FFmpeg 为 ORIGINAL 和 CONVERTED 文件生成不同数量的帧,即使它们具有相同的持续时间和帧速率

问题描述

我有两个具有以下配置的文件。我正在使用 FFmpeg 提取帧,然后MediaCodec使用帧持续时间对帧进行编码以计算 android 中的时间戳。

在处理第一个文件时,FFmpeg 生成围绕3000加帧,但对于第二个文件,FFmpeg 仅生成围绕1500帧。

当我使用帧持续时间对视频进行编码时,输出视频持续时间在上述情况下会发生变化。我做错了什么?为什么 FFmpeg 会生成不同数量的帧?

VID-20210223-WA0009.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'VID-20210223-WA0009.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isom
  Duration: 00:00:50.39, start: 0.000000, bitrate: 1410 kb/s
    Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 480x848, 1345 kb/s, 59.96 fps, 59.94 tbr, 600 tbn, 1200 tbc (default)
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 62 kb/s (default)
At least one output file must be specified

VID-20210223-WA0009_1.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'VID-20210223-WA0009_1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.48.100
  Duration: 00:00:50.39, start: 0.000000, bitrate: 1376 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc), 480x848, 1301 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 62 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
At least one output file must be specified

标签: androidffmpegandroid-mediacodec

解决方案


推荐阅读