в ffmpeg 4.0.2 не хватает многих кодеков, что с этим делать? - PullRequest
0 голосов
/ 22 октября 2018

Я недавно собрал ffmpeg 4.0.2 в качестве разделяемых библиотек для включения в проект Android с помощью этого учебного руководства: введите описание ссылки здесь

сборка прошла успешно, но моим библиотекам не хватает нескольких кодеков, таких каккак msvideo1, xanwc4, ...

Я проверил файлы c в папке libavcodec, в папке ffmpeg4.0.2 не удалось найти много форматов кодеков.Например, папка libavcodec содержит файл с именем xan.c, который содержит функцию для xan, xanwc3, но не для xanwc4.Но в libvcodec / xxan.c найден кодек xanwc4, но все же avcodec_open2 () возвращает -22.avcodec_open2 () возвращает -22 для каждого кодека.

Может кто-нибудь помочь мне понять, как заставить мой .apk работать на каждом кодеке и форматах? Что делать с отсутствующими кодеками?

c-исходный код здесь:

const char *name;
int i,videostream;
name= (*env)->GetStringUTFChars(env, argv_,0);
AVFormatContext *pFormatctx=NULL;
if (avformat_open_input(&pFormatctx,name,NULL,NULL)!=0){
    return (*env)->NewStringUTF(env,"a");
}
if(pFormatctx==NULL){
    return (*env)->NewStringUTF(env,"b");
}
if(avformat_find_stream_info(pFormatctx,NULL)<0){
    return (*env)->NewStringUTF(env,"c");
}
av_dump_format(pFormatctx, 0, name, 0);
videostream=-1;
AVCodecContext *pCodecCtxOrig = NULL;
AVCodecContext *pCodecCtx = NULL;
for (i==0;i<pFormatctx->nb_streams;i++){
    if((pFormatctx->streams[i]->codecpar->codec_type)==AVMEDIA_TYPE_VIDEO){
        videostream=i;
        break;
    }
}
if(videostream==-1){
    return (*env)->NewStringUTF(env,"d");
}
pCodecCtxOrig=pFormatctx->streams[videostream]->codecpar;
AVCodec *pCodec = NULL;
pCodec=avcodec_find_decoder(pCodecCtxOrig->codec_id);
if(pCodec==NULL){
    return (*env)->NewStringUTF(env,"e");
}
pCodecCtx=avcodec_alloc_context3(pCodec);
if((avcodec_parameters_to_context(pCodecCtx,pCodecCtxOrig))!=0){
    return (*env)->NewStringUTF(env,"f");
}
if(avcodec_open2(pCodecCtx,pCodec,NULL)<0){
    return (*env)->NewStringUTF(env,"g");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...