gpt4 book ai didi

ffmpeg - 如何从mp4中查找H264编解码器中的SPS和PPS字符串

转载 作者:行者123 更新时间:2023-12-02 13:11:56 24 4
gpt4 key购买 nike

众所周知,在 Smooth Stream 客户端 list 文件中,视频标签中包含“CodecPrivateData”属性。现在,经过初步调查,我发现该字符串是使用 SPS 和 PPS 形成的,它们本质上是 NAL 单元。

我正在寻找一种从视频 GOP 中提取该信息的方法,以便我可以使用相同的方法来创建 list 文件并手动替换编解码器私有(private)数据

基本上,我期待创建自定义应用程序以使用 ffmpeg 创建平滑的表示

最佳答案

请注意,SPS/PPS 与 mp4 文件中的视频轨道分开存储在全局 header 之一(全局 header 的 avcC 部分)中。

格式如下: 每个 ISO/IEC 14496-10 超过 8 个字节

                 = long unsigned offset + long ASCII text string 'avcC'
-> 1 byte version = 8-bit hex version (current = 1)
-> 1 byte H.264 profile = 8-bit unsigned stream profile
-> 1 byte H.264 compatible profiles = 8-bit hex flags
-> 1 byte H.264 level = 8-bit unsigned stream level
-> 1 1/2 nibble reserved = 6-bit unsigned value set to 63
-> 1/2 nibble NAL length = 2-bit length byte size type
- 1 byte = 0 ; 2 bytes = 1 ; 4 bytes = 3
-> 1 byte number of SPS = 8-bit unsigned total
-> 2+ bytes SPS length = short unsigned length
-> + SPS NAL unit = hexdump
-> 1 byte number of PPS = 8-bit unsigned total
-> 2+ bytes PPS length = short unsigned length
-> + PPS NAL unit = hexdump

如果您只想从单个.mp4中提取SPS/PPS,您可以使用十六进制编辑器并根据上面的MP4格式规范检查得到SPS/PPS(通过从末尾搜索查找“avcC”字符串)文件的内容);然后将 SPS/PPS 字节添加到 c 样式数组中供您使用。

否则您可以将 ffmpeg 与 h264bitstream 一起使用提取 SPS/PPS 的实用程序。首先在命令行运行ffmpeg提取h264流:

ffmpeg -i my_funny_video.mp4 -vcodec copy -vbsf h264_mp4toannexb -an my_funny_video.h264

然后从 h264bitstream 实用程序运行 h264_analyze:

h264_analyze my_funny_video.h264

这将对您的 SPS/PPS 和其他 NAL 进行详分割析。

关于ffmpeg - 如何从mp4中查找H264编解码器中的SPS和PPS字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17541153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com