gpt4 book ai didi

video - 如何用SPS和PPS数据填充AVCodecContext的 'extradata'字段?

转载 作者:行者123 更新时间:2023-11-28 21:41:31 24 4
gpt4 key购买 nike

问题来了:用ffmpeg解码H264码流时,我可以得到SPS和PPS的原始数据,但不知道如何将它们填充到extradataAVCodecContext 的字段。没有 extradata,我无法正确解码帧。每次调用 avcodec_decodec_video2 时,返回值为正,但 got_picture 标志始终为 0

我正在处理的流看起来像这样:

[0x67]...[0x68]...[0x61]...[0x61]...  .......  [0x61]...[0x67]...[0x68]...  ......

最佳答案

您提到的数据是一个字节流,其中包含用于 SPS 和 PPS 的 NAL 单元。 extradata 又需要一个指向 AVC 解码器配置记录的指针,这是您具有额外格式的数据。

有关详细信息,请参阅 MPEG-4 第 15 部分“高级视频编码 (AVC) 文件格式”第 5.2.4.1 节。

5.2.4.1.1 Syntax 

aligned(8) class AVCDecoderConfigurationRecord {
unsigned int(8) configurationVersion = 1;
unsigned int(8) AVCProfileIndication;
unsigned int(8) profile_compatibility;
unsigned int(8) AVCLevelIndication;
bit(6) reserved = ‘111111’b;
unsigned int(2) lengthSizeMinusOne;
bit(3) reserved = ‘111’b;
unsigned int(5) numOfSequenceParameterSets;
for (i=0; i< numOfSequenceParameterSets; i++) {
unsigned int(16) sequenceParameterSetLength ;
bit(8*sequenceParameterSetLength) sequenceParameterSetNALUnit;
}
unsigned int(8) numOfPictureParameterSets;
for (i=0; i< numOfPictureParameterSets; i++) {
unsigned int(16) pictureParameterSetLength;
bit(8*pictureParameterSetLength) pictureParameterSetNALUnit;
}
}

关于video - 如何用SPS和PPS数据填充AVCodecContext的 'extradata'字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29790334/

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