bash:ffmpeg libx265 阻止输出

lin*_*ver 7 linux ffmpeg

我想使用新的编解码器 x265 (libx265) 来编码我的视频集。

为此,我在 linux 下创建了一个可爱的 bash 脚本,它通常运行良好!但有一点很奇怪:

我禁止ffmpeg的输出以我自己的方式回显。使用 x264(“旧”的)一切正常。但是一旦我使用 x265,我的终端上总是会得到这种输出:

x265 [info]: HEVC encoder version 1.7
x265 [info]: build info [Linux][GCC 5.1.0][64 bit] 8bpp
x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
x265 [info]: Main profile, Level-2.1 (Main tier)
x265 [info]: Thread pool created using 2 threads
x265 [info]: frame threads / pool features       : 1 / wpp(5 rows)
x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
x265 [info]: ME / range / subpel / merge         : hex / 57 / 2 / 2
x265 [info]: Keyframe min / max / scenecut       : 25 / 250 / 40
x265 [info]: Lookahead / bframes / badapt        : 20 / 4 / 2
x265 [info]: b-pyramid / weightp / weightb / refs: 1 / 1 / 0 / 3
x265 [info]: AQ: mode / str / qg-size / cu-tree  : 1 / 1.0 / 64 / 1
x265 [info]: Rate Control / qCompress            : CRF-28.0 / 0.60
x265 [info]: tools: rd=3 psy-rd=0.30 signhide tmvp strong-intra-smoothing
x265 [info]: tools: deblock sao
Run Code Online (Sandbox Code Playgroud)

这是我使用 ffmpeg 编码视频的方式:

ffmpeg -i /input/file -c:v libx265 -c:a copy -loglevel quiet /output/file.mp4 <>/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

我以为

<>/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

-loglevel quiet
Run Code Online (Sandbox Code Playgroud)

会这样做,但显然我错了。

我怎么解决这个问题?

谢谢你的帮助!

小智 11

看起来 ffmpeg 没有告诉 x265 编码器使用您告诉 ffmpeg 使用的日志级别。因此,如果您希望 ffmpeg 和 ffmpeg 中的 x265 编码器安静,则需要为它们设置日志级别选项。

如果您有一个如下所示的 ffmpeg 命令:

ffmpeg -loglevel error -stats -i "inputfile.xyz" -c:v libx265 -x265-params parameter1=value:parameter2=value outputfile.xyz
Run Code Online (Sandbox Code Playgroud)

您可以将 log-level=error 选项添加到 x265-params 列表中,如下所示:

ffmpeg -loglevel error -stats -i "inputfile.xyz" -c:v libx265 -x265-params log-level=error:parameter1=value:parameter2=value ....
Run Code Online (Sandbox Code Playgroud)