2011-12-23 8 views
14

を使用するには、どのように私はちょうどffmpeg/libavcodec/libstagfright.cppを使用する方法についての質問がある:私は AVCodec ff_libstagefright_h264_decoderを開きます。つまり、libstagefright_h264としてCODEC_ID_H264,codec->nameとしてcodec->idを設定するために使用ffmpegのを持っているとき、私はavcodec_open2(st->codec, codec)にしてみてください。のffmpeg/libavcodecの/ libstagefright

しかし、Stagefright_init->OMXCodec::Create->configureCodec-> initOutputFormat(meta)の場合、プロセスはただ終了します。それはbazingaです!

私はメタがメタデータであることを知りました。そのデータはcodec->extradataから来ており、ここではspsとppsを意味していますか?

ffmpegでlibstagefrightが正常に使用するにはどうすればよいですか?誰かが私に例を教えてもらえますか?

+0

あなたはこのプロジェクトを見てみたいことがあります。http://gitorious.org/~をolvaffe/ffmpeg/ffmpeg-android、特にhttp://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android/trees/android/doc –

+0

ありがとう! – 7bigtrees

答えて

1

それはICS4.0.3で働く、モトXT910、FFmpegの0.7 ​​

私は店MediaFileNameためextradataを使用し、その後、コードからメタデータを取得する: DataSource::RegisterDefaultSniffers();
sp 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は::(Androidのためのいくつかの違いがあります作成することができます2.3およびICS)

1

実際にImはAndroidの私のffmpegライブラリにstagefrightを提供することに取り組んでいます。私はffmpeg/libavからオリジナルのlibstagefright.cppにいくつかの変更を加えましたが、まだ安定していません。それを安定させた後、私はffmpeg/libavチームのプルリクエストを作成します。あなたは私のprojectを見て回ることができます:"hwaccel"ブランチです。

AndroidFFmpeg/FFmpegLibrary/jni/ffstagefright.cppディレクトリにあります。

あなたは、標準のffmpegの方法と標準H264コーデックlibstagefright_h264コーデックのオープンinsteed呼び出す必要があり、このライブラリを使用するには、次の

AVCodec *codec = avcodec_find_decoder_by_name("libstagefright_h264"); 
関連する問題