如果不编辑和重新编译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
答案1
ffmpeg -v quiet -stats -i in.mov out.mp4
不需要使用-hide_banner
标志。
答案2
将日志级别降低至warning
/24
但隐藏横幅并明确启用统计数据。
ffmpeg -hide_banner -v warning -stats -i in.mov out.mp4