android - FFmpeg 为 ORIGINAL 和 CONVERTED 文件生成不同数量的帧,即使它们具有相同的持续时间和帧速率
问题描述
我有两个具有以下配置的文件。我正在使用 FFmpeg 提取帧,然后MediaCodec
使用帧持续时间对帧进行编码以计算 android 中的时间戳。
在处理第一个文件时,FFmpeg 生成围绕3000
加帧,但对于第二个文件,FFmpeg 仅生成围绕1500
帧。
当我使用帧持续时间对视频进行编码时,输出视频持续时间在上述情况下会发生变化。我做错了什么?为什么 FFmpeg 会生成不同数量的帧?
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
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
- 帧点和持续时间
- 使用 FFmpeg 从第一个文件转换而来。
解决方案
推荐阅读
- c - 如何比较 2 个动态分配的数组的内存位置
- python - 如何迭代同一列的前几行的结果?
- python - 重复列表中的每个元素 x 次
- jmeter - JMETER 错误 - 无法加载信任库:/var/tmp/jre1.8.0_281/lib/security/cacerts - 由 java.io.FileNotFoundException 引起
- ios - 是否可以在 SwiftUI 中模仿旧的 UICollectionView
- c - (C) avcodec_receive_frame (ffmpeg) 函数总是返回 AVERROR(EAGAIN)
- oracle - 如果添加列,Oracle 补充日志会发生什么情况?
- python - 为什么在使用相同但相反的均值向量和协方差时,两个多法线绘制不匹配?
- verilog - 在verilog中表示二进制值问题的verilog
- javascript - 是否可以让 HTML 滑块的初始值取决于变量?