#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]