Я действительно новичок в ffmpeg и у меня есть вопрос, где я не могу найти решение. Я действительно надеюсь, что кто-то из вас сможет мне помочь с этим.

На одном сервере я получаю поток 1080p, с помощью ffmpeg я создаю новый поток с несколькими битрейтами и разрешением и затем отправляю его в пункт назначения rtmp на этом сервере. Ниже CL команда, которую я использую в данный момент, и она работает.

ffmpeg -i - -copyts -muxdelay 0  -c:a libfaac -ab 128k 
-c:v libx264 -preset faster -profile:v main -level 3.1 -crf 20 -g 50 -b:v 1500k -s:v 1920x1080 -f flv rtmp://localhost/stream/output_stream 
-c:a libfaac -ab 64k -c:v libx264 -preset faster -profile:v main -level 3.1 -crf 23 -g 50 -b:v 1000k -s:v 1280x720 -f flv rtmp://localhost/stream/output_stream 
-c:a libfaac -ab 32k -c:v libx264 -preset faster -profile:v main -level 3.1 -crf 23 -g 50 -b:v 800k -s:v 960x540 -f flv rtmp://localhost/stream/output_stream

Теперь передо мной стоит задача отправить его на несколько серверов. Есть ли способ добавить несколько выходов?

В конце входящий поток 1080p должен получить несколько битрейтов и должен быть отправлен примерно на 10 разных RTMP-серверов.

Я действительно надеюсь, что кто-то может помочь мне с этим.

1 ответ1

0

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

Однако звук не занимает много битрейта по сравнению с видео, так что вы можете обойтись без нескольких битрейтов аудио, кодировать их только один раз и использовать один и тот же поток для всех выходов. Основной пример:

ffmpeg -i input -filter_complex \
"[0:v]split=2[s0][s1];[s0]scale=1280:-2[v0];[s1]scale=960:-2[v1]" \
-map "[v0]" -map "[v1]" -map 0:a -c:v libx264 -b:v:0 1000k -b:v:1 800k -c:a aac -f tee \
"[select=\'v:0,a\':f=flv:onfail=ignore]rtmp://localhost/stream/output_stream0|[select=\'v:1,a\':f=flv:onfail=ignore]rtmp://localhost/stream/output_stream1"

Не имеет значения, но вы используете libfaac, что означает, что ваш ffmpeg древний. Таким образом, вы действительно должны обновить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .