如何使用ffmpeg/libavcodec/libstagefright

7bi*_*ees 14 android ffmpeg

我只是有一个关于如何使用的问题ffmpeg/libavcodec/libstagfright.cpp:我尝试avcodec_open2(st->codec, codec)使用ffmpeg设置codec->idCODEC_ID_H264,codec->nameas libstagefright_h264,这意味着我将打开AVCodec ff_libstagefright_h264_decoder.

但是什么时候Stagefright_init->OMXCodec::Create->configureCodec-> initOutputFormat(meta),这个过程就退出了!这是一个bazinga!

我知道元是元数据,它的数据来自codec->extradata,在这里,它意味着sps和pps,我是对的吗?

如何libstagefright在ffmpeg中成功使用?有人能举个例子吗?

7bi*_*ees 1

它适用于ICS4.0.3,Moto XT910,FFmpeg 0.7

我使用额外数据来存储 MediaFileName,然后从代码中获取元数据:

DataSource::RegisterDefaultSniffers();
sp<MediaSource> source ;
source = createSource((char*)MeidaFileName);
if(source==NULL){
    return -1 ;
}
meta = source->getFormat();
if(!meta->findData(kKeyAVCC, &type, &data, &data_size))
{
    return -1 ;
}
meta->setCString(kKeyMIMEType, MEDIA_MIMETYPE_VIDEO_AVC);
Run Code Online (Sandbox Code Playgroud)

那么就可以了OMX::create(Android 2.3和ICS有一些区别)