Jee*_*tel 4 c duration ffmpeg h.264 video-codecs
我有一个文件,其中只有h264帧以NAL单位的形式存在.所以现在有什么方法可以计算该文件的持续时间吗?
我不知道文件中有多少帧.我只有文件大小.
PS:我想做的就是使用C语言和Linux平台.
你的问题毫无意义,这就是为什么有人向你投票.
容器文件
首先,没有这样的事情H264 file.可以存在容纳H264编码视频的容器文件(MP4,AVI,MKV).该容器格式通常还包含告诉您包含的视频持续时间的数据.因此,您必须解析该文件,检查格式文档以查看保存持续时间的位置,然后将其解压缩.
最简单的方法是使用像Augusto建议的FFMPEG.
NAL字节流
如果你的文件只有NAL单元保存此起彼伏,就像在一个NAL字节流,有没有办法,你可以得到的视频长度!由于H264编码图像不保存定时信息.
如果是这种情况,如果您知道视频FPS,您仍然可以进行近似...您需要计算文件中的所有帧,不包括:
然后做数学: NUMBER_OF_FRAMES / FPS = DURATION_IN_SECONDS
RTP流
如果您错了并且每个NAL单元顶部都有RTP标头,您可以通过检查每个RTP标头的RTP时间轻松获得视频持续时间.RTP Header中的字节含义是什么,您可以在这里找到:http://www.networksorcery.com/enp/protocol/rtp.htm.你想得到TIMESTAMP每个部分(4个字节整数).代码应该这样做:
int last_timestamp = GetNextTimestamp();
double duration_in_ms = 0;
while(true)
{
int next = GetNextTimestamp();
duration_in_ms += (next - last_timestamp)/90000.0;
last_timestamp = next;
}
Run Code Online (Sandbox Code Playgroud)