ffmpeg
및 stagefright
라이브러리를 사용하여 h264
비디오를 디코딩하려고합니다. 나는 this 예제를 사용하고 있습니다.왜 AVCodecContext extradata가 NULL입니까?
이 예제는 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
은 NULL입니다. 내가 뭘 잘못하고있어 ?? 내 질문은 에 대해 mVideoTrack->extradata
에 있어야하는 내용입니다. kKeyAVCC ??
제발 도와주세요, 당신의 도움이 필요합니다. 미리 감사드립니다.
여기에서 필요한 모든 정보를 찾을 수 있습니다. http://aviadr1.blogspot.com/2010/05/h264-extradata-partially-explained-for.html –