Ok.then why when I configure FFMPEG build to include mp4 demuxer,the after-config report doesn't show mp4?
I do set that name: *--enable-demuxer='mov,h264,mp4,ogg,matroska,wav,flac' * Also,right,I was confused with MPEG4 name. In fact I need h264 codec and my initial video was with MPEG4 .Now I tried to use a video encoded with h264 AVC. and dec = avcodec_find_decoder(dec_ctx->codec_id); //codec_id h264 returns a valid codec. But I have another problem, even though I call avformat_find_stream_info() I am getting both streams' codecpar uninitialized: AVCodecParameters* id0= pFormatCtx->streams[0]->codecpar; //here should be AAC props AVCodecParameters* id1 = pFormatCtx->streams[1]->codecpar; //here should be h264 props Why that happens? On Thu, Nov 9, 2017 at 7:56 PM, Dan Haddix <dan6...@hotmail.com> wrote: > You don't need to enable codecs explicitly when you build ffmpeg unless > you want to exclude everything else. Just do a build without any of the > enable/disable flags and it will include most of the codecs and muxers by > default. > > I think you're a little confused on the terminology. > > First off "mov" is part of the "mp4" demuxer. It's a slight variation of > mp4 tha was developed by Apple before mp4 existed. It's actually what the > mp4 specification was built from. > > Secondly the MPEG-4 spec actually contains two video codecs. MPEG-4 part 2 > is the older one that Divx and Xvid were based on. MPEG-4 part 10 is H.264 > (aka AVC) and is what most people think of these days when you say MPEG-4. > > In avlib the MP4 demuxer is "mp4". The MPEG-4 part 2 decoder is "mpeg4", > the H.264 decoder is "h264". > > A little trick for finding the right name. Look for the code file that > you're trying to use, like h264dec.c for H.264 decoder, then scroll all the > way to the bottom. There is a little constructor class and one of the > variables is the .name which is what you're looking for. > > Good luck, > Dan > > > On Nov 9, 2017 at 9:38 AM, <Michael IV <explomas...@gmail.com>> wrote: > > But now I see in vlc that the MPEG4 codec is actually named "mp4v" .So > that's the name I have to specificy in --enable-decoder when doing FFMPEG > config? > > > On Thu, Nov 9, 2017 at 7:26 PM, Michael IV <explomas...@gmail.com> wrote: > >> And testing the actual codecId of the video stream in the file I am also >> getting NULL for avcodec_find_decoder: >> >> ret = av_find_best_stream(pFormatCtx, AVMEDIA_TYPE_VIDEO, -1, >> -1, NULL, 0); >> st = pFormatCtx->streams[ret]; >> AVCodecContext *dec_ctx = NULL; >> AVCodec *dec = NULL; >> dec_ctx = st->codec; >> dec = avcodec_find_decoder(dec_ctx->codec_id); >> >> * where ec_ctx->codec_id == AV_CODEC_ID_MPEG4* >> >> On Thu, Nov 9, 2017 at 7:22 PM, Michael IV <explomas...@gmail.com> wrote: >> >>> Hi, thanks for the input. Now I am confused even more. All I need is to >>> start demuxing an mp4 file. Those codecs test above is not what I do. >>> I started to check those because I am getting into trouble in this part: >>> >>> pFormatCtx = avformat_alloc_context(); //ok >>> AVDictionary *d = NULL; >>> av_dict_set(&d, "protocol_whitelist","file", 0); //ok >>> int ret = avformat_open_input(&pFormatCtx, in_f_name , NULL, >>> &d); //ok >>> avformat_find_stream_info(pFormatCtx, NULL) ///also ok >>> >>> But once I get to access the codecpar I hit "access violation reading >>> location: >>> >>> *pFormatCtx->streams[i]->codecpar->codec_type==AVMEDIA_TYPE_VIDEO* >>> >>> Because my *codecpar *is not initialized. That's what I don't >>> understand here. >>> >>> >>> >>> >>> >>> On Nov 9, 2017 8:14 PM, "Carl Eugen Hoyos" <ceffm...@gmail.com> wrote: >>> >>>> Hi! >>>> >>>> > Am 09.11.2017 um 17:13 schrieb Michael IV <explomas...@gmail.com>: >>>> > >>>> > Hi All. What maybe a reason that avcodec_find_decoder returns NULL ? >>>> > >>>> > I enabled in my FFMPEG build MOV and h264 demuxer. Configure report >>>> clearly >>>> > states that. >>>> > >>>> > But doing this test: >>>> > >>>> > av_register_all(); >>>> > avcodec_register_all(); >>>> > avformat_network_init(); >>>> > AVCodec* h264codc = avcodec_find_decoder_by_name("h264"); >>>> >>>> This is supposed to work. >>>> >>>> >>>> > AVCodec* h264codc1 = avcodec_find_decoder_by_name("MOV"); >>>> >>>> This is not the name of any decoder, mov is a file format, you will >>>> find a demuxer (and a muxer) with that name (I think). >>>> >>>> > AVCodec* h264codc3 = avcodec_find_decoder_by_name("MPEG4"); >>>> >>>> There is codec "mpeg4" but that's not h264. >>>> >>>> > AVCodec* h264codc4 = avcodec_find_decoder_by_name("MP4"); >>>> >>>> See above for mov, although the same demuxer handles mov and mp4. >>>> >>>> > AVCodec* h264codc5 = avcodec_find_decoder(AV_CODEC_ID_MPEG4); >>>> >>>> Again, this codec exists but it's not h264. >>>> >>>> > Only h264codc returns a valid codec. >>>> >>>> >>>> > The only thing I didn't do during build config was not to enable >>>> libx264. >>>> >>>> This only means that you have no h264 encoder. >>>> >>>> > May this be the source of the problem? I didn't do that because I >>>> just need to demux mp4 movie and get its elementary stream. >>>> >>>> Then you don't care about a decoder, you only need a demuxer (and maybe >>>> a parser). >>>> >>>> Carl Eugen >>>> _______________________________________________ >>>> Libav-user mailing list >>>> Libav-user@ffmpeg.org >>>> http://ffmpeg.org/mailman/listinfo/libav-user >>>> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fffmpeg.org%2Fmailman%2Flistinfo%2Flibav-user&data=02%7C01%7Cdan6992%40hotmail.com%7Cfb6faa38f00548ee8fc108d52798a8a9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636458458994105842&sdata=o6jGGddtpys4%2Bnt6m8wvQx3RNDzVptAvSyQojdIlR5g%3D&reserved=0> >>>> >>> >> > > _______________________________________________ > Libav-user mailing list > Libav-user@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/libav-user > >
_______________________________________________ Libav-user mailing list Libav-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/libav-user