[Libav-user] Change the default audio and video codec loaded by avformat_alloc_output_context2

Mythili Vishalini Anbazhagan manbazhagan27 at gmail.com
Wed Jun 9 07:46:12 EEST 2021


Hello,
Thank you so much for the information. I will try that and see.

I have found a workaround. Don't know if this is the correct way of doing
this though.
Created AVOutputFormat using  "AVOutputFormat* oformat = av_guess_format(
"flv", NULL, NULL)" and then manually edited the audio and video codec
fields in "oformat" before giving it to avformat_alloc_output_context2.
It works and I'm able to stream audio and video.

But I get the following warning:
"Failed to update header with correct duration.Failed to update header with
correct filesize."
In the command line, I rectified this error with the flag -flvflags
no_duration_filesize.
Could you tell me how to set this flag in the API ?

Thank you so much.

Best Regards,
Mythili Vishalini.


On Tue, Jun 8, 2021 at 11:19 PM Guangyu Sun via Libav-user <
libav-user at ffmpeg.org> wrote:

> This might be what you are looking for:
> AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c);
>
> Specify the correct codec when adding streams to the AVFormatContext
> created by avformat_alloc_output_context2().
>
> On Mon, Jun 7, 2021 at 11:39 PM Mythili Vishalini Anbazhagan <
> manbazhagan27 at gmail.com> wrote:
>
>> Hi,
>> I'm using ffmpeg libav library for live streaming via RTMP. I want to
>> know how to give my choice of audio and video codec for the particular
>> format in avformat_alloc_output_context2.
>>
>> In Detail:
>> The following command works perfectly for me.
>> ffmpeg -re -stream_loop -1 -i ~/Downloads/Microsoft_Surface.mp4 -vcodec
>> copy -c:a aac -b:a 160k -ar 44100 -strict -2 -f flv -flvflags
>> no_duration_filesize rtmp://192.168.1.7/live/surface
>> In the output, I have set my audio codec to be aac and copied the video
>> codec from input, which is H264.
>> I want to emulate this in the library, but don't know how to.
>> avformat_alloc_output_context2, with parameter format name as "flv", sets
>> oformat audio codec to ADPCM_SWF and video codec to FLV1. How to change
>> that to AAC and H264 ?
>>
>> So far, used av_guess_format to construct AVOutputFormat. It accepts only
>> format as input. And I don't know where to mention audio and video codec.
>> Also tried giving filename to avformat_alloc_output_context2 with the
>> rest of the parameters NULL. The file has AAC audio and H264 video. But
>> still ffmpeg loads oformat with ADPCM_SWF audio and FLV1 video codecs.
>>
>> Any hint/guidance is hugely appreciated. Thank you.
>>
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/libav-user
>>
>> To unsubscribe, visit link above, or email
>> libav-user-request at ffmpeg.org with subject "unsubscribe".
>>
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/libav-user
>
> To unsubscribe, visit link above, or email
> libav-user-request at ffmpeg.org with subject "unsubscribe".
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20210609/f3ab4f0b/attachment.htm>


More information about the Libav-user mailing list