Скрипт для использования ffmpeg или Liquidsoap в качестве вещателя для автоматизации видео?

Я хотел бы создать модуль для динамической широковещательной передачи плейлиста на сервер rtmp. Может существовать вещательный плейлист, такой как Xsplit, VirtualCam с FFMLE, Wirecast, но каждому из них нужна хорошая графическая карта для работы, в то время как облачный сервер может не иметь графических карт. Я попробовал оба Liquidsoap со следующим congif:

set("frame.video.width", 1280)
set("frame.video.height", 720)
set("frame.video.samplerate", 25)
set("gstreamer.add_borders", false)

s = single("/home/user/singlevideo.mp4")

s = fallback([s, blank()])

output.gstreamer.audio_video(
  video_pipeline=
    "videoconvert ! x264enc bitrate=2000 ! video/x-h264,profile=baseline ! queue ! mux.",
  audio_pipeline=
    "audioconvert ! voaacenc bitrate=96000 ! queue ! mux.",
  pipeline=
    "flvmux name=mux ! rtmpsink location=\"rtmp://127.0.0.1:1930/live/live live=1\"",
  s)

Это работает хорошо, но когда я меняю его с одиночного на плейлист ("/home/user/playlist.m3u"), я получаю только черный экран (что является запасным вариантом). Если кто-то когда-либо использовал Liquidsoap с видео плейлистом, что изменить в этом конфиге, чтобы он работал?

Для FFMPEG он также работает для одного видеофайла, поскольку не может передавать плейлист. Если у кого-то есть скрипт, который может отслеживать процесс ffmpeg и изменять исходный код за 3 секунды до конца текущего файла или что-то в этом роде?

3 ответа

Может быть, это может помочь вам

Libav/FFMPEG потоковое решение для RTMP с динамическим списком воспроизведения.

https://github.com/fyroc/RTMP-Playlist

Я использую это так:

videosource = playlist(reload=3600, "/home/user/videostreams/videos.txt")
videoplaylist = mksafe(videosource)
theoracodec = %ogg(%theora(quality=25), %vorbis)

А потом я вывожу его на Icecast:

output.icecast(theoracodec,id="icecast_ogv",host="localhost",port=8000,password="passw",mount="video",description="Description",public=false,url="my_url",videoplaylist)

Пытаться

playlist.safe("/home/user/playlist.m3u")
Другие вопросы по тегам