сопоставление 3 или более выходов по команде ffmpeg

#python-3.x #ffmpeg

#python-3.x #ffmpeg

Вопрос:

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

команда для вывода 2-

 ffmpeg_stream = 'ffmpeg -thread_queue_size 1024 -f x11grab -draw_mouse 0 -s 1920x1080 -i :122 -f alsa -i pulse -ac 2 -c:a aac -b:a 64k -threads 0 -flags  global_header -c:v libx264 -pix_fmt yuv420p -s 1920x1080 -threads 0 -f tee -map 0:0 -map 1:0 "[f=flv]rtmps://live-api-s.facebook.com:443/rtmp/stream_key|[f=flv]rtmp://a.rtmp.youtube.com/live2/stream_key"'  

команда для 3 выходов-

 ffmpeg_stream = 'ffmpeg -thread_queue_size 1024 -f x11grab -draw_mouse 0 -s 1920x1080 -i :122 -f alsa -i pulse -ac 2 -c:a aac -b:a 64k -threads 0 -flags  global_header -c:v libx264 -pix_fmt yuv420p -s 1920x1080 -threads 0 -f tee -map 0:0 -map 1:0 -map 2:0 "[f=flv]rtmps://live-api-s.facebook.com:443/rtmp/stream_key|[f=flv]rtmp://a.rtmp.youtube.com/live2/stream_key|[f=flv]rtmp://play.stream.some_domain/stream/i48b-rdq0-jwme-2yj0"'  

ошибка-

 liveStreaming | Invalid input file index: 2.  

ошибка только с пользовательским URL-адресом rtmp-

 liveStreaming | [rtmp @ 0x55af7e7f8280] Server error: Already   publishing liveStreaming | [tee @ 0x55af7e12f540] Slave '[f=flv]rtmp://stream.domain/stream/i48b-rdq0-jwme-2yj0': error opening: Operation not permitted liveStreaming | [tee @ 0x55af7e12f540] Slave muxer #1 failed, aborting. liveStreaming | [flv @ 0x55af7e4d1880] Failed to update header with correct duration. liveStreaming | [flv @ 0x55af7e4d1880] Failed to update header with correct filesize. liveStreaming | Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted liveStreaming | Error initializing output stream 0:1 --  liveStreaming | [aac @ 0x55af7e1346c0] Qavg: -nan liveStreaming | [alsa @ 0x55af7e111dc0] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8) liveStreaming | Conversion failed!  

Спасибо

Ответ №1:

-map используется для добавления входных потоков для вывода. У вас есть только 2 входа. Для 3-го использования вывода tee вам просто нужно добавить его в выходной URL-адрес , как вы уже сделали. Удалять -map 2:0

ffmpeg_stream = 'ffmpeg -thread_queue_size 1024 -f x11grab -draw_mouse 0 -s 1920x1080 -i :122 -f alsa -i pulse -ac 2 -c:a aac -b:a 64k -threads 0 -flags global_header -c:v libx264 -pix_fmt yuv420p -s 1920x1080 -threads 0 -f tee -map 0:0 -map 1:0 "[f=flv]rtmps://live-api-s.facebook.com:443/rtmp/stream_key|[f=flv]rtmp://a.rtmp.youtube.com/live2/stream_key|[f=flv]rtmp://play.stream.some_domain/stream/i48b-rdq0-jwme-2yj0"'

Комментарии:

1. эй, я ценю твою помощь. Он работает со всеми URL-адресами rtmp, кроме пользовательского URL-адреса rtmp. Я подумал, что мне нужно добавить -flvflags no_duration_filesize , но я не смог заставить это работать с командой tee.

2. Вы должны добавить его в параметры для этого вывода: [f=flv:flvflags=no_duration_filesize]