Mr.*_*oor 7 flv cts h.264 mpeg-4
h.264硬件压缩卡通过捕获的视频处理NALU.
我试图将NALU包装成FLV,我几乎成功了.
我不知道如何为每个NALU填充FLV中的撰写时间字段.
根据FLV规范,http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf,E.4.3.1.
CompositionTime 合成时间偏移
有关组合时间的说明,请参见ISO 14496-12,8.15.3.FLV文件中的偏移量始终以毫秒为单位
然后查看ISO 14496-12,8.15.3,第24页和第26页
提供解码时间和合成时间之间的偏移.由于解码时间必须小于合成时间,所以偏移表示为无符号数,使得 CT(n)= DT(n)+ CTTS(n)其中CTTS(n)是样本n的(未压缩的)表条目.
我如何知道每个NALU中的DT和CTTS?或者如何在没有DT和CTTS的情况下计算CT?
谢谢
对于在MPEG-2传输中提供I帧,P帧和B帧NALU的MPEG-4 H.264转码器,得到的打包基本流(PES)带有时间戳,带有显示时间戳(PTS)和解码器时间戳. (DTS)的时间单位为1/90000秒.
NALU以重复模式的形式进入DTS时间戳顺序
I P B B B P B B B ...
Run Code Online (Sandbox Code Playgroud)
预期的回放渲染的位置
I B B B P B B B P ...
Run Code Online (Sandbox Code Playgroud)
(此传输策略确保在处理B帧之前B帧帧在解码器中的两个帧.)
对于FLV,时间戳(FLV规范第69页)告诉帧何时应该以毫秒为单位馈送到解码器,这是
timestamp = DTS / 90.0
Run Code Online (Sandbox Code Playgroud)
CompositionTime(FLV规范第72页)告诉渲染器何时在进入解码器后的几毫秒内执行("组合")显示设备上的视频帧; 因此它是
compositionTime = (PTS - DTS) / 90.0
Run Code Online (Sandbox Code Playgroud)
(因为PTS> = DTS,这个delta绝不是负数.)
| 归档时间: |
|
| 查看次数: |
9424 次 |
| 最近记录: |