Сложность конфигурации ffmpeg с помощью filter_complex и hls - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь настроить ffmpeg так, чтобы он записывал с микрофона и одновременно кодировал результаты в файл .fla c для последующей синхронизации с некоторым видео, которое я буду делать.

Микрофон подключен к Raspberry Pi (4B), и я в настоящее время пробую его с синим yeti mi c, но я думаю, что я могу сделать то же самое с подключенным Focusrite Scarlett 2i2. Однако я ломал голову над тем, как начать запись на сервере, и решил, что смогу сделать это из веб-браузера, если бы сделал простой nodejs сервер, который порождал ffmpeg как дочерний процесс.

Но потом меня вдохновили этот пример команды ffmpeg, который отображает (на моем рабочем столе с графическим интерфейсом) измеритель громкости

ffmpeg -hide_banner -i 'http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4' -filter_complex "showvolume=rate=25:f=0.95:o=v:m=p:dm=3:h=80:w=480:ds=log:s=2" -c:v libx264 -c:a aac -f mpegts - | ffplay -window_title "Peak Volume" -i -

Что если бы я мог передавать потоковое видео, созданное фильтром showvolume, в веб-браузер, который я использую для контролировать процесс ffmpeg (ПРИМЕЧАНИЕ. Я не хочу отправлять аудио с этим). Поэтому я попытался прочитать hls (поскольку управляющим устройством будет ipad - фактически, именно для этого я буду записывать видео), и предложил эту команду

ffmpeg -hide_banner -f alsa -ac 2 -ar 48k -i hw:CARD=Microphone -filter_complex "asplit=2[main][vol],[vol]showvolume=rate=25:f=0.95:o=v:m=p:dm=3:h=80:w=480:ds=log:s=2[vid]" -map [main] -c:a:0 flac recordings/session_$(date +%a_%d_%b_%Y___%H_%M_%S).flac -map [vid] -preset veryfast -g 25 -an -sc_threshold 0 -c:v:1 libx264 -b:v:1 2000k -maxrate:v:1 2200k -bufsize:v:3000k -f hls -hls_time 4 -hls_flags independent_segments delete_segments -strftime 1 -hls_segment_filename recordings/volume-%Y%m%d-%s.ts recordings/volume.m3u8

Проблема в том, что я Я нахожу документацию немного непрозрачной в отношении того, что происходит, когда я сгенерировал два потока - основной аудио- и видеопоток, и эта команда выдает как предупреждение, так и ошибку: -

Предупреждение: Guessed Channel Layout for Input Stream #0.0 : stereo

и ошибка

[NULL @ 0x1baa130] Unable to find a suitable output format for 'hls'
hls: Invalid argument

Я пытаюсь установить метки потоков [main] и [vol], когда я разделяю входящий звук на две части, а затем передаю [vol] через фильтр «showvolume» и в итоге получим stream [vid].

Я думаю, что мне нужно затем использовать -map, чтобы указать кодирование потока [main] до fla c и запись это в файл (файл существует после того, как я запустил команду, хотя они имеют нулевую длину), и используйте другую -map для перехода в раздел -f hls. Но я думаю, что у меня что-то не так на этом этапе.

Может кто-нибудь помочь мне правильно выполнить эту команду.

1 Ответ

0 голосов
/ 04 февраля 2020

-bufsize:v:3000k скорее всего опечатка, попробуйте -bufsize:v:1 3000k

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