[Libav-user] Adding AMR frames to audio stream of video file
Talgorn François-Xavier
fxtalgorn at yahoo.fr
Wed Jul 1 20:57:32 CEST 2015
Hi,
I don't know about AMR codec but bitrate definitely impacts on final quality.
Try to increase bitrate value: I had same poor quality problems with MPEG4 encoding until I set the bitrate to width * height * 4.
Keep in mind that poor quality might comes from a wide bunch of parameters used to initialize the codec.
As for example, this is how I initialize an MPEG4 codec (A]), for clarity, in_ctx is initialized via the code in (B])
Concerning the delay issue: I also faced such a problem. I solved it using av_packet_rescale_ts() which relies on time_base, instead of setting timestamps myself manually.
I hope this comments will help put you on the road to success :-)
Good luck.
A]
//codec found, now we param it
o_codec_ctx->codec_id=AV_CODEC_ID_MPEG4;
o_codec_ctx->bit_rate=in_ctx->picture_width * in_ctx->picture_height * 4;
o_codec_ctx->width=in_ctx->format_ctx->streams[in_ctx->video_stream_idx]->codec->width;
o_codec_ctx->height=in_ctx->format_ctx->streams[in_ctx->video_stream_idx]->codec->height;
o_codec_ctx->time_base = in_ctx->format_ctx->streams[in_ctx->video_stream_idx]->codec->time_base;
o_codec_ctx->ticks_per_frame = in_ctx->format_ctx->streams[in_ctx->video_stream_idx]->codec->ticks_per_frame;
o_codec_ctx->sample_aspect_ratio = in_ctx->format_ctx->streams[in_ctx->video_stream_idx]->codec->sample_aspect_ratio;
o_codec_ctx->gop_size=in_ctx->format_ctx->streams[in_ctx->video_stream_idx]->codec->gop_size;
o_codec_ctx->pix_fmt=AV_PIX_FMT_YUV420P;
B]
// register all formats and codecs
av_register_all();
avcodec_register_all();
// open input file, and allocate format context
if (avformat_open_input(&in_fmt_ctx, filename, NULL, NULL) < 0)
{
fprintf(stderr, "Could not open source file %s\n", filename);
exit(1);
}
// retrieve stream information
if (avformat_find_stream_info(in_fmt_ctx, NULL) < 0)
{
fprintf(stderr, "Could not find stream information\n");
exit(1);
}
if (open_codec_context(&video_stream_idx, in_fmt_ctx, AVMEDIA_TYPE_VIDEO, filename) >= 0)
{
video_stream = in_fmt_ctx->streams[video_stream_idx];
video_dec_ctx = video_stream->codec;
}
if (open_codec_context(&audio_stream_idx, in_fmt_ctx, AVMEDIA_TYPE_AUDIO, filename) >= 0) {
audio_stream = in_fmt_ctx->streams[audio_stream_idx];
audio_dec_ctx = audio_stream->codec;
}
if (!video_stream) {
fprintf(stderr, "Could not find video stream in the input, aborting\n");
avformat_close_input(&in_fmt_ctx);
exit(0);
}
in_video_ctx->format_ctx=in_fmt_ctx;
in_video_ctx->filename=filename;
in_video_ctx->codec_name=(char *) in_fmt_ctx->streams[video_stream_idx]->codec->codec->long_name;
in_video_ctx->video_stream_idx=video_stream_idx;
in_video_ctx->audio_stream_idx=audio_stream_idx;
in_video_ctx->picture_width=in_fmt_ctx->streams[video_stream_idx]->codec->width;
in_video_ctx->picture_height=in_fmt_ctx->streams[video_stream_idx]->codec->height;
in_video_ctx->nb_streams=in_fmt_ctx->nb_streams;
Le 1 juil. 2015 à 10:40, adev dev <androiddevmar11 at gmail.com> a écrit :
> I am compressing movies from bitmaps and audio files. With AAC files it is working correctly. But when I have AMR_WB files sound is corrupted. I can recognise correct words in video file but it is delayed and with very bad quality.
>
> My AMR files are recorded with parameters:
> - sampling rate: 16000,
> - bitrate: 23000.
>
> I am setting this parameters in audio stream which is added to video. Sample format is set to AV_SAMPLE_FMT_FLT. When using other formats app crashes with "Unsupported sample format".
>
> What needs to be done to correctly add AMR stream to video file? Do I have to reencode it to AAC and add as AAC audio stream?? Thank you for all hints.
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20150701/13862752/attachment.html>
More information about the Libav-user
mailing list