Пропустить специальное предупреждение от вывода FFMPEG Console в Powershell - PullRequest
0 голосов
/ 06 сентября 2018

возникли некоторые проблемы с предупреждением о спаме на моей консоли FFmpeg, в надежде, что кто-то может помочь.

Я вывожу в несколько файлов одновременно, используя сегментацию, чтобы синхронизировать каждую часть без дрейфа звука, мне нужно установить постоянную целочисленную частоту кадров. Проблема с этим заключается в том, что при использовании -framerate с целочисленной частотой кадров (для дублирования кадров) вы получаете предупреждение «Past duration 0.x too large», постоянно спамящееся в вашей консоли.

Я пробовал практически каждое «решение» этого предупреждения в Интернете, но у каждого есть свои недостатки. Я обнаружил, что простое отключение консоли с ошибкой -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 голосов
/ 13 сентября 2018

Как предложил Гьян в комментариях к моему первоначальному вопросу - сборки FFmpeg с июля 2018 года отправляют предупреждение на более высокий уровень логирования, чем по умолчанию.

После обновления предупреждение больше не спамится в моей консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...