ffmpeg 无法将 JPG 转换为 YUV(nv12)

ffmpeg 无法将 JPG 转换为 YUV(nv12)

我有 ffmpeg=4.1.3,我想将常规 jpg 文件转换为 nv12 (yuv)。我使用了以下命令:

ffmpeg -y -i image.jpg -vf -pix_fmt nv12 out.yuv

并得到:Unable to find a suitable output format for 'nv12'

我确认格式存在:

    ffmpeg -pix_fmts|grep nv

ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7.3.0 (crosstool-NG 1.23.0.449-a04d0)
  configuration: --prefix=/home/shani/anaconda2 --cc=/home/conda/feedstock_root/build_artifacts/ffmpeg_1556785800657/_build_env/bin/x86_64-conda_cos6-linux-gnu-cc --disable-doc --disable-openssl --enable-avresample --enable-gnutls --enable-gpl --enable-hardcoded-tables --enable-libfreetype --enable-libopenh264 --enable-libx264 --enable-pic --enable-pthreads --enable-shared --enable-static --enable-version3 --enable-zlib --enable-libmp3lame
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
I.... = Supported Input  format for conversion
.O... = Supported Output format for conversion
IO... nv12                   3            12
IO... nv21                   3            12
..... nv16                   3            16
..... nv20le                 3            20
..... nv20be                 3            20

答案1

引入-vf一个过滤器,并期望以下参数,请参见此处过滤指南。在这种情况下,它会使用-pix_fmt,并留下nv12作为输出 URL。

ffmpeg 命令行中紧接着的-vf是 filtergraph 描述。此 filtergraph 可能包含多个链,每个链可能包含多个过滤器。

尝试:

ffmpeg -y -i image.jpg -pix_fmt nv12 out.yuv

如果您想要提供过滤器,则需要向中添加一个参数-vf,例如以下将分辨率降低到输入的 50%。

ffmpeg -y -i image.jpg -vf scale=iw/2:-1 -pix_fmt nv12 out.yuv

相关内容