2011-12-23 12 views
14

Mam tylko pytanie dotyczące sposobu korzystania ffmpeg/libavcodec/libstagfright.cpp: Staram się avcodec_open2(st->codec, codec) kiedy mam użycia ffmpeg aby ustawić codec->id jak CODEC_ID_H264,codec->name jak libstagefright_h264, co oznacza, że ​​otworzę AVCodec ff_libstagefright_h264_decoder.jak używać ffmpeg/libavcodec/libstagefright

, ale po Stagefright_init->OMXCodec::Create->configureCodec-> initOutputFormat(meta) proces się zakończy! To jest bazinga!

Wiedziałem, że meta to Metadane, jej dane pochodzą z codec->extradata, a tutaj oznacza to sps i pps, czy mam rację?

Jak mogę z powodzeniem użyć libstagefright w ffmpeg? Czy ktoś może mi podać przykład?

+0

może warto spojrzeć na ten projekt: http://gitorious.org/~ olvaffe/ffmpeg/ffmpeg-android, w szczególności na http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android/trees/android/doc –

+0

dziękuję bardzo! – 7bigtrees

Odpowiedz

1

Działa na ICS4.0.3 Moto XT910, FFmpeg 0.7

używam dodatkowymi danymi do sklepu MediaFileName, a następnie uzyskać metadane z kodami: 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); 

następnie można OMX :: create (istnieją pewne różnice dla Androida 2.3 i ICS)

1

Naprawdę pracuję nad dostarczaniem stagefright do mojej biblioteki ffmpeg na Androida. Wprowadziłem pewne zmiany do oryginalnej biblioteki libstagefright.cpp z ffmpeg/libav, ale nadal nie jest ona stabilna. Po ustabilizowaniu go utworzę żądanie ściągnięcia do zespołu ffmpeg/libav. Możesz rozejrzeć się po mojej gałęzi project: w "hwaccel".

Jest dostępny pod adresem AndroidFFmpeg/FFmpegLibrary/jni/ffstagefright.cpp.

Aby korzystać z tej biblioteki trzeba zadzwonić standardowych metod ffmpeg i otwarty insteed o standardowy kodek h264 kodek libstagefright_h264:

AVCodec *codec = avcodec_find_decoder_by_name("libstagefright_h264");