首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ffmpeg/libavcodec/libstagefright

如何使用ffmpeg/libavcodec/libstagefright
EN

Stack Overflow用户
提问于 2011-12-23 15:40:12
回答 2查看 8.2K关注 0票数 15

我只是有一个关于如何使用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?谁能给我举个例子?

EN

回答 2

Stack Overflow用户

发布于 2012-04-11 19:04:02

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

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

代码语言:javascript
复制
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有一些不同)

票数 1
EN

Stack Overflow用户

发布于 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编解码器:

代码语言:javascript
复制
AVCodec *codec = avcodec_find_decoder_by_name("libstagefright_h264");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8613436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档