SoftProjector / softprojector

Church media presentation software
http://softprojector.org/
GNU General Public License v3.0
46 stars 30 forks source link

Add small webserver #63

Open stefslon opened 2 years ago

stefslon commented 2 years ago

Added small webserver that publishes content of whatever is displayed over HTTP in XML format. This is useful for integrating with video mixing software (for example Vmix), which can typically ingest this type of content for dynamic overlay displays.

kutuz00 commented 2 years ago

Can’t you add event emitter? Event will send just raw text data and client will listen for event , receive text and manipulate in Html for example

stefslon commented 2 years ago

I am not sure I fully understand what you are proposing. Are you talking about Qt events or signals, or some other forms of events? Are you saying web server can be done away with and Qt events used in place?

kutuz00 commented 2 years ago

Socket.io lib. https://github.com/socketio/socket.io-client-cpp trying to figure out your httpserver, but websockets will be better, I think

kutuz00 commented 2 years ago

### Can’t you add event emitter? Event will send just raw text data and client will listen for event , receive text and manipulate in Html for example

Can)))

stefslon commented 2 years ago

Makes more sense now :) Where would you put an event emitter? On Bible/song/announcement change?

As a side note, websockets may be better for certain applications, but for my use case I need something that can be pushed over HTTP because existing live streaming software (we use vMix) can only consume XML feeds over HTTP.

And another thought, this httpserver implementation is extremely simple, uses basic Qt and does not require any additional dependencies.

kutuz00 commented 2 years ago

