android - 在 android ffmpeg 库上设置 maxrate 的正确方法是什么?

标签 android ffmpeg libavcodec bitrate

我正在尝试使用 android 上的 ffmpeg 库控制最大比特率输出。

当我使用 ffmpeg 命令行时,输出比特率为 166.78 kbit/s

ffmpeg -y -i input.mp4 -c:v libx264 -preset medium -crf 29 -profile:v baseline -level: 3.0 -s 640x480 -strict experimental -c:a aac -ac 1 -ar 22050 -ab 48k -movflags faststart -maxrate 200k -bufsize 2000k output.mp4

但是当我尝试使用 android ffmpeg 库时,输出比特率为 2.12Mbit/s .

这些是我传递 avcodec_open2 的选项。
av_dict_set(&opts, "preset", "medium", 0);
av_dict_set(&opts, "crf", "29", 0);
av_dict_set(&opts, "profile", "baseline", 0);
av_dict_set(&opts, "level", "30", 0);
av_dict_set(&opts, "maxrate", "200k", 0);
av_dict_set(&opts, "minrate", "0", 0);
av_dict_set(&opts, "bufsize", "2000k", 0);

/* open the codec */
ret = avcodec_open2(ctx, codec, &opts);

这些是上下文编解码器中的设置:
ctx->bit_rate = 200000;
ctx->width    = 640;
ctx->height   = 480;

我必须设置其他设置吗?

我会很感激任何帮助。

谢谢!

编辑 1:

我删除了 maxrate 和 bufsize 中的 k,但输出比特率仍然不同。

例如:
ffmpeg -i input.mp4 -preset slow -c:v libx264 -maxrate 100k -bufsize 2000k -profile:v baseline -level 30 -s 480x360 -strict -2 -an output.mp4

生成比特率为 的输出147.24 kbit/s

从 android ffmpeg 库运行时,它会产生具有不同比特率 ( 99.45 kbit/s ) 的输出,同时视频质量也会降低。

使用 200000 和 350000 作为 maxrate 和 buffsize 生成了 157.49 kbit/s 的视频,但与命令行结果相比质量较差。
av_dict_set(&opts, "maxrate", "200000", 0);
av_dict_set(&opts, "bufsize", "350000", 0);

我也尝试过设置 vbv-maxrate 和 vbv-bufsize,但没有成功。

使用该库时,为了获得相同的比特率和质量,我缺少什么?

谢谢!

最佳答案

ffmpeg lib 不喜欢数字中的“k”。

将值更改为:

av_dict_set(&opts, "maxrate", "200000", 0);
av_dict_set(&opts, "minrate", "0", 0);
av_dict_set(&opts, "bufsize", "2000000", 0);

关于android - 在 android ffmpeg 库上设置 maxrate 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892151/

相关文章:

android - 第一次运行Flutter Project

FFmpeg 进行不必要的复用

ffmpeg - 错误 : 'libavutil/internal.h' file not found

java - FFmpeg - 过滤器覆盖有一个未连接的输出

android - ffmpeg - avcodec_decode_audio3 总是返回 0,在 android 上使用 aac 解码

opencv - 有什么办法用流中的伪像过滤图像?

android - 不同分辨率支持安卓

c# - 通过 GATT (UWP) 向 BLE 设备发送写入请求

android - build.phonegap.com 是否有任何开源替代品?

ffmpeg - Mac 上的 HTML5 视频 OGV 转换