ffmpeg 更简洁,不隐藏进度条

Cam*_*une 5 ffmpeg stderr pipe buffer progress-bar

如果不从源代码进行编辑和重新编译ffmpeg,如何隐藏开始编码时打印的许多行中的一些,而不隐藏编码每秒更新一次的进度条?

\n

进度条:
\nframe=14759 fps=3226 \xe2\x80\xa6 bitrate=8509.2kbits/s speed= 108x

\n

典型命令:
\nffmpeg -hide_banner in.mov out.mp4

\n

典型噪音:十几行或更多行,例如

\n
  Duration: 00:59:19.45, start: 0.257200, bitrate: 9623 kb/s\n    Stream #0:0[0x1bf]: Data: dvd_nav_packet\n    Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, smpte170m, bottom first), 720x480 [SAR 8:9 DAR 4:3], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc\n    Stream #0:2[0xa0]: Audio: pcm_dvd, 48000 Hz, stereo, s16, 1536 kb/s\nStream mapping:\n  Stream #0:1 -> #0:0 (copy)\n  Stream #0:2 -> #0:1 (pcm_dvd (native) -> ac3 (native))\n
Run Code Online (Sandbox Code Playgroud)\n

这些尝试隐藏Stream,但也隐藏进度条(因为它永远不会到达egrep,因为\\r而不是\\n?):

\n

stdbuf -i0 -o0 -e0 ( ffmpeg \xe2\x80\xa6 2>&1 ) | grep -v Stream

\n

unbuffer ffmpeg \xe2\x80\xa6 | unbuffer grep -v Stream

\n

用本质上无缓冲的东西替换 grep ?
\nsed -u /Stream/d也隐藏进度条。

\n

相关:https ://stackoverflow.com/questions/3465619/how-to-make-output-of-any-shell-command-unbuffered

\n

真正复杂的可能方法:https://unix.stackexchange.com/questions/330636/how-to-grep-in-real-time-an-output-containing-a-progress-bar

\n

小智 7

ffmpeg -v quiet -stats -i in.mov out.mp4
Run Code Online (Sandbox Code Playgroud)

无需使用-hide_banner标志。


Gya*_*yan 5

将日志级别降低到warning/24但隐藏横幅并明确启用统计信息。

ffmpeg -hide_banner -v warning -stats -i in.mov out.mp4
Run Code Online (Sandbox Code Playgroud)