【问题标题】:ffmpeg won't recognize x265 options [closed]ffmpeg 无法识别 x265 选项 [关闭]
【发布时间】:2017-01-31 04:27:37
【问题描述】:

我正在尝试使用 ffmpeg 的内置 x265 库通过 h.265codec 处理 .VOB 文件。

我从 ffmpeg 文档中了解到的是:

-c:v libx265 告诉 ffmpeg 对视频流使用 h.265 编解码器

-x265-params 将选项传递给x265 编码器而不是ffmpeg

但无论何时尝试运行该命令,ffmpeg 似乎都无法识别/将选项传递给 x265。

它给出了错误

Unrecognized option '-y4m'.
Error splitting the argument list: Option not found

这是为什么?

这是命令(编辑间距):

C:\ffmpeg (20170123-e371f03-win64-static)\bin> 
   ffmpeg -i concat:'input1.VOB'\'input.VOB'
   -map 0:v -map 0:a -r 24000/1001 -f yuv4mpegpipe 
   -c:v libx265 -x265-params 
   --y4m --fps 24000/1001 -p veryslow --open-gop --bframes 16 
   --b-p yramid --bitrate 2500 --rect --amp --aq-mode 3 --no-sao --qcomp 0.75 
   --no-strong -intra-smoothing --psy-rd 1.6 --psy-rdoq 5.0 --rdoq-level 1 
   --tu-inter-depth 4 --tu-intra-depth 4 --ctu 32 --max-tu-size 16 --pass 1 
   --slow-firstpass --stats v. stats --sar 1 --range full 'E:\output.hevc'




ffmpeg version N-83195-ge371f03 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --e
nable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --
enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv
--enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-li
bfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug -
-enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enabl
e-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-li
bsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolam
e --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx
 --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable
-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --ena
ble-zlib
  libavutil      55. 44.100 / 55. 44.100
  libavcodec     57. 75.100 / 57. 75.100
  libavformat    57. 63.100 / 57. 63.100
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 69.100 /  6. 69.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
Unrecognized option '-y4m'.
Error splitting the argument list: Option not found

【问题讨论】:

  • 用单破折号试试?

标签: encoding ffmpeg h.265 vob


【解决方案1】:

这不是正确的语法。使用

-x265-params "y4m=1:fps=24000/1001:p=veryslow:...."

【讨论】:

  • 感谢您的帮助!不过还是有一些错误,不知道为什么
  • 确保 所有 选项的格式为 key=value,如果它是布尔选项,则值设置为 1
  • 代码现在运行了,但是 ffmpeg 说 "y4m","D" 和 "p" 是未知选项,猜测管道错误还是什么?哦,很抱歉错过了你的最后一条评论哈哈,但是“y4m=1”“D=10”和“p=veryslow”或者“p=8”会错吗?
  • 我在读出的x265 --help 中没有看到y4m,所以跳过它。
【解决方案2】:

"--y4m" 不是 x265 的参数。首先,它不应该在那里。它是进入 yuv4mpegpipe 的输出容器。在您的语法中,错误在于您的编解码器。 x265 不知道 yuv4mpegpipe 是什么...

ffmpeg -i concat:'input1.VOB'\'input.VOB'
-map 0:v -map 0:a -r 24000/1001 -f yuv4mpegpipe 
   -c:v libx265(remove this)-x265-params(remove this)and change it to this "yuv4" -o "input1.VOB.output.y4m" 

擦除--y4m后写这个b4 x265-params

ffmpeg.exe -i "input1.VOB.output.y4m"<<-this is the output file that went into the yuv4mpegpipe that you want converted to HEVC)(y4m is like mp4 mkv avi mov) --c:v libx265 --x265-params -->>> --y4m --fps 24000/1001 -p veryslow --open-gop --bframes 16 
   --b-pyramid --bitrate 2500 --rect --amp --aq-mode 3 --no-sao --qcomp 0.75 
   --no-strong-intra-smoothing --psy-rd 1.6 --psy-rdoq 5.0 --rdoq-level 1 
   --tu-inter-depth 4 --tu-intra-depth 4 --ctu 32 --max-tu-size 16 --pass 1 
   --slow-firstpass --stats v. stats --sar 1 --range full 'E:\output.hevc'

如果我要写这个,它是这样的:

ffmpeg.exe -i concat:'input1.VOB'\'input.VOB' --map 0,1 --c:v yuv4 --s 3840x2160 --r 24000/1001 --f yuv4mpegpipe  --pix-fmt yuv444p16le -o "output-yuv444p16le.y4m"

ffmpeg.exe -i "yuv444p16le.y4m" --fps 24000/1001 --p veryslow --c:v libx265 --x265-params --open-gop --bframes 16 --b-pyramid --bitrate 2500 --rect --amp  --aq-mode 3 --no-sao --qcomp 0.75 --no-strong-intra-smoothing --psy-rd 1.6 --psy-rdoq 5.0 --rdoq-level 1 --tu-inter-depth 4 --tu-intra-depth 4 --ctu 32 --max-tu-size 16 --pass 1 --slow-firstpass --stats v. stats --sar 1 --range full -o E:\output_yuv444p16le.hevc'

【讨论】:

  • 几个问题:1) ffmpeg 使用-,而不是-- 作为选项前缀,例如-map,而不是--map。 2) 它不使用-o 来指示输出。 3) 没有名为 yuv4 的编码器。 4) 有几个选项不正确。例如--p 应该是-preset。 5)-x265-params 接受冒号分隔的选项列表,如 Mulvya 的回答所示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多