我尝试将"null"
过滤器替换为"scale=320x180"
文件中的doc/examples/transcoding.c
过滤器,但只会出现此错误消息:
[libx264 @ 03303ee0] Input picture width (640) is greater than stride (256)
Error occurred: Generic error in an external library
有什么问题?看看init_filters
发生在open_output_file
之后,编码器已经设置好,甚至不知道输出的分辨率。
如何正确地做到这一点?
看看这段代码,我不知道它正在谈论什么,有些人会不可思议地设置正确的解决方案:
/* In this example, we transcode to same properties (picture size,
* sample rate etc.). These properties can be changed for output
* streams easily using filters */
if (dec_ctx->codec_type == AVMEDIA_TYPE_VIDEO) {
enc_ctx->height = dec_ctx->height;
enc_ctx->width = dec_ctx->width;
在ffmpeg.c中找到了这个:
enc_ctx->width = av_buffersink_get_w(ost->filter->filter);
enc_ctx->height = av_buffersink_get_h(ost->filter->filter);