如果不从源代码编辑和重新编译ffmpeg
,如何隐藏它在开始编码时打印的许多行中的一些,而不隐藏在编码时每隔一秒左右更新的进度条?
进度条:
frame=14759 fps=3226 … bitrate=8509.2kbits/s speed= 108x
典型命令:
ffmpeg -hide_banner in.mov out.mp4
典型噪音:十几行或更多行
Duration: 00:59:19.45, start: 0.257200, bitrate: 9623 kb/s
Stream #0:0[0x1bf]: Data: dvd_nav_packet
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
Stream #0:2[0xa0]: Audio: pcm_dvd, 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:2 -> #0:1 (pcm_dvd (native) -> ac3 (native))
这些尝试隐藏Stream
,但也隐藏了进度条(因为它永远不会到达egrep
,因为\r
而不是\n
?):
stdbuf -i0 -o0 -e0 ( ffmpeg … 2>&1 ) | grep -v Stream
unbuffer ffmpeg … | unbuffer grep -v Stream
用本质上无缓冲的东西替换 grep?
sed -u /Stream/d
也隐藏了进度条。
相关:https ://stackoverflow.com/questions/3465619/how-to-make-output-of-any-shell-command-unbuffered
将日志级别降低到
warning
/24
但隐藏横幅并明确启用统计信息。无需使用
-hide_banner
标志。