Hey all, long time OpenLP user, huge fan and first-time poster on the forums here. My church and I are currently looking to start live streaming our services from church, and are looking for ways to integrate OpenLP in our broadcasts. Currently, I have set up a custom stage view, and have plugged that URL into a browser source in our streaming software (OBS for those interested).
So far everything is working great, however, the only thing I am missing is the ability to add song footer info and Bible references in a custom stage view. Has anybody been able to do this yet? I have searched around and I have not found anything
My hacked-together solution at the moment is to also grab a browser source of the main display (:4316/main) and just crop out the song lyrics, so I am left with just the footer. Then I simply overlay it on top of my custom stage view in OBS. The reason this is not ideal is that I can't easily tweak the main display without it messing up what appears on the projectors for those physically in the church.
It works, but if I can get the stage display working properly it opens up so many possibilities on how we can customize the look and feel of our live streams.
I am quite handy with HTML and CSS (and know a little bit about JS) so I can probably custom code something, but I have no idea where I should even be starting. Does anyone have a solution for this, or can point me in the right direction?
Thanks all!
Comments
I have attached an image of what I have so far, which may explain better what I am trying to achieve. Really I just want more control of what OpenLP outputs by using HTML and CSS. Building a custom stage view allows this. The only thing a custom stage view does not display are things you would normally find in the footer, such as the bible reference or song title & copyright info. Is there any code that exists to do this? Do I need to dive into the API and javascript to retrieve this data?
I know what I am asking is not straight forward and simple, but I think if we can solve this it will create a ton of possibilities and options for those looking for customized live stream layouts, helping those who are hard of sight would allow custom views for each role in running a service.
If anyone has done anything similar or knows where I should start looking I would really appreciate a heads up about it!
Thanks again all!
There in the lines 545-550 you find the routine that passes the text over to the server.
You would have to find out, if “current_item” has all the song information stored somewhere, and then include that information in the variable “data” (see line 539). Then – I hope – OpenLP would pass the information over to the API and you could read it out via JavaScript.@JohnM That's a really good hack, and would possibly solve another problem we may run into. I'll 100% test this and see how it works. My only worry is the PC handling OpenLP (and powering the projector) is an older PC, I'll have to see how it handles running OBS and hosting OpenLP as normal.
At the moment I have a bit of a solution, but it's still not the perfect solution. I can place the copyright info inside notes for each song. This would have to be done manually for each song added to the service. I can then call that in HTML (and style it in CSS) by using: "<div id="notes"></div>"
I'll spend the next few days trying out the NDI solution John offered, and take a look at if I can pull anything out of the API to get a bit more advanced with my solution. Thanks again for all your suggestions!
I got this idea from fiveofsix.
You have to edit the said file httprouter.py in /Applications/OpenLP.app/Contents/MacOS/plugins/remotes/lib/httprouter.py.
If you are using the 2.4 version, it's in line 579.
Just add these code:
and then when you access the api (your-IP/api/controller/live/text) you'll get another item on the json array which is the title:
That’s awesome! I have to try it out.
@johnverz Sadly it doesn’t work for me. It doesn’t seem to update the script. Whatever I change in the httprouter.py file, OpenLP does not interpret it. Do I have to tell it to explicitely look for changes in the scripts?