【发布时间】:2023-03-04 01:15:01
【问题描述】:
我在 ffmpeg 中用 C++ 做一些工作已经有一段时间了。 大多数关于编码器设置的帮助都被解释为命令行选项。 例如(取自 ffmpeg 网站):
-mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -pass 1/2’
但要注意“-g 100”可能会导致某些解码器出现问题。尝试的事情:
’-bf 2’, ’-flags qprd’, ’-flags mv0’, ’- flags skiprd.
当您想在 C 中设置这些选项时,这并不是很有用。 例如,我设法在 AVCodecContext 结构中找到 int trellis;,这样就解决了一个问题,但是其他的呢?
有没有办法确定哪些命令行参数对应于哪些 AVCodecContext 成员? 我尝试像这样设置它们:
AVCodecContext* c;
av_opt_set_int(c->priv_data, "cmp", 2, 0);
但这会返回选项不存在的错误代码。 我也试过:
av_opt_set(c->priv_data, "cmp", "2", 0);
我仍然收到选项不存在的错误。
那么,有没有办法确定我应该设置哪些 AVCodecContext 成员相当于上面的 ffmpeg 命令行参数?
【问题讨论】: