如果是对一个码流文件计算码率,那么先解码得到总帧数,然后看文件有多大。这样,有了总比特数(即文件大小)、总帧数和帧率,就可以算码率了。
H264码流中一般没有帧率,比特率信息到使可以得到,你参考吗流语法,
但是有的吗流有VUI信息,他里面有个标志 timing_info_present_flag 若等于1,则码流中有num_units_in_tick 和 time_scale。
framerate = time_scale/num_units_in_tick
请问:h264 的 framerate 应该怎样获取?
[i=s] 本帖最后由 explorer_djz 于 2009-2-24 10:38 PM 编辑 [/i]
h264 的 framerate 应该怎样获取?需要用到哪些 NAL 单元来完成?
一个 seqence 中 framerate 允许变化吗?
实时播放器播放时,会用到 framerate ?如果不用,播放器通过什么来判断一秒钟播放多少帧?
firstime 发表于 2009-2-24 11:31 PM
1、你看看 2005 版标准的附录 D 和 E,那里面可能有帧率信息,我不确定;
2、一般来说一个应用的帧率是不需要发生变化的。当然可以允许变化;
3、视频文件中有一些额外的信息,通过这些信息播放器可以算出播放速度。这些信息是封装视频文件的时候按照相应的文件格式协议产生的。例如 3GPP 是按照 ISO_IEC_14496-12 封装而成的。
explorer_djz 发表于 2009-3-3 08:51 PM
谢谢版主!我在附录E 中确实找到了能算帧率的。如下:(中文版标准P320)
VUI 信息中有个标志 timing_info_present_flag 若等于1,则码流中有num_units_in_tick 和 time_scale。
framerate = time_scale/num_units_in_tick
还有2个问题:
1 VUI信息是可选项,若只有一段 ES 流,且没有VUI信息,那是不是就没法得到帧率信息了?在复用时就只能猜了吗?
2 还是没有 VUI 信息的 ES 流,elecard streameye 分析后,framerate declared=0, 而 real = (var) 2516,streameye 是怎么得到 real framerate 的?
firstime 发表于 2009-3-3 09:05 PM
1、没有 VUI,就没有帧率信息。既然是你在做复用,那么你一定知道帧率;
2、ES 没有帧率信息,直接按正常速度显示就可以了。
explorer_djz 发表于 2009-3-7 08:44 PM
哦,差不多明白了。
谢谢楼上各位
对于帧历时(帧率)总结如下:
1 有VUI的话,可以解析此字段得到帧率(从而得到帧历时),这个得到的是平均帧率
2无VUI,那么帧历时可以从封装容器的时间标签得到(比如TS流的PTS)转载仅供参考,版权属于原作者
将视频分解成一帧一帧的图像
functionExtractFrame(imagefile)mov=aviread(imagefile);n=size(mov,2);for i=1:n k=int2str(i); F=mov(1,i); [f,map]=frame2im(F); k1=strcat('extraction\',k,'jpg'); imwrite(f,k1);end
游戏循环的代码怎么写的? 自己写一个FPS的类,有count属性记录帧数,每个循环更新count。 还有时间间隔属性,每个循环根据TickCount获取时间差,进行累加。当时间间隔超过1秒,就往回减1秒,并算出当前帧数。
理论上 所有游戏都自带查看帧数功能
因为游戏发布前的调试优化步骤 需要参考此帧数
不同游戏启动方式不同
也有可能正式发布后 屏蔽掉
或者直接用 第三方Fraps
第一步:用手机录制一小段视频,然后传到电脑,或传一个你手机能正常播放的视频也行;
第二步:下载视频参数检测工具包MediaInfozip
点击确定。
检测到添加的视频信息如下图:
上面检测到的视频参数信息为:
视频编码器:MPEG-4
视频比特率:165
视频帧率:29970
音频编码器:AAC
音频比特率:320
音频采样率:2205
以上就是关于如何获取h.264码流的码率和帧率全部的内容,包括:如何获取h.264码流的码率和帧率、求 :MATLAB获取视频帧的函数,以及获取视频帧中像素的函数。、怎么通过代码获取游戏实时帧率,就是那个fps等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)