FFmpeg:无法打开libx265编码器。初始化输出流0:0时出错--在为输出流#0:0打开编码器时发生错误

7

非常抱歉我的英语不好。我正在尝试使用ffmpeg将一些图像转换为heic格式。大部分情况下都成功了,但是一些较大的JPEG文件(似乎只有JPEG,PNG则可以)就无法转换。

我该如何改进我的命令以兼容所有图像,这样我就可以自动转换它们呢?

➜  ~ ffmpeg -i sample.jpg -crf 12 -preset placebo -pix_fmt yuv420p -f hevc bitstream.265
ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers
  built with Apple LLVM version 9.1.0 (clang-902.0.39.1)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
  libpostproc    55.  1.100 / 55.  1.100
Input #0, image2, from 'sample.jpg':
  Duration: 00:00:00.04, start: 0.000000, bitrate: 5226869 kb/s
    Stream #0:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 13333x4200, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> hevc (libx265))
Press [q] to stop, [?] for help
[swscaler @ 0x7fd2e3006000] deprecated pixel format used, make sure you did set range correctly
x265 [info]: HEVC encoder version 2.7
x265 [info]: build info [Mac OS X][clang 9.0.0][64 bit] 8bit+10bit+12bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x265 [error]: Picture width must be an integer multiple of the specified chroma subsampling
[libx265 @ 0x7fd2e2802a00] Cannot open libx265 encoder.
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

相关:https://askubuntu.com/a/1108325/17060 - michael
1个回答

6
正如所说,图片宽度必须是指定色度子采样的整数倍。对于yuv420p而言,这个倍数是2。
你可以删除一列,并且如果需要的话,可以删除一行。
ffmpeg -i sample.jpg -vf crop='iw-mod(iw,2)':'ih-mod(ih,2)' -crf 12 -preset placebo -pix_fmt yuv420p -f hevc bitstream.265

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接