Our case Bible. For songs we use proclaim now. I have look into qt documentation and found websockets there, but only qt5++. I tried to install qt4 to take look on yours server implementation, can’t make it work. Qt4 not working on Catalina. Looks like softprojector needs refactoring ((((. I am not familiar with c++. Learning js. Obs has browser source, I can use webpage as source. Using websocket + node js, can put in obs and manipulate text with css. We have tally system running on node. Very impressed.

Softprojector it’s self nice and simple to use. Interface not overloaded like openLP. It’s free. But no updates for 4 years now. That’s sad. Another way to get text out of display was getting display snap and parse image to text. But I am worry about spelling mistakes.

stefslon commented 2 years ago

I have just compiled softprojector with Qt 5.15.2 without any issues. I am doing this on Windows side though, but still, it seems you should be able to compile with Qt 5.

xaker00 commented 2 years ago

I recently started following the development of SoftProjector again after taking a break for over a decade. I was the original author before Vlad took over and made it much bigger (with the help of other contributors).

I would suggest adding a feature where SoftProjector makes an http POST request to a user supplied url. Sort of like a webhook. That can be further extended to change scenes or control any other equipment you may have. End users would need to create their own webserver to format the data and make it available for their needs. I think that this approach would have a clear line of separation between the program and any integrations. Let me know what you guys think. At the moment, I do not have collaborator access to this repo. (Last I worked on this project, GitHub was not even around.)

kutuz00 commented 2 years ago

I have just compiled softprojector with Qt 5.15.2 without any issues. I am doing this on Windows side though, but still, it seems you should be able to compile with Qt 5.

I’ll try this version

kutuz00 commented 2 years ago

Was able to compile with bunch of errors. Can’t deploy though. ((( Played with server and parse xml to json and got what I need))) but still, sockets will implement real-time updates. Anyway, good job on server, this feature very helpful.

kutuz00 commented 2 years ago

I recently started following the development of SoftProjector again after taking a break for over a decade. I was the original author before Vlad took over and made it much bigger (with the help of other contributors).

I would suggest adding a feature where SoftProjector makes an http POST request to a user supplied url. Sort of like a webhook. That can be further extended to change scenes or control any other equipment you may have. End users would need to create their own webserver to format the data and make it available for their needs. I think that this approach would have a clear line of separation between the program and any integrations. Let me know what you guys think. At the moment, I do not have collaborator access to this repo. (Last I worked on this project, GitHub was not even around.)

Very nice project Companion. Has a lot hardware and modules for it. As well they have http post, get requests module. Very powerful tool, using in our church.

kutuz00 commented 2 years ago

Merry Christmas!!

  1. I was able to build with bunch of yellow messages, but it’s not critical.

  2. After build I have mac_build folder that contains app bundle. Bundle doesn’t have SP icon but runs ok. Bundle downloaded from pre release same.

  3. Mac deploy utility. Processing bundle, adding folders framework and plugins. Now it’s complete app. You can start, import Bibles. Now your display screen white, and not showing anything. To fix it I just copy from older SP some framework and to resources qml folder. Display screen now works too.

stefslon commented 2 years ago

@xaker00 thanks so much for an awesome software. Out of all the different projector software I tried, this one has all the basic functionality without the bloat!

Regarding your suggestion of implementing this feature as HTTP POST, I like the idea. It gives all the flexibility needed. However, I feel like the need for a server to receive those POST requests and process them, will make it hard for an average user to make use of this feature. On the other hand obtaining data from some web resource is well supported in vMix and Livestream Studio. And for OBS one can write a simple webpage that will take the data from SoftProjector's web server, format it and then use browser display to feed it into video stream (as @kutuz00 has done). To make this easier though, I should probably change output to JSON format.

I looked into Faithlife Proclaim to see if they have a solution for this (i.e., getting data into lower-thirds) and they simply provide an ability to have an extra screen output that can be sent as NDI source. Seems like an overkill to me. OpenLP doesn't have anything either.

@kutuz00 glad to hear you got it complied and working. I have a hard time with white screen myself until I copy proper DLL files. I don't think that's anything I did in the code... just don't know how to use Qt properly :)

kutuz00 commented 2 years ago

Some news from me.

I have parse xml to json and then got what I need. Bible and songs are displayed on simple webpage that can be implemented to obs or were you need it. We using proclaim in our setup for songs. Proclaim has output called lower thirds where you can set different layouts for data. NDI need good network speed. Wi-Fi maybe bad choice. Come to telegram group. I can share our experience and details

https://t.me/+bCD8nnl4zCgwY2Uz

Happy New Year!!!

kutuz00 commented 2 years ago

Web display implementation on node.js. Thanks to @stefslon for webserver. https://github.com/kutuz00/Softprojector-Web-Display Screen Shot 2022-01-05 at 12 24 03 AM

ge022 commented 10 months ago

If anyone cares, I have a webserver version all built into the application itself, using Qt's websockets. No need to run any nodejs server. Check it out at https://github.com/ge022/softprojector/tree/http-server There are major issues you run into with Windows using form displays, such as your mouse on the big screen or application opening up and everyone seeing. The solution we came up with is get rid of all physical monitors, and use Blackmagic decklink output through OBS directly to the projector/tvs. So using this, softprojector http server is simply a scene in OBS on both projection and stream PC's. No greenscreen needed either. And now we use OBS for announcements/pictures/video and softprojector is only used for lyrics/bible.

To use this, configure your local IP in the settings, add a browser source in OBS, and then style it using the css setting (example css in :/httpserver.html). tempsnip

DmitriyS83 commented 10 months ago

Thank you, I will check it out..

On Sun, Sep 10, 2023 at 8:33 PM ge022 @.***> wrote:

If anyone cares, I have a webserver version all built into the application itself, using Qt's websockets. No need to run any nodejs server. Check it out at https://github.com/ge022/softprojector/tree/http-server There are major issues you run into with Windows using form displays, such as your mouse on the big screen or application opening up and everyone seeing. The solution we came up with is get rid of all physical monitors, and use Blackmagic decklink output through OBS directly to the projector/tvs. So using this, softprojector http server is simply a scene in OBS on both projection and stream PC's. No greenscreen needed either. And now we use OBS for announcements/pictures/video and softprojector is only used for lyrics/bible.

— Reply to this email directly, view it on GitHub https://github.com/SoftProjector/softprojector/pull/63#issuecomment-1712991719, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJFITEBTPQDIOGV5RNNZ473XZZL53ANCNFSM5BHR745A . You are receiving this because you are subscribed to this thread.Message ID: @.***>

vladozar commented 3 months ago

Hi Guys.. It has been years since I last worked on this project. I'm now coming back to it. Thank you for all your efforts to make it better. I do like the idea of the webserver, but I would like to use as much as possible native Qt libraries. @ge022 , looks like you have made it work with Qt's websockets. That is wonderful. I have not built your code or tried to use it. Since Qt no longer supports Qt4, and the installer does not even have an option to use for older versions, I'm working on migrating SoftProjector to Qt6, Here is my branch in progress https://github.com/SoftProjector/softprojector/pull/73.

Once I migrate it over, If any of you would like to submit a working version of the webserver with Qt6, I would greatly appreciate it.