如何计数/检测原始H.264比特流中的帧(图片)?我知道有5种VCL NALU类型,但我不知道如何将它们的序列(K)作为访问单元。我认为检测帧意味着像访问单元一样检测访问单元。
一组NAL单元,它们在解码顺序上是连续的,包含一个主编码图像。除了主编码图像之外,接入单元还可以包含一个或多个冗余编码图像、一个辅助编码图像或其他NAL单元,这些单元不包含编码图像的片或片数据分区。访问单元的解码总是导致解码图像。
我想让它知道什么是实时流到服务器的FPS。
发布于 2013-11-12 20:20:56
来自ITU H.264的 (03/2009):
7.4.1.2.3 NAL单元的顺序和编码的图片以及与访问单元的关联
本款规定了NAL单元和编码图像的顺序,以及对符合附件A中指定的一个或多个配置文件的编码视频序列的关联,这些文件是使用第2-9条规定的解码过程解码的。
访问单元由一个主编码图像、零或多个对应的冗余编码图像和零或多个非VCL NAL单元组成。VCL NAL单元与主图像或冗余编码图像的关联在第7.4.1.2.5分节中描述。
比特流中的第一访问单元从比特流的第一NAL单元开始。
在主编码图片的最后一个VCL NAL单元之后,下列任何NAL单元中的第一个指定新访问单元的开始:
用于检测主编码图像的第一个VCL NAL单元的约束在第7.4.1.2.4分节中指定。
7.4.1.2.4主编码图像第一个VCL单元的检测
该子子句指定对VCL NAL单元语法的约束,这些约束足以检测每个主编码图像的第一个VCL NAL单元,用于符合附件A中指定的一个或多个使用第2-9条规定的解码过程解码的配置文件的编码视频序列。
当前访问单元的主编码图像的任何编码片NAL单元或编码片数据分区A NAL单元应以下列一种或多种方式与先前访问单元的主编码图像的任何编码片NAL单元或编码片数据分区A NAL单元不同:
(注2-冗余编码图片中的一些VCL NAL单元或一些非VCL NAL单元(例如,访问单元分隔符NAL单元)也可用于检测访问单元之间的边界,因此可能有助于检测新的主编码图像的开始。
发布于 2013-11-03 13:46:54
您的解释是正确的,如果您想自己解析流,请查看这里
但是要以易于阅读和解析的格式(与任何文本解析器一起)快速提取流信息,可以使用ffprobe。
ffprobe -show_streams -count_frames -pretty filename您可以在输出中找到:
对于fps,正如我听说ff探针可能会报告fps的一些错误一样,尝试一个简单的ffmpeg -i命令。
ffmpeg -i filename 2>&1 | sed -n "s/.*, \(.*\) fps.*/\1/p"发布于 2013-11-06 17:10:30
NAL单元不一定与帧有1-1的关系.帧可以分成多个NAL单元。如果您想手动解析流,则需要处理每个类型,这些类型在下面的博客文章中定义得很好。如果流有一个SPS NAL数据包,它应该包含帧速率,但这不一定是实际的帧率,这正是容器所相信的。
当您还询问如何找到AU的实际启动时,如果它是“附件B”比特流,那么每个NALU将有一个启动代码0x000001或0x00000001。AVCC使用一个小的头来定义NALU的长度。
有关更多详细信息,请查看以下伟大的博客文章:szatmary.org
希望这能帮上忙!
https://stackoverflow.com/questions/19642736
复制相似问题