как использовать ffmpeg / libavcodec / libstagefright - PullRequest
14 голосов
/ 23 декабря 2011

У меня просто вопрос о том, как использовать ffmpeg/libavcodec/libstagfright.cpp: я пытаюсь avcodec_open2(st->codec, codec), когда я использую ffmpeg, чтобы установить codec->id как CODEC_ID_H264,codec->name как libstagefright_h264, это означает, что я открою AVCodec ff_libstagefright_h264_decoder.

но когда Stagefright_init->OMXCodec::Create->configureCodec-> initOutputFormat(meta), процесс просто завершается!Это базинга!

Я знал, что мета - это метаданные, его данные взяты из codec->extradata, и здесь это означает sps и pps, я прав?

Как я могу успешно использовать libstagefright в ffmpeg?Может кто-нибудь привести пример?

Ответы [ 2 ]

1 голос
/ 21 сентября 2012

На самом деле я работаю над обеспечением stagefright для моей библиотеки ffmpeg на Android.Я сделал некоторые изменения в оригинальном libstagefright.cpp из ffmpeg / libav, но он все еще не стабилен.После стабилизации я создам пулл-запрос для команды ffmpeg / libav.Вы можете посмотреть на мой проект : в "hwaccel" ветке.

Он доступен на AndroidFFmpeg / FFmpegLibrary / jni / ffstagefright.cpp directory.

Чтобы использовать эту библиотеку, вы должны вызвать стандартные методы ffmpeg и открыть стандартный кодек h264 libstagefright_h264:

AVCodec *codec = avcodec_find_decoder_by_name("libstagefright_h264");
1 голос
/ 11 апреля 2012

Работает на ICS4.0.3, Moto XT910, FFmpeg 0.7

Я использую экстраданные для хранилища MediaFileName, затем получаю метаданные из кодов: 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...