ffmpeg 更简洁,无需隐藏进度条

ffmpeg 更简洁,无需隐藏进度条

如果不编辑和重新编译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

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

答案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

相关内容