我只是有一个关于如何使用ffmpeg/libavcodec/libstagfright.cpp的问题:当我使用ffmpeg将codec->id设置为CODEC_ID_H264,codec->name作为libstagefright_h264时,我尝试使用avcodec_open2(st->codec, codec),这意味着我将打开AVCodec ff_libstagefright_h264_decoder。
但是当使用Stagefright_init->OMXCodec::Create->configureCodec-> initOutputFormat(meta)时,进程就会退出!这是一个巴辛加!
我知道元数据是元数据,它的数据来自codec->extradata,在这里,它指的是sps和pps,对吗?
怎样才能在ffmpeg中成功地使用libstagefright?谁能给我举个例子?
发布于 2012-04-11 19:04:02
它适用于ICS4.0.3,Moto XT910,FFmpeg 0.7
我使用extradata存储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);然后你可以使用OMX::create(android2.3和ICS有一些不同)
发布于 2012-09-22 00:53:53
我实际上正在为我的Android上的ffmpeg库提供stagefright。我在ffmpeg/libav中对原始libstagefright.cpp做了一些修改,但它仍然不稳定。稳定后,我将为ffmpeg/libav团队创建拉取请求。您可以查看我的project:在"hwaccel“分支中。
它可以在AndroidFFmpeg/FFmpegLibrary/jni/ffstagefright.cpp目录中找到。
要使用这个库,您需要调用标准的libstagefright_h264方法并打开,而不是打开标准的ffmpeg编解码器:
AVCodec *codec = avcodec_find_decoder_by_name("libstagefright_h264");https://stackoverflow.com/questions/8613436
复制相似问题