我想构建一个模块,将虚假的实时播放列表动态广播到rtmp服务器。可能有播放列表广播公司,如Xsplit、带有FFMLE的VirtualCam、Wirecast,但它们每个都需要一个好的图形卡才能工作,而云服务器可能没有图形卡。我尝试了Liquidsap和以下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秒更改源,或者类似的东西?
我这样使用它:
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)
也许这可以帮助您
Libav/FFMPEG流式传输解决方案RTMP与动态播放列表。
https://github.com/fyroc/RTMP-Playlist
尝试
playlist.safe("/home/user/playlist.m3u")