2011-12-23 7 views
14

Ho solo una domanda su come utilizzare ffmpeg/libavcodec/libstagfright.cpp: cerco di avcodec_open2(st->codec, codec) quando ho l'uso ffmpeg per impostare codec->id come CODEC_ID_H264,codec->name come libstagefright_h264, che significa che aprirò AVCodec ff_libstagefright_h264_decoder.come usare ffmpeg/libavcodec/libstagefright

ma quando Stagefright_init->OMXCodec::Create->configureCodec-> initOutputFormat(meta), il processo è appena uscito! È un bazinga!

Sapevo che meta è Metadata, i suoi dati provengono da codec->extradata, e qui, significa sps e pps, ho ragione?

Come posso utilizzare libstagefright con successo in ffmpeg? Qualcuno può darmi un esempio?

+0

si consiglia di dare un'occhiata a questo progetto: http://gitorious.org/~ olvaffe/ffmpeg/ffmpeg-android, in particolare su http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android/trees/android/doc –

+0

grazie mille! – 7bigtrees

+0

risposta

1

Funziona a ICS4.0.3, Moto XT910, FFmpeg 0.7

Io uso extradata per negozio MediaFileName, quindi ottenere i metadati dai codici: 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); 

poi si può OMX :: creare (ci sono alcune differenze per Android 2.3 e ICS)

1

In realtà sto lavorando per fornire stagefright alla mia libreria ffmpeg su Android. Ho apportato alcune modifiche all'originale libstagefright.cpp da ffmpeg/libav ma non è ancora stabile. Dopo averlo stabilizzato creerò una richiesta pull per il team ffmpeg/libav. Puoi dare un'occhiata al mio project: nel ramo "hwaccel".

È disponibile all'indirizzo directory AndroidFFmpeg/FFmpegLibrary/jni/ffstagefright.cpp.

Per usare questa libreria avete chiamare i metodi standard e ffmpeg insteed aperto di standard H264 codec libstagefright_h264 codec:

AVCodec *codec = avcodec_find_decoder_by_name("libstagefright_h264");