【发布时间】:2020-03-17 08:39:38
【问题描述】:
我正在调查在 Android 三星平板电脑上拍摄的 mp4 视频。我使用 MediaCodec 和 MediaExtractor 来获取一些关于它的详细信息,并发现了一些对我来说没有意义的有趣的东西。 NTSC 视频似乎是 1080p/29.97fps。我与 MediaExtractor.SampleTime 信息一起制作了一个帧列表。这是列表:
0-KEY timestamp: 0
1- timestamp: 36711 diff:36711
2- timestamp: 70022 diff:33311
3- timestamp: 103322 diff:33300
4- timestamp: 136655 diff:33333
5- timestamp: 169955 diff:33300
6- timestamp: 203300 diff:33345
7- timestamp: 236588 diff:33288
8- timestamp: 269955 diff:33367
9- timestamp: 303244 diff:33289
10- timestamp: 336577 diff:33333
11- timestamp: 369855 diff:33278
12- timestamp: 403166 diff:33311
13- timestamp: 436511 diff:33345
14- timestamp: 469800 diff:33289
15- timestamp: 503111 diff:33311
16- timestamp: 536477 diff:33366
17- timestamp: 569733 diff:33256
18- timestamp: 603055 diff:33322
19- timestamp: 636388 diff:33333
20- timestamp: 669700 diff:33312
21- timestamp: 703000 diff:33300
22- timestamp: 736311 diff:33311
23- timestamp: 769633 diff:33322
24- timestamp: 802944 diff:33311
25- timestamp: 836311 diff:33367
26- timestamp: 869577 diff:33266
27- timestamp: 902933 diff:33356
28- timestamp: 936211 diff:33278
29- timestamp: 969522 diff:33311
30-KEY timestamp: 1002833 diff:33311
有趣的事实是,帧的持续时间变化超出我的预期。我认为持续时间应该是 1 / (30 / 1001) 毫秒 ~33.366ms。
但正如我所看到的,第一帧是 ~36.711 毫秒。对我来说更有趣的是第 30 帧(从零开始)从 1.002833 秒开始。
它不应该从 1.001 秒开始吗?
谁能推荐我一些关于数字形式的 NTSC 视频的文章?我是否遗漏了一些重要的东西,或者我的示例中的时间戳是否不标准?
最初我在考虑是否能够计算流时间以从我会跳过的许多帧中寻找。假设我想跳过 mp4 流的 27 帧。我应该寻找什么时间?最后我查看了帧列表并想知道发生了什么:)
【问题讨论】:
-
也许你可以分享一个示例文件的链接。
标签: video mp4 android-mediacodec ntsc