FLV科普7 FLV时间戳计算

您所在的位置:网站首页 js分析flv文件时长 FLV科普7 FLV时间戳计算

FLV科普7 FLV时间戳计算

2024-07-10 23:45| 来源: 网络整理| 查看: 265

题记:时间戳将每一秒分成90000份,即将每一毫秒分成90份  在flv中直接存储的都是毫秒级  在TS存储的是时间戳级

其中TS、flv一般按照编码顺序排列

一个视频tag一般只包含一帧视频的码流

其中视频tag的时间戳对应的是解码时间戳(DTS/90)

当前序列:

编码顺序 I  P  P  B  B  B...... 对应帧号 0  1  5  3  2  4.......

flv对每一个tag都规定了它将要播放的时间戳

每个时间戳都可以对应转换特性的时间 其中script(脚本)、video(视频)、audio(音频)的第一个tag的时间戳值都为0 时间戳占4个字节 其中第四个字节是高位 前三个字节是低位(每个tag的5~8字节) 如6E 8D A8 01 = 0x 01 6E 8D A8 = 24022440 其中时间戳与时刻的转换代码如下: #include "stdio.h" int main() { unsigned int timestamp = 0; while(scanf("%d",×tamp)!=EOF) { int hour = timestamp/(3600*1000); printf("%2d:",hour); timestamp-= hour * 3600*1000; int minutes = timestamp/(60*1000); timestamp-= minutes * 60*1000; printf("%2d:",minutes); int seconds = timestamp/1000; printf("%2d:",seconds); timestamp-= seconds*1000; printf("%3d\n",timestamp); //millisecond } return 0; }

CompositionTime 每个视频tag的第14~16字节(表示PTS相对于DTS的偏移值 )

CompositionTime 单位为ms  显示时间 = 解码时间(tag的第5~8字节) +  CompositionTime

例如( 注意显示时间最后一个字节是高位) tag0 (脚本) :时间戳为0 tag1 (视频) :第一个视频时间戳  值为0 无CompositionTime (头信息) tag2 (音频) :第一个音频时间戳  值为0 tag3 (视频) :00 00 00 00  值:0  00:00:00:00 (解码时间) CompositionTime:0x 00 00 50  值:80    00:00:00:80  I帧 显示时间: 00:00:00: 80   poc=0 tag4 (视频) :00 00 28 00  值:40  00:00:00:40 (解码时间) CompositionTime:0x 00 00 50  值:80    00:00:00:80   P帧  显示时间: 00:00:00: 120   poc=1 tag5 (视频) :00 00 50 00  值:80  00:00:00:80 (显示时间) CompositionTime:0x 00 00 C8  值:200    00:00:00:200  P 帧  显示时间: 00:00:00: 280   poc=5 tag6 (音频) :00 00 50 00  值:80 00:00:00:80(显示时间) tag7 (音频) :00 00 67 00  值:103 00:00:00:103(显示时间) tag8 (视频) :00 00 78 00  值:120  00:00:00:120 (解码时间) CompositionTime:0x 00 00 50  值:80    00:00:00:80  B 帧  显示时间: 00:00:00: 200  poc=3 tag9 (音频) :00 00 7E 00  值:126 00:00:00:126(显示时间) tag10 (音频) :00 00 96 00  值:150 00:00:00:150(显示时间) tag11 (视频) :00 00 A0 00  值:160  00:00:00:160(解码时间) CompositionTime:0x 00 00 00  值:00    00:00:00:00  b 帧  显示时间: 00:00:00: 160  poc=2 tag12 (音频) :00 00 AD 00  值:173 00:00:00:173(显示时间) tag13 (音频) :00 00 C4 00  值:196 00:00:00:196(显示时间) tag14(视频) :00 00 C8 00  值:200  00:00:00:200(解码时间) CompositionTime:0x 00 00 28  值:40    00:00:00:40  b 帧  显示时间: 00:00:00: 240 poc=4

我们可以看到 每个视频tag相差约40ms 刚好是25fps视频 每帧视频的播放时长

在上例中,我们会看到按照解码时间排列

编码顺序 I  P  P  B  B  B...... 对应帧号 0  1  5  3  2  4.......



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3