Ffmpeg стрим из зацикленного видео и аудио на youtube(rtmp)?
Здравствуйте! Как пустить поток на youtube, имея при этом видео-файл длительностью 3 секунды и mp3 аудио? Я знаю, как пускать поток просто по видео-файлу со звуком, ну и с веб-камеры, но тут бессилен. Методом тыка, я понял - чтобы поток шел не останавливаясь, видео или картинку необходимо зациклить. Я в курсе про stream_loop -1, однако при этом выходит ошибка "Operation not permited", после этого я из своего mp4 сделал ts и попробовал пустить поток(также со stream_loop), ошибки этой не было и ffmpeg пустил поток, только вот youtube его не подхватывал - "трансляция запускается".
В общем, есть mp4-файл и mp3, необходимо бесконечно зациклить видео и пустить mp3, потом отправить на rtmp:youtube.
Помогите, пожалуйста
Разобрался на половину - поток проходит, видно картинку и слышно аудио, но не долго - где-то секунду, дальше просто крутится загрузка на плеере и всё.
Максимально упростил:
ffmpeg -stream_loop -1 -i video.gif -i audio.mp3 -c:v libx264 -f flv rtmp://a.rtmp.youtube.com/live2/key
Ругается на то, что неправильные настройки, либо формат видео. Выдал ему h264 - тупо висит "запуск". А так, ругается на низкий битрейт, низкое качество . Интернет отличный, пк тоже. Не могли бы вы написать, как должна выглядеть итоговая команда ffmpeg с битрейтом и прочими радостями. Есть подозрение, что у меня все параметры перемешаны. Извините за такое ламерство, но ffmpeg почти впервые в жизни увидел.
sim3x Разобрался на половину - поток проходит, видно картинку и слышно аудио, но не долго - где-то секунду, дальше просто крутится загрузка на плеере и всё.
Максимально упростил:
ffmpeg -stream_loop -1 -i video.gif -i audio.mp3 -c:v libx264 -f flv rtmp://a.rtmp.youtube.com/live2/key
Всё решил проблему, воспользовавшись вашей ссылкой. Я просто не обратил внимание, что m3u8 заполнялся дропами. А вы не знаете, есть ли возможность динамически получать метатэг из m3u(поток icecast) и писать его в drawtext? Я пробовал на bash получил тэг по ffprob и записал его в ffmpeg, однако запись туда добавляется только один раз(само собой, ffmpeg ведь вызывается один раз). Ну или из файла текстового получать его. Главное - динамически. Спасибо!
Дмитрий Полушкин: Здравствуйте! Напрямую из тегов - не получилось. Пришлось через костыль - ffmpeg умеет читать текстовые файлы, поэтому я создал его и пишу в него нужную мне информацию. Например, у меня радио и я другим скриптом вытаскиваю название текущего трека из тегов и записываю его в файл. Каждый раз, как изменяется текущий трек, скрипт пишет его в файл и ffmpeg сразу подхватывает его(через секунду, наверное).
В файле mylist.txt находится ссылка на стрим полученная следующим кодом(Python):
from youtube_dl import YoutubeDL
from os import system
while True:
with YoutubeDL({}) as ydl:
file = open('url.txt', 'r')
url=file.read()
file.close()
song_info = ydl.extract_info(url, download=False)
su=song_info["formats"][0]["url"]
file = open('mylist.txt', 'w')
file.write(su)
file.close()
system('sh stream.sh')