-
-
Save BusterNeece/5dbfb4dbc1846055c9ab07a7c685899c to your computer and use it in GitHub Desktop.
# What is This Script? | |
# This script allows you to broadcast your AzuraCast radio signal to a remote video stream, using a | |
# static video file that loops in the background and dynamically writing the currently playing track | |
# on top of that video file. | |
# | |
# This script replaces the previous "radio-video-stream" project, allowing you to manage files directly from | |
# within AzuraCast and not requiring any changes to your Docker configuration at all. | |
# | |
# To use this script, you must be running at least AzuraCast 0.19.0 or a later Rolling Release version. | |
# | |
# Before Using This Script: | |
# - Upload a video file to a folder under your station's media library (in the example below, named "videostream") | |
# - Choose a font to display Now Playing data and upload a TTF version of that font to the same folder | |
# | |
# How to Use This Script | |
# - Copy the section below. | |
# - Visit your station's "Edit Liquidsoap Configuration" section (under "Broadcasting" in newer versions) | |
# - Paste the code into the bottom-most configuration section | |
# - Customize as necessary with your station's media directory and font specifications | |
# - Click "Save Changes" and then "Restart Broadcasting" | |
# - Enjoy! | |
# | |
# VIDEO STREAM | |
# | |
# Edit This: Station Base Directory | |
station_base_dir = "/var/azuracast/stations/station_name" | |
# Edit This: YouTube Stream Key | |
youtube_key = "abcd-1234-abcd-1234" | |
# Fetch and encode video | |
video_file = station_base_dir ^ "/media/videostream/video.mp4" | |
# Write now playing to the video file | |
font_file = station_base_dir ^ "/media/videostream/font.ttf" | |
# A static file auto-generated by AzuraCast in the "config" dir. | |
nowplaying_file = station_base_dir ^ "/config/nowplaying.txt" | |
# Align text | |
font_size = "50" | |
font_x = "340" | |
font_y = "990" | |
# Method to overlay now playing text | |
def add_nowplaying_text(s) = | |
def mkfilter(graph) | |
let {video = video_track} = source.tracks(s) | |
video_track = ffmpeg.filter.video.input(graph, video_track) | |
video_track = ffmpeg.filter.drawtext(font=font_file,fontsize=font_size,x=font_x,y=font_y,textfile=nowplaying_file,graph,video_track) | |
video_track = ffmpeg.filter.video.output(graph, video_track) | |
source({ | |
video = video_track | |
}) | |
end | |
ffmpeg.filter.create(mkfilter) | |
end | |
videostream = single(video_file) | |
videostream = add_nowplaying_text(videostream) | |
videostream = source.mux.video(video=videostream, radio) | |
# Output to YouTube | |
enc = %ffmpeg( | |
format="mpegts", | |
%video.raw(codec="libx264", pixel_format="yuv420p", b="300k", preset="superfast", r=25, g=50), | |
%audio( | |
codec="aac", | |
samplerate=44100, | |
channels=2, | |
b="96k", | |
profile="aac_low" | |
) | |
) | |
output.youtube.live.hls(key=youtube_key, fallible=true, encoder=enc, videostream) |
Where do I place this file in the docker container?
Hello. Where can I override the youtube method to change the link to the rtmp server ? I need to stream to twitch or another server. Thank you.
Won't work on Azuracast v0.18.5, and also can you add the RTMP server output for own rtmp server such nginx?
Hello, how i can change font color?
The code is working great for me! Thank you! Except I have a few issues. I copied and edited the code exactly as instructed, but my text always says "station offline" what am I doing wrong? Also, I can't get it to recognize my loaded font (Roboto in this instance). Lastly, if I can get the now playing text to work, I'd love to have the text in the top left corner, which x and y numbers coincide with that location?
Can I use a 4k looping .mov?
can anyone confirm this still works in v0.19.4 Stable ? since we updated it no longer works for us.
it work with v0.19.4 Stable for youtube
i try to stream to Owncast .. how can i change the url ?
it work with v0.19.4 Stable for youtube
i try to stream to Owncast .. how can i change the url ?
url = "owncast url here"
output.url(fallible=true, url=url, enc, videostream)
you can try adding this
it work with v0.19.4 Stable for youtube
i try to stream to Owncast .. how can i change the url ?url = "owncast url here" output.url(fallible=true, url=url, enc, videostream)
you can try adding this
this is very helpful thanks .. just i edited and in it work .. now i am facing other problem from OwnCast side ..
---- transcoding error. look at data/logs/transcoder.log to help debug. your copy of ffmpeg may not support your selected codec of libx264 https://owncast.online/docs/codecs/ ---
i will see how to edit this ..
Thank you alot
VIDEO STREAM
Edit This: Station Base Directory
station_base_dir = "/var/azuracast/stations/YOUR-STATION"
Edit This: Stream RTMP Adress
stream_key = "rtmp://YOUR RTMP URL/STREAM-KEY"
Fetch and encode video
video_file = station_base_dir ^ "/media/videostream/video.mp4"
Write now playing to the video file
font_file = station_base_dir ^ "/media/videostream/font.ttf"
A static file auto-generated by AzuraCast in the "config" dir.
nowplaying_file = station_base_dir ^ "/config/nowplaying.txt"
Align text
font_size = "50"
font_x = "340"
font_y = "990"
Method to overlay now playing text
def add_nowplaying_text(s) =
def mkfilter(graph)
let {video = video_track} = source.tracks(s)
video_track = ffmpeg.filter.video.input(graph, video_track)
video_track = ffmpeg.filter.drawtext(font=font_file,fontsize=font_size,x=font_x,y=font_y,textfile=nowplaying_file,graph,video_track)
video_track = ffmpeg.filter.video.output(graph, video_track)
source({
video = video_track
})
end
ffmpeg.filter.create(mkfilter)
end
videostream = single(video_file)
videostream = add_nowplaying_text(videostream)
videostream = source.mux.video(video=videostream, radio)
Output to Twitch
enc = %ffmpeg(
format="flv",
%video.raw(codec="libx264", pixel_format="yuv420p", b="300k", preset="superfast", r=25, g=50),
%audio(
codec="aac",
samplerate=44100,
channels=2,
b="96k",
profile="aac_low"
)
)
output.url(url=stream_key, enc, fallible=true, vid
can i add channel LOGO ?
Thank you, I will try this