On Mar 28, 2013, at 01:20 , Thomas Sharpless wrote:

> I know the interface between libavcodec and libx264 is such that you can pass 
> at least some of the native x264 option strings, such as preset names, 
> through the opts argument to avcodec_open2().  However it also appears that 
> this is not enough to put the codec into a usable state.  
> 
> Is it spelled out anywhere just what has to be set in the libavcodec 
> contexts, and what can be set up with x264 options?
> 
> Thanks
> 
> _______________________________________________
> Libav-user mailing list
> [email protected]
> http://ffmpeg.org/mailman/listinfo/libav-user



Hi Thomas and all,

I found that you need to run avformat_find_stream_info to completely set up the 
codec, unfortunately. 

If you work with known / self produced streams (as I do), you should know all 
settings, and you should be able to manually set all required settings.

Unfortunately I did not mange yet to get it to work reliably without 
avformat_find_stream_info, despite going through the avformat_find_stream_info 
code looking for clues. 

Please see my attached question posted here earlier (which also contains some 
av_dict_set() examples which might help you) which I think asks the same 
question as you do just in other words.


> From: Kalileo 
> Subject: avformat_open_input using custom AVDictionary to set video_size
> Date: January 24, 2013 04:35:58 GMT+07:00
> To: "ffmpeg libav-user" <[email protected]>
> 
> I'm producing MPEGTS streams (h264/aac) using ffmpeg, so I know exactly how 
> they are coded, and I could modify that if needed.
> 
> Now, when I receive them in my own code, I always have to run them through 
> avformat_open_input and avformat_find_stream_info to get the settings into 
> the codec context.
> 
> Because udp mpegts streams have no header, both avformat_open_input and 
> avformat_find_stream_info  sometimes have problems to get all settings 
> correctly.
> 
> However, all settings are known, and so I try to inform avformat_open_input 
> and avformat_find_stream_info  about them, using a AVDictionary.
> 
> However, despite setting the video_size to 720x576, I often get "unspecified 
> size". Other AVDictionary options such as "probesize" are honored though.
> 
> Ideally I want to skip the avformat_find_stream_info step completely and 
> preset all settings. But how to do that correctly?
> 
> Also sometimes avformat_open_input does not get it correctly that there is a 
> video and an audio stream.
> 
> I'm reading the stream though a memory buffer, and not directly from a file 
> or url. This is what I tried:
> 
> ======
> av_dict_set(&format_opts, "video_size", "720x576", 0);    <<== seems to be 
> ignored
> // av_dict_set(&format_opts, "pixel_format", 
> av_get_pix_fmt_name(ffmpeg::PIX_FMT_YUV420P), 0);
> av_dict_set(&format_opts, "pixel_format", "yuv420p", 0);
> av_dict_set(&format_opts, "sample_format", "fltp", 0);
> av_dict_set(&format_opts, "analyzeduration", "8000000", 0);   <<== honored
> av_dict_set(&format_opts, "probesize", "8000000", 0);    <<== honored
> av_dict_set(&format_opts, "channels", "2", 0);
> av_dict_set(&format_opts, "sample_rate", "48000", 0);
> av_dict_set(&format_opts, "seekable", "0", 0);
> ...
> err = avformat_open_input(&pFormatCtx, "", inputFmt, &format_opts);
> 
> => sometimes sees one stream only
> 
> av_dict_set(&format_opts, "video_size", "720x576", 0);   <<== seems to be 
> ignored
> ...
> err = avformat_find_stream_info(pFormatCtx, &format_opts);
> 
> 
> av_dump_format(pFormatCtx, 0, "Memory Buffer", false);
> 
> => often says "unspecified size"
> ======
> 
> I'm using the very latest ffmpeg 1.0.3 from 2 days ago.
> 
> 
> My Questions are:
> 
> How do I pass the video size to avformat_open_input and 
> avformat_find_stream_info so that it is taken?
> 
> Which settings do i have to set to set (and how) to avoid the need for 
> avformat_find_stream_info?
> 
> How do i tell avformat_open_input  that there is a video stream and an audio 
> stream, or help it to find them (possible a change in the encoding 
> parameters)?
> 
> 
> Thanks for any hints or help!
> 
> Regards,
> Kalileo
> 
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to