gpt4 book ai didi

android - 为什么 AVCodecContext extradata 为 NULL?

转载 作者:行者123 更新时间:2023-12-04 23:09:27 25 4
gpt4 key购买 nike

我正在尝试解码 h264视频使用 ffmpegstagefright图书馆。我正在使用 this例子。

该示例显示如何解码 mp4文件,但我只想解码 h264视频。

这是我的一段代码..

    AVFormatSource::AVFormatSource(const char *videoPath) 
{
av_register_all();

mDataSource = avformat_alloc_context();
avformat_open_input(&mDataSource, videoPath, NULL, NULL);
for (int i = 0; i < mDataSource->nb_streams; i++)
{
if (mDataSource->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO)
{
mVideoIndex = i;
break;
}
}
mVideoTrack = mDataSource->streams[mVideoIndex]->codec;

size_t bufferSize = (mVideoTrack->width * mVideoTrack->height * 3) / 2;
mGroup.add_buffer(new MediaBuffer(bufferSize));
mFormat = new MetaData;

switch (mVideoTrack->codec_id == CODEC_ID_H264)
{
mConverter = av_bitstream_filter_init("h264_mp4toannexb");
mFormat->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_AVC);
if (mVideoTrack->extradata[0] == 1) //SIGSEGV Here
{
mFormat->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_AVC);
mFormat->setData(kKeyAVCC, kTypeAVCC, mVideoTrack->extradata,
mVideoTrack->extradata_size);
}
}

mFormat->setInt32(kKeyWidth, mVideoTrack->width);
mFormat->setInt32(kKeyHeight, mVideoTrack->height);
}
mVideoTrack->extradata一片空白。我做错了什么??我的问题是, mVideoTrack->extradata 中应该包含什么?对于 kKeyAVCC ??

请帮助我,我需要你的帮助。
提前致谢。

最佳答案

如果您的输入是原始 h.264 文件,它已经是附件 B 格式。所以你不需要做“h264_mp4toannexb”转换。此外,在附件 B 中,SPS/PPS 与第一个(或每个)IDR 帧一起发送。所以不需要额外的数据。在这里阅读更多:Possible Locations for Sequence/Picture Parameter Set(s) for H.264 Stream

关于android - 为什么 AVCodecContext extradata 为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22219370/

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