省略 Powershell 中 FFMPEG 控制台输出中的特定警告



我的FFmpeg 控制台输出发出警告时遇到一些麻烦,希望有人能提供帮助。

我在利用分段的同时同时输出到多个文件,为了保持每个部分同步而没有音频漂移,我需要将所有内容设置为恒定的整数帧速率。这样做的问题是,当使用整数帧速率的 -framerate 时(以复制帧(,您会在控制台中不断收到警告"过去的持续时间 0.x 太大"垃圾邮件。

我已经在网上尝试了几乎所有针对此警告的"解决方案",但每个解决方案都有其缺点。我发现简单地使用 -loglevel 错误使控制台静音并使用 -stats 保持一定程度的冗长是迄今为止最好的解决方案,但随后我看不到我当前在控制台中写入的哪个部分非常烦人。没有日志级别选项可以专门静音警告,从我广泛的实验来看,没有其他方法可以有机地防止警告在我的用例中向控制台发送垃圾邮件。

在Powershell(我使用的是CMD(中,我希望我能捕获警告并使用某种过滤器从控制台输出中省略它。我尝试在我的命令结束时抛出这个:

| Where-Object {$_ -notcontains 'Past'}

但没有运气。我对 Powershell 缺乏经验,所以请原谅我,据我所知,你想要某种对象跟随"$_",但我不认为 FFmpeg 用标题或类似的东西分隔文本,所以我真的不确定放什么在那里。

无论如何,任何帮助将不胜感激。

完整命令(无控制台抑制(:

ffmpeg -y -hide_banner -thread_queue_size 9999 -indexmem 9999 -guess_layout_max 0 -f dshow -rtbufsize 2147.48M `
-i audio="Analog (1+2) (RME Fireface UC)" `
-thread_queue_size 9999 -indexmem 9999 -guess_layout_max 0 -f dshow -rtbufsize 2147.48M `
-i audio="ADAT (5+6) (RME Fireface UC)" `
-thread_queue_size 9999 -indexmem 9999 -guess_layout_max 0 -f dshow -video_size 3840x2160 -rtbufsize 2147.48M `
-framerate 60 -pixel_format nv12 -i video="Video (00 Pro Capture HDMI 4K+)":audio="ADAT (3+4) (RME Fireface UC)" `
-thread_queue_size 9999 -indexmem 9999 -guess_layout_max 0 -f dshow -rtbufsize 2147.48M `
-i audio="SPDIF/ADAT (1+2) (RME Fireface UC)" `
-thread_queue_size 9999 -indexmem 9999 -r 25 -f lavfi -rtbufsize 2147.48M -i color=c=black:s=50x50 `
-map 4,0 -map 0 -c:v libx264 -r 25 -rc-lookahead 50 -forced-idr 1 -sc_threshold 0 -flags +cgop `
-force_key_frames "expr:gte(t,n_forced*2)" -preset ultrafast -pix_fmt nv12 -b:v 16K -minrate 16K -maxrate 16K -bufsize 16k `
-c:a aac -ar 44100 -b:a 384k -ac 2 -vf "fps=25" -af "aresample=async=250" -vsync 1 -ss 00:00:01.479 `
-max_muxing_queue_size 9999 -f segment -segment_time 600 -segment_wrap 9 -reset_timestamps 1 `
-segment_format_options max_delay=0 C:UsersdjcimVideosPCTheirsTPC%02d.ts `
-map 4,1 -map 1 -c:v libx264 -r 25 -rc-lookahead 50 -forced-idr 1 -sc_threshold 0 -flags +cgop `
-force_key_frames "expr:gte(t,n_forced*2)" -preset ultrafast -pix_fmt nv12 -b:v 16K -minrate 16K -maxrate 16K -bufsize 16k `
-c:a aac -ar 44100 -b:a 384k -ac 2 -vf "fps=25" -af "aresample=async=250" -vsync 1 -ss 00:00:00.850 `
-max_muxing_queue_size 9999 -f segment -segment_time 600 -segment_wrap 9 -reset_timestamps 1 `
-segment_format_options max_delay=0 C:UsersdjcimVideosPCSoundboardSPC%02d.ts `
-map 2:0,2:1 -map 2:1 -c:v h264_nvenc -r 60 -rc-lookahead 120 -forced-idr 1 -strict_gop 1 -sc_threshold 0 -flags +cgop `
-force_key_frames "expr:gte(t,n_forced*2)" -preset: llhp -pix_fmt nv12 -b:v 250M -minrate 250M -maxrate 250M -bufsize 250M `
-c:a aac -ar 44100 -b:a 384k -ac 2 -af "atrim=0.086, asetpts=PTS-STARTPTS, aresample=async=250" -vsync 1 `
-max_muxing_queue_size 9999 -f segment -segment_time 600 -segment_wrap 9 -reset_timestamps 1 `
-segment_format_options max_delay=0 C:UsersdjcimVideosPCPCPC%02d.ts `
-map 4,3 -map 3 -c:v h264_nvenc -r 25 -rc-lookahead 50 -forced-idr 1 -strict_gop 1 -sc_threshold 0 -flags +cgop `
-force_key_frames "expr:gte(t,n_forced*2)" -preset: llhp -pix_fmt yuv420p -b:v 16K -minrate 16K -maxrate 16K -bufsize 16K `
-c:a aac -ar 44100 -b:a 384k -ac 2 -vf "fps=25" -af "pan=mono|c0=c0, adelay=120|120, aresample=async=250" -vsync 1 `
-ss 00:00:00.065 -max_muxing_queue_size 9999 -f segment -segment_time 600 -segment_wrap 9 -reset_timestamps 1 `
-segment_format_options max_delay=0 C:UsersdjcimVideosPCCameraCPC%02d.ts

正如 Gyan 在我最初问题的评论中所建议的那样 - 自 2018 年 7 月以来的 FFmpeg 构建将警告发送到比默认更高的日志级别。

更新后,我的控制台中不再发送警告消息。

最新更新