如何使用 ffmpeg/libavcodec/libstagefright [英] how to use ffmpeg/libavcodec/libstagefright
问题描述
我只是有一个关于如何使用 ffmpeg/libavcodec/libstagfright.cpp
的问题:我尝试 avcodec_open2(st->codec, codec)
当我有使用 ffmpeg 将 codec->id
设置为 CODEC_ID_H264,codec->name
为 libstagefright_h264
,这意味着我将打开AVCodec ff_libstagefright_h264_decoder
.
I just have a question about how to use ffmpeg/libavcodec/libstagfright.cpp
: I try to avcodec_open2(st->codec, codec)
when I have use ffmpeg to set codec->id
as CODEC_ID_H264,codec->name
as libstagefright_h264
,that means I will open
AVCodec ff_libstagefright_h264_decoder
.
但是当 Stagefright_init->OMXCodec::Create->configureCodec->;initOutputFormat(meta)
,这个过程就退出了!这是一个 bazinga !
but when Stagefright_init->OMXCodec::Create->configureCodec-> initOutputFormat(meta)
, the process just Quit ! It is a bazinga !
我知道meta是Metadata,它的数据来自codec->extradata
,这里的意思是sps和pps,对吗?
I knew that meta is Metadata, its data comes from codec->extradata
, and in here, it means sps and pps, am I right?
如何在 ffmpeg 中成功使用 libstagefright
?有人可以举个例子吗?
How can I use libstagefright
sucessfully in ffmpeg? Can somebody give me an example?
推荐答案
适用于ICS4.0.3,Moto XT910,FFmpeg 0.7
It works at ICS4.0.3 ,Moto XT910,FFmpeg 0.7
我使用 extradata 来存储 MediaFileName,然后从代码中获取元数据:
I use extradata for store MediaFileName,then get metadata from codes:
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
(Android 2.3和ICS有一些区别)
then you can OMX::create
(there are some difference for Android 2.3 and ICS)
这篇关于如何使用 ffmpeg/libavcodec/libstagefright的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!