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

时间:2018-09-06 00:03:56

标签: powershell filter ffmpeg warnings

警告我的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:\Users\djcim\Videos\PC\Theirs\TPC%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:\Users\djcim\Videos\PC\Soundboard\SPC%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:\Users\djcim\Videos\PC\PC\PC%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:\Users\djcim\Videos\PC\Camera\CPC%02d.ts

1 个答案:

答案 0 :(得分:0)

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

更新后,警告消息不再在我的控制台中发送垃圾邮件。