如何使用 ffmpeg/libavcodec/libstagefright [英] how to use ffmpeg/libavcodec/libstagefright

查看:20
本文介绍了如何使用 ffmpeg/libavcodec/libstagefright的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是有一个关于如何使用 ffmpeg/libavcodec/libstagfright.cpp 的问题:我尝试 avcodec_open2(st->codec, codec) 当我有使用 ffmpeg 将 codec->id 设置为 CODEC_ID_H264,codec->namelibstagefright_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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