On Jul 23, 2014, at 2:19 AM, wm4 <[email protected]>
 wrote:

> On Tue, 22 Jul 2014 09:21:13 +0000
> Ahsan Saba <[email protected]> wrote:
> 
>> Hi, 
>> 
>> I just started using libavformat and I am trying to receive an HLS stream. I 
>> don't want to decode the stream, I will only be looking at duration and 
>> timestamps of select segments to analyse the video segments. 
>> 
>> The problem is that I want libavformat to parse the m3u8 file and give me 
>> all the different variants and segments. So I use the following command to 
>> open the m3u8 link which is saved in src_url (from ffmpeg example codes) 
>> 
>>    if (avformat_open_input(&fmt_ctx, src_url, NULL, NULL) < 0) {
>>        fprintf(stderr, "Could not open source file %s\n", src_filename);
>>        exit(1);
>>    }
>> 
>> 
>> It turns out that this is what happens : main -> avformat_open_input -> 
>> hls_read_header -> avformat_find_stream_info and avformat_find_stream_info 
>> fails for the very first ts segment it tries. My understanding is that 
>> avformat_find_stream_info tries to decode part of the ts segment and fails 
>> because I am compiling without libx264 (my configure command is given at the 
>> end), is that right? 
> 
> libx264 doesn't do decoding...
> 
>> Is there a way that I can stop libavformat from actually trying to download 
>> and read the ts segments. I want the library to parse m3u8 and give me all 
>> the variant segments, then I want my application to decide which segments to 
>> download and demux (not decode). I would think there is a flag somewhere, 
>> but I can't seem to figure it out. Is this even possible to do? I have seen 
>> code that demuxes mov to extract only timestamps without decoding (of course 
>> that was not HLS), but I am stuck with the m3u8/mpegts combination. 
> 
> libavformat will read some data at start to analyze the codec
> parameters etc., and I don't think you can prevent this. Maybe you
> could just not call avformat_find_stream_info(), but I don't know if
> this is supported in any reasonable way.
> 
> If you don't want it to read the ts fragments, then what do you want?
> You could just parse the m3u8 file yourself, it's a relatively simple
> format.
> _______________________________________________
> Libav-user mailing list
> [email protected]
> http://ffmpeg.org/mailman/listinfo/libav-user

Hi, 

Yes, my mistake about libx264. It turns out that avformat_find_stream_info() 
starts working if I add --enable-decoder=h264 and --enable-decoder=aac to my 
configuration. 

I do want to download and demux the fragments, but not all of them. I was able 
to do that by setting discard flag for the AVStreams  to AVDISCARD_ALL for the 
streams I don't want.  It all seems so simple now.

I don't mind enabling those decoders and everything so far seems to work. 
Thanks a lot for your help :) 

Regards, 
Saba





_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to