This is great! Thank you very much, I will definitely have a go at this, in
the end I want to create a docker image for it, I'll update this
conversation once it is done so others can benefit from it as well. Thank
you again, thrilled to try it out!

Best regards,
        *Ákos Veres*

On Wed, Mar 22, 2017 at 10:01 AM, Alex LaBranche <[email protected]>
wrote:

> I know this is a bit off-topic for this mailing list, but I figured maybe
> this could help.
>
> I run a 24/7 video stream in which the audio is sourced from a Shoutcast
> server. Instead of broadcasting a still image I decided to try and spice
> things up a bit by using filters on a video track that are audio reactive.
> I also wanted to have the title info in the video frame, not just metadata.
>
> Tracks change about once an hour since they are all DJ mix sets. i display
> the current track title and the current number of listeners in the outgoing
> rtmp stream as draw text filters.
>
> The filter reads from a text file. Using the 'reload' option will make
> ffmpeg reload/read said file every frame. So what I do is have one script
> thats executed by cron once a minute that gets the number of listeners and
> saves to count.txt. And the source software I wrote thats broadcasting to
> shoutcast writes the song title into separate file, title.txt every time it
> changes, making sure that its updated atomically so ffmpeg wont partially
> read the file or fail and exit completely. (instead of editing the file
> directly, I first write the information to a temp.txt file, then mv tmp.txt
> title.txt)
>
> I have a shell script that defines each different filter I use, then I
> just put it all together at the end... here are a few bits from it...
>
> First I define the listener count drawtext.
> This puts the count in the bottom right corner of the frame (1920x1080),
> with a little transparency.... count.txt and font.ttf are in the same
> directory as the script, and I'm sure you get what the other settings are
> for =]
>
>
> count="drawtext=fontfile=font.ttf:fontsize=72:fontcolor=
> white:textfile=count.txt:reload=1:x=(w-text_w)-15:y=(h-60):alpha=.5";
>
>
> Now I define the title drawtext:
> This centers the title at the bottom of the frame, will scale the text in
> the event the string is too long to fit within the width of the frame so
> that the text will never get cut off,  and will blink on and off,
> displaying for 15 seconds every 60 seconds, and again, a bit of transparency
>
>
> title="drawtext=fontfile=font.ttf:fix_bounds=true:fontsize=
> 38:textfile=title.txt:fontcolor=white:reload=1:y=(h-
> text_h)-25:x=(w-text_w)/2:enable=lt(mod(t\,60)\,15):alpha=.5";
>
>
> The important bit in each is reload=1.
>
> The ffmpeg string could then be written like this
>
>
> ffmpeg -i /path/to/video.mp4 -i http://shoutcast-server.com:8000
> -filter_complex $count,$title -s 1920x1080 -c:a libfdk_aac -b:a 256k -c:v
> libx264 -b:v 15000k -preset ultrafast -f flv rtmp://stream.output.com/app/
> streamkey
>
> If you'd like to see what this looks like in action you can visit
> https://www.dsfm.tv (should autoplay)
>
> You can read more about the drawtext filter here:
>
> https://ffmpeg.org/ffmpeg-filters.html#drawtext-1
>
>
> If you have any questions feel free  =]
>
> Cheers,
>
> Alex
>
> > On Mar 21, 2017, at 2:15 35AM, Akos Veres <[email protected]> wrote:
> >
> > I'm using FMPEG as well, that works without any issues, I just want to
> have a dynamic text added to image so it shows the currently playing track
> together with album art, LS could generate all of that and then continually
> push the stream to youtube.
> >
> > Best regards,
> >         Ákos Veres
> >
> > On Mon, Mar 20, 2017 at 6:42 PM, John Chewter <
> [email protected]> wrote:
> > By that I mean icecast -> FMPEG -> YouTube.
> >
> > I saw no advantage to using LS
> >
> > On 20/03/17 18:09, John Chewter wrote:
> >> I have done it with FFMPEG
> >>
> >> On 20/03/17 16:13, Akos Veres wrote:
> >>> Hi everyone,
> >>>
> >>> I'm trying to stream to youtube live an icecast source paired with an
> image.
> >>>
> >>> I've followed these resources:
> >>> - http://savonet.sourceforge.net/doc-svn/video-static.html
> >>> - http://liquidsoap.fm/doc-svn/video.html
> >>> - https://www.sk89q.com/2014/05/broadcasting-a-video-playlist-
> to-nginx-rtmp-module/
> >>>
> >>> The current script:
> >>>
> >>> #!/usr/bin/liquidsoap
> >>> # XTRadio Video
> >>> # Standard settings
> >>> set("log.stdout",true)
> >>> set("log.file",false)
> >>> set("log.level",4)
> >>> set("server.telnet",false)
> >>> set("frame.video.width",640)
> >>> set("frame.video.height",480)
> >>> set("frame.video.samplerate",12)
> >>> # Stream Settings
> >>> backup = input.http(id="xtradio","http://xtradio.org:8080/mp3";)
> >>> img = single("/xt-hd.png")
> >>> img = mksafe(img)
> >>> radio = backup
> >>> video = img
> >>> radio = buffer(buffer=0.03,mksafe(radio))
> >>> source = mux_video(video=video,radio)
> >>> source = mksafe(source)
> >>> output.gstreamer.audio_video(id="output.youtube",
> >>>   video_pipeline=
> >>>     "videoconvert ! x264enc bitrate=4000 !
> video/x-h264,profile=baseline ! queue ! mux.",
> >>>   audio_pipeline=
> >>>     "audioconvert ! voaacenc bitrate=128000 ! queue ! mux.",
> >>>   pipeline=
> >>>     "flvmux name=mux ! rtmpsink location=\"rtmp://a.rtmp.
> youtube.com/live2/KEY\"",
> >>>   source)
> >>>
> >>> Output
> >>>
> >>> xtvideo    | 2017/03/19 12:00:17 [replay_metadata_7237:4] Activations
> changed: static=[mksafe:output(dot)youtube:output(dot)youtube],
> dynamic=[].
> >>> xtvideo    | 2017/03/19 12:00:17 [warp_prod_7187:3] Buffer emptied,
> start buffering...
> >>> xtvideo    | 2017/03/19 12:00:17 [mksafe:3] Switch to safe_blank with
> transition.
> >>> xtvideo    | 2017/03/19 12:00:17 [replay_metadata_7237:4] Activations
> changed: static=[], dynamic=[].
> >>> xtvideo    | 2017/03/19 12:00:17 [source:4] Source
> replay_metadata_7237 gets down.
> >>> xtvideo    | 2017/03/19 12:00:17 [mux_7189:4] Activations changed:
> static=[], dynamic=[mksafe:output(dot)youtube:output(dot)youtube].
> >>> xtvideo    | 2017/03/19 12:00:17 [safe_blank:4] Activations changed:
> static=[mksafe:output(dot)youtube:output(dot)youtube],
> dynamic=[mksafe:output(dot)youtube:output(dot)youtube].
> >>> xtvideo    | 2017/03/19 12:00:17 [xtradio:3] New metadata chunk: ? --
> Calvin Harris feat. Ellie Goulding - Outside (Funk LeBlanc Remix) (04:12)
> http://soundcloud.com/funk-leblanc/calvin-harris-feat-
> ellie-goulding-outside-funk-leblanc-remix .
> >>> xtvideo    | 2017/03/19 12:00:17 [mksafe:3] Switch to xtradio with
> transition.
> >>> xtvideo    | 2017/03/19 12:00:17 [safe_blank:4] Activations changed:
> static=[], dynamic=[mksafe:mksafe:buffer_7186:buffer_7186].
> >>> xtvideo    | 2017/03/19 12:00:17 [xtradio:4] Activations changed:
> static=[mksafe:mksafe:buffer_7186:buffer_7186],
> dynamic=[mksafe:mksafe:buffer_7186:buffer_7186].
> >>> xtvideo    | 2017/03/19 12:00:17 [source:4] Garbage collected
> replay_metadata_7237.
> >>> xtvideo    | 2017/03/19 12:00:18 [xtradio:4] End of track.
> >>>
> >>> It looks like nothing is connecting to youtube, on the dashboard I see
> no connection what so ever.
> >>>
> >>> Any RTFM or howto is welcome, I'm pretty sure I'm misunderstanding a
> mechanism somewhere. I don't mind if the same can be achieved with ffmpeg.
> >>>
> >>> Best regards,
> >>>         Ákos Veres
> >>>
> >>>
> >>>
> >>> ------------------------------------------------------------
> >>> ------------------
> >>> Check out the vibrant tech community on one of the world's most
> >>> engaging tech sites, Slashdot.org!
> >>> http://sdm.link/slashdot
> >>>
> >>>
> >>> ______________________________
> >>> _________________
> >>> Savonet-users mailing list
> >>>
> >>> [email protected]
> >>> https://lists.sourceforge.net/lists/listinfo/savonet-users
> >>
> >>
> >>
> >> ------------------------------------------------------------
> >> ------------------
> >> Check out the vibrant tech community on one of the world's most
> >> engaging tech sites, Slashdot.org!
> >> http://sdm.link/slashdot
> >>
> >>
> >> ______________________________
> >> _________________
> >> Savonet-users mailing list
> >>
> >> [email protected]
> >> https://lists.sourceforge.net/lists/listinfo/savonet-users
> >
> >
> > ------------------------------------------------------------
> ------------------
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > _______________________________________________
> > Savonet-users mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/savonet-users
> >
> >
> > ------------------------------------------------------------
> ------------------
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot______
> _________________________________________
> > Savonet-users mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/savonet-users
>
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Savonet-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/savonet-users
>
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to