-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support OBS as video production engine #29
Comments
Hi there! Sorry to have kept you waiting. Yeah, I guess going with the current development version would the most future proof. So essentially, all the Then, I think I would go with something simple like the CAM Part adapter and start from there. It uses a It's probably going to be nice to be able to switch between using CasparCG for graphics (if one wants to) or some sort of generic REST API to talk to, say, NodeCG or something, and render that directly in OBS. Then, once that's going and the rundown can be played "as-is" (so, no Ad-Libs), you can look at the global AdLibs and similarly to Part adapters, create adapters to switch between various modes of graphics rendering for graphic AdLibs. it's going to be trivial to set up migrations for the new Action Triggers using the export function createAdLibHotkey(
keys: string,
sourceLayerIds: SourceLayer[],
globalAdLib: boolean,
pick: number,
tags: string[] | undefined,
label?: ITranslatableMessage
): IBlueprintTriggeredActions {
return {
_id: makeActionTriggerId('adLib', sourceLayerIds.join('_'), !!globalAdLib, pick),
_rank: rankCounter++ * 1000,
actions: [
{
action: PlayoutActions.adlib,
filterChain: [
{
object: 'view',
},
{
object: 'adLib',
field: 'sourceLayerId',
value: sourceLayerIds,
},
{
object: 'adLib',
field: 'global',
value: globalAdLib,
},
!globalAdLib // if not a Global AdLib, trigger only if it's coming from the current segment
? {
object: 'adLib',
field: 'segment',
value: 'current',
}
: undefined,
tags && tags.length > 0
? {
object: 'adLib',
field: 'tag',
value: tags,
}
: undefined,
{
object: 'adLib',
field: 'pick',
value: pick,
},
].filter(Boolean) as (IRundownPlaylistFilterLink | IGUIContextFilterLink | IAdLibFilterLink)[],
},
],
triggers: [
{
type: TriggerType.hotkey,
keys: keys,
up: true,
},
],
name: label,
}
} Creating variants to replicate the "clear" functionality can be just achieved using the {
"object": "adLib",
"field": "type",
"value": "clear",
} filter chain link. All of that will be definitely simpler once you've go a working base, though. |
OBS is a popular software video mixer allowing running reasonably complicated video productions on common, off-the-shelf computer systems. Sofie TSR will support OBS starting with Release 37. It would be great to be able to allow users of Spreadsheet blueprints to easily change between the current ATEM+CasparCG setup and a pure OBS setup.
Timeline State Resolver types documentation: https://nrkno.github.io/tv-automation-state-timeline-resolver/modules/timeline_state_resolver_types.html
The text was updated successfully, but these errors were encountered: