Automate 24/7 Stream for a scheduled Playlist

bcoyle

Member
beta testing is going well. We are implementing a public access station in the Netherlands. At the end, we will have fully functioning tv station, first of many.
 

tatje

New Member
Hello everyone,
i want add new solution to scheduler, my first version work as html page, i'm not satisfied.
Now i got version as program on windows.

What you need:
OBS
OBS WebSocket (version 4.9.1)
https://weblive.pro/scheduler_for_obs.exe (zip file, selft unpack).
https://dotnet.microsoft.com/en-us/download/dotnet/6.0 version .NET Desktop Runtime 6.0.7

View attachment 84822

Very simply app.
In OBS need 3 scenes.
Stop scene - after play last video, program switch to this scene
Scene 1 - first scene with first Media Source
Scene 2 - second scene with second Media Source

In this scenarion, program check time, if start time is exacly same load video to Media Source and run (first time Scene 1), on Start End on last file system switch to Stop scene.
by start program error:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.InvalidCastException: Conversion from string "0" to type 'Date' is not valid.
at Microsoft.VisualBasic.CompilerServices.Conversions.ToDate(String Value)
at Scheduler_for_OBS.Module1.readdata() in C:\Users\tomek\source\repos\Scheduler for OBS\Scheduler for OBS\Module1.vb:line 51
at Scheduler_for_OBS.Form1.Form1_Shown(Object sender, EventArgs e) in C:\Users\tomek\source\repos\Scheduler for OBS\Scheduler for OBS\Form1.vb:line 548
at System.Windows.Forms.Form.OnShown(EventArgs e)
at System.Windows.Forms.Form.CallShownEvent()
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()


************** Loaded Assemblies **************
System.Private.CoreLib
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Private.CoreLib.dll
----------------------------------------
Scheduler for OBS
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/verbi/Downloads/obsscheduler/net6.0-windows/Scheduler%20for%20OBS.dll
----------------------------------------
Microsoft.VisualBasic.Forms
Assembly Version: 6.0.2.0
Win32 Version: 6.0.1322.60101
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.13/Microsoft.VisualBasic.Forms.dll
----------------------------------------
System.Runtime
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Runtime.dll
----------------------------------------
System.Windows.Forms.Primitives
Assembly Version: 6.0.2.0
Win32 Version: 6.0.1322.60101
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.13/System.Windows.Forms.Primitives.dll
----------------------------------------
System.Windows.Forms
Assembly Version: 6.0.2.0
Win32 Version: 6.0.1322.60101
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.13/System.Windows.Forms.dll
----------------------------------------
System.Diagnostics.TraceSource
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Diagnostics.TraceSource.dll
----------------------------------------
System.Collections
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Collections.dll
----------------------------------------
System.ComponentModel.Primitives
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.ComponentModel.Primitives.dll
----------------------------------------
System.Runtime.InteropServices
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Runtime.InteropServices.dll
----------------------------------------
System.Drawing.Primitives
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Drawing.Primitives.dll
----------------------------------------
System.Collections.Specialized
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Collections.Specialized.dll
----------------------------------------
System.Security.Principal.Windows
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Security.Principal.Windows.dll
----------------------------------------
System.Security.Claims
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Security.Claims.dll
----------------------------------------
Microsoft.Win32.Primitives
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/Microsoft.Win32.Primitives.dll
----------------------------------------
System.Threading.Thread
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Threading.Thread.dll
----------------------------------------
System.ComponentModel.EventBasedAsync
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.ComponentModel.EventBasedAsync.dll
----------------------------------------
System.Threading
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Threading.dll
----------------------------------------
System.ComponentModel
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.ComponentModel.dll
----------------------------------------
System.Drawing.Common
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.13/System.Drawing.Common.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 6.0.1322.60101
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.13/Accessibility.dll
----------------------------------------
System.ComponentModel.TypeConverter
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.ComponentModel.TypeConverter.dll
----------------------------------------
Microsoft.VisualBasic.Core
Assembly Version: 11.0.0.0
Win32 Version: 11.100.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/Microsoft.VisualBasic.Core.dll
----------------------------------------
obs-websocket-dotnet
Assembly Version: 4.9.1.0
Win32 Version: 4.9.1.0
CodeBase: file:///C:/Users/verbi/Downloads/obsscheduler/net6.0-windows/obs-websocket-dotnet.dll
----------------------------------------
netstandard
Assembly Version: 2.1.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/netstandard.dll
----------------------------------------
System.Collections.Concurrent
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Collections.Concurrent.dll
----------------------------------------
Newtonsoft.Json
Assembly Version: 13.0.0.0
Win32 Version: 13.0.1.25517
CodeBase: file:///C:/Users/verbi/Downloads/obsscheduler/net6.0-windows/Newtonsoft.Json.dll
----------------------------------------
System.Linq.Expressions
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Linq.Expressions.dll
----------------------------------------
System.ObjectModel
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.ObjectModel.dll
----------------------------------------
System.Numerics.Vectors
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Numerics.Vectors.dll
----------------------------------------
System.Runtime.Loader
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Runtime.Loader.dll
----------------------------------------
System.Memory
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Memory.dll
----------------------------------------
Microsoft.Win32.SystemEvents
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.WindowsDesktop.App/6.0.13/Microsoft.Win32.SystemEvents.dll
----------------------------------------
System.Collections.NonGeneric
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Collections.NonGeneric.dll
----------------------------------------
Microsoft.Win32.Registry
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/Microsoft.Win32.Registry.dll
----------------------------------------
System.Private.Uri
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Private.Uri.dll
----------------------------------------
System.Diagnostics.StackTrace
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Diagnostics.StackTrace.dll
----------------------------------------
System.Reflection.Metadata
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Reflection.Metadata.dll
----------------------------------------
System.Collections.Immutable
Assembly Version: 6.0.0.0
Win32 Version: 6.0.1322.58009
CodeBase: file:///C:/Program%20Files/dotnet/shared/Microsoft.NETCore.App/6.0.13/System.Collections.Immutable.dll
----------------------------------------

************** JIT Debugging **************
 

ROGi256

New Member
tell me about yourself and what you want to do? you just joined, so do you know much about obs?
i work for a tv station in somalia, we are trying to transition from vmix to OBS so ive been learning to use OBS this year, not the best at it but functional
 

bcoyle

Member
i work for a tv station in somalia, we are trying to transition from vmix to OBS so ive been learning to use OBS this year, not the best at it but functional
tell me more about your station and what you are trying to do . how about a url to yoiur on-line station?
 

lino

New Member
Ciao Bcoyle.

Siamo una piccola emittente televisiva nei Paesi Bassi. Abbiamo bisogno di un buon programmatore per la trasmissione. Ci siamo guardati intorno e abbiamo scoperto che i costi del software sono fastidiosi e alti nei termini che vogliamo.
Questo è quello che vogliamo fare..

**Programma di notizie situato su un server ftp (sempre lo stesso nome file) in modo da avere sempre le ultime notizie sullo schermo.

**Pianifica uno streaming rtmp

**Pianifica un video preregistrato

** Pianifica la pubblicità.

**La nostra schermata principale è un file rss che mostra le ultime notizie in formato testo. (Con il suono del nostro canale radio)

Siamo un canale televisivo che vive di donazioni finanziarie.

Spero che possiamo lavorare insieme e magari se vuoi posso testare insieme a te il tuo programma Beta.

Cordiali saluti Danny
Questo sarebbe molto bello, anche sto facendo delle prove con OBS per una webTV locale, per ora ho caricato tutta la produzione e viene riprodotta in modalità random: https://www.osimoweb.it/tv.php
 

lino

New Member
il pc dovrebbe avere 16g mem min. Se stai già eseguendo obs, probabilmente ok
OsimoWeb è un'associazione noprofit, promuoviamo la cultura con rubriche sullo sport, libri, salute, musica ecc., sul social Facebook e Youtube. Ho creato anche una WebTV al link https://www.osimoweb.it/tv.php dove trasmetto in random tutta la programmazione dal 2018 ad oggi quasi 600 video. Utilizzo OBS e come fonte video VLC, funziona senza problemi, posso creare varie playlist, ma questo non permette nessuna schedulazione. Noi non abbiamo pubblicità da mandare, sarebbe bello creare mettere degli spot ad orari prestabiliti.
 

bcoyle

Member
OsimoWeb è un'associazione noprofit, promuoviamo la cultura con rubriche sullo sport, libri, salute, musica ecc., sul social Facebook e Youtube. Ho creato anche una WebTV al link https://www.osimoweb.it/tv.php dove trasmetto in random tutta la programmazione dal 2018 ad oggi quasi 600 video. Utilizzo OBS e come fonte video VLC, funziona senza problemi, posso creare varie playlist, ma questo non permette nessuna schedulazione. Noi non abbiamo pubblicità da mandare, sarebbe bello creare mettere degli spot ad orari prestabiliti.
do you speak English?
i don't know Italian
 

bcoyle

Member
Some answers to your questions:

I'm working at a very small local TV channel. We're using a very old software (from 2002) called InfoCaster for playout, but now testing a new computer with OBS. (If you're not familiar with InfoCaster, don't try to search for it! We tried to find them, because we thought it's a good idea to get an up to date version of their software that meets today's expectations of broadcasting, but now there is not even any sign of somewhen that company made playout software.) Nowadays most of industrial standard playout softwares are costs thousands of dollars (per year) what is way more than what fits into the budget of a little eastern-european television, and ironically OBS (with Advanced Scene Switcher) is better in automation, than the commercial softwares (however OBS not a software without compromises too — more about that later).

I think the only advantage of 24/7 (or not continous, but scheduled, regular, frequent) broadcast over constantly available, searchable content is the capability of break through information bubbles. I mean you can find everything on the internet, but you will find only what you search for. So maybe there are many things that would interests you, but you don't even know that those are exists, so you never search for it. But if you follow a channel, that channel can provide such informations for you, so I think the target audience of a streaming/broadcasting channel should be the people who are open for completely new things and the content of these channels should be present various, little-known things in an easily understandable, no prior knowledge required way. This type of content obviously doesn't really work with a one person staff, as it only can reveal topics that is in that one person's information bubble, this require a team. As a local television, we try to find small, exciting local communities, peoples, upcoming events and present them in our programs. It takes three full time job and a few people who help us occasionally to produce all the material for our broadcast, also we get a small part of our programs in broadcast ready state from other creator teams. All these together covering all the tasks at our channel from discover topics to shooting, edit videos, to put everything into the playout software, maintance of equipment, manage YouTube channel. Higlighting from this the need for time to feed the daily programs into the playout software is take about 20-30 minutes. Now it seems OBS can reduce it to max. 15 minutes when we will start using it in live.

We're upload a part of our programs to YouTube after them were broadcasted, but some of our programs quickly losing actuality so those can get most of the views in them scheduled playing time. Some other programs are not own produced and we don't have rights to share them constantly, we get them just for broadcast.

Currently we don't have live programs, but there were many years ago. We have the technical capabilities for it and we want to keep it in order to a live program would only depend on decision, not on technical capabilities. Also a live like recording (when everything is done as would be a live broadcast except broadcasting it) require live capable equipment and it could speed up the workflow of the production.

We don't have real 24/7 playout, we have only 3 to 4 hours of programs a day, in the rest of the time we broadcasting photonews (I'm not sure if it's the right english word for it, basically it's a slideshow with advertisements and information of public interest on the pictures). Because of this program structure we don't have to worry of the small delays caused by processing times when changing files on playout, however I think it's much smaller problem than you presented. The three second is unrealistically long time. I've tried OBS on a lot different computer with very different computing power, but I never experienced more than one second delay on a media change. It is possible that very weak machines needs more time, but very weak machines are incapable for any kind of broadcast managemant at all. Moreover take into account that OBS doesn't know in advance when it will have to change between souces as it try to react immediatly to the users interaction, or the scene switcher pay attention if a condition is true and if it is, than change immediately (not looking in advance, when it will be true), so OBS doesn't have time to get ready for the change, while a time scheduled/playlist software has the opportunity to do that, as it knows the changes in advance, because new medias have exact starting time given by the user, or calculated from the current time and the remaining time of the currently playing media. And if it knows in advance when it will have to change between medias and which file will come than it can prepare for it before the change (e.g. decode and load the firs few frame into RAM). (OBS also has the opportunity to it with programmed changes, but as I know it doesn't take it.)

Our only major problem with OBS as a 24/7 playout software that it cannot provide a list of what and when will played with the current setup. It provide much more effective automation tools than industrial standard softwares for a rigid program structure as ours (when same type of programs come in the same order on every single day or week, however it much less usable for constantly changing structures), that's why it can speed up the work so much for us, but the missing of a list of what it will do let make mistakes easier. And it is enough to set up only one thing incorrectly and it won't start a media when we want to start it or start other than we want and it'll result that nothing after that in the chain will start. A little mistake could make a complete disaster, because we can't check on a simple list: is everything correct that we setup?
i haven't heard from you in a long time. My own software is in beta test. Did you find a solution
 
Top