From 3cfec164bd352b2be98b3d7f35534cff8e68b4f7 Mon Sep 17 00:00:00 2001 From: Jan Stabenow Date: Wed, 28 Sep 2022 11:50:39 +0200 Subject: [PATCH] Add dlive + trovo publication services --- .../Services/{Bitmovin.js => DLive.js} | 46 ++++----- src/views/Publication/Services/Trovo.js | 96 +++++++++++++++++++ src/views/Publication/Services/index.js | 4 + .../Publication/Services/logos/bitmovin.svg | 5 - .../Publication/Services/logos/dlive.svg | 1 + .../Publication/Services/logos/trovo.svg | 1 + 6 files changed, 120 insertions(+), 33 deletions(-) rename src/views/Publication/Services/{Bitmovin.js => DLive.js} (50%) create mode 100644 src/views/Publication/Services/Trovo.js delete mode 100644 src/views/Publication/Services/logos/bitmovin.svg create mode 100644 src/views/Publication/Services/logos/dlive.svg create mode 100644 src/views/Publication/Services/logos/trovo.svg diff --git a/src/views/Publication/Services/Bitmovin.js b/src/views/Publication/Services/DLive.js similarity index 50% rename from src/views/Publication/Services/Bitmovin.js rename to src/views/Publication/Services/DLive.js index d7f0f5e..57b5542 100644 --- a/src/views/Publication/Services/Bitmovin.js +++ b/src/views/Publication/Services/DLive.js @@ -2,25 +2,20 @@ import React from 'react'; import { Trans } from '@lingui/macro'; import Grid from '@mui/material/Grid'; -import Link from '@mui/material/Link'; import TextField from '@mui/material/TextField'; -import Logo from './logos/bitmovin.svg'; +import Logo from './logos/dlive.svg'; -const id = 'bitmovin'; -const name = 'Bitmovin'; +import FormInlineButton from '../../../misc/FormInlineButton'; + +const id = 'dlive'; +const name = 'dlive'; const version = '1.0'; -const stream_key_link = ''; +const stream_key_link = 'https://dlive.tv/s/dashboard'; const description = ( - - Transmit the main source to the Bitmovin cloud encoding service, a powerful tool for live streaming. More details about the settings can be founds{' '} - - here - - . - + Live-Streaming to dlive Live RTMP Service. ); -const image_copyright = Please contact the operator of the service and check what happens.; +const image_copyright = ''; const author = { creator: { name: 'datarhei', @@ -42,14 +37,12 @@ const requires = { }; function ServiceIcon(props) { - return Bitmovin Logo; + return dlive Logo; } function init(settings) { const initSettings = { - protocol: 'srt://', - address: '', - port: ':2088', + key: '', ...settings, }; @@ -62,7 +55,7 @@ function Service(props) { const handleChange = (what) => (event) => { const value = event.target.value; - settings.settings[what] = value; + settings[what] = value; const output = createOutput(settings); @@ -70,11 +63,9 @@ function Service(props) { }; const createOutput = (settings) => { - const options = ['-strict', '-2', '-f', 'mpegts']; - const output = { - address: settings.protocol + settings.ip + settings.port, - options: options, + address: 'rtmp://stream.dlive.tv/live/' + settings.key, + options: ['-f', 'flv'], }; return output; @@ -82,14 +73,13 @@ function Service(props) { return ( - - Protocol} value={settings.protocol} readOnly disabled /> - - - IP address} value={settings.ip} onChange={handleChange('ip')} /> + + Stream key} value={settings.key} onChange={handleChange('key')} /> - Port} value={settings.port} readOnly disabled /> + + GET + ); diff --git a/src/views/Publication/Services/Trovo.js b/src/views/Publication/Services/Trovo.js new file mode 100644 index 0000000..190c907 --- /dev/null +++ b/src/views/Publication/Services/Trovo.js @@ -0,0 +1,96 @@ +import React from 'react'; + +import { Trans } from '@lingui/macro'; +import Grid from '@mui/material/Grid'; +import TextField from '@mui/material/TextField'; + +import Logo from './logos/trovo.svg'; + +import FormInlineButton from '../../../misc/FormInlineButton'; + +const id = 'trovo'; +const name = 'Trovo'; +const version = '1.0'; +const stream_key_link = 'https://studio.trovo.live/mychannel/stream'; +const description = ( + Live-Streaming to Trovo Live RTMP Service. +); +const image_copyright = ''; +const author = { + creator: { + name: 'datarhei', + link: 'https://github.com/datarhei', + }, + maintainer: { + name: 'datarhei', + link: 'https://github.com/datarhei', + }, +}; +const category = 'platform'; +const requires = { + protocols: ['rtmp'], + formats: ['flv'], + codecs: { + audio: ['aac', 'mp3'], + video: ['h264'], + }, +}; + +function ServiceIcon(props) { + return Trovo Logo; +} + +function init(settings) { + const initSettings = { + key: '', + ...settings, + }; + + return initSettings; +} + +function Service(props) { + const settings = init(props.settings); + + const handleChange = (what) => (event) => { + const value = event.target.value; + + settings[what] = value; + + const output = createOutput(settings); + + props.onChange([output], settings); + }; + + const createOutput = (settings) => { + const output = { + address: 'rtmp://livepush.trovo.live/live/' + settings.key, + options: ['-f', 'flv'], + }; + + return output; + }; + + return ( + + + Stream key} value={settings.key} onChange={handleChange('key')} /> + + + + GET + + + + ); +} + +Service.defaultProps = { + settings: {}, + skills: {}, + metadata: {}, + streams: [], + onChange: function (output, settings) {}, +}; + +export { id, name, version, stream_key_link, description, image_copyright, author, category, requires, ServiceIcon as icon, Service as component }; diff --git a/src/views/Publication/Services/index.js b/src/views/Publication/Services/index.js index 5b485da..ea5b133 100644 --- a/src/views/Publication/Services/index.js +++ b/src/views/Publication/Services/index.js @@ -5,6 +5,7 @@ import * as CDN77 from './CDN77'; import * as Core from './Core'; import * as DaCast from './DaCast'; import * as DASH from './DASH'; +import * as DLive from './DLive'; import * as Facebook from './Facebook'; import * as Framebuffer from './Framebuffer'; import * as HLS from './HLS'; @@ -20,6 +21,7 @@ import * as Restream from './Restream'; import * as RTMP from './RTMP'; import * as RTSP from './RTSP'; import * as SRT from './SRT'; +import * as Trovo from './Trovo'; import * as Telegram from './Telegram'; import * as Twitch from './Twitch'; import * as Twitter from './Twitter'; @@ -73,6 +75,8 @@ registry.Register(Vimeo); registry.Register(Restream); registry.Register(Telegram); registry.Register(Linkedin); +registry.Register(DLive); +registry.Register(Trovo); registry.Register(Livespotting); registry.Register(Azure); registry.Register(Brightcove); diff --git a/src/views/Publication/Services/logos/bitmovin.svg b/src/views/Publication/Services/logos/bitmovin.svg deleted file mode 100644 index 471e33a..0000000 --- a/src/views/Publication/Services/logos/bitmovin.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/views/Publication/Services/logos/dlive.svg b/src/views/Publication/Services/logos/dlive.svg new file mode 100644 index 0000000..297f2f6 --- /dev/null +++ b/src/views/Publication/Services/logos/dlive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/Publication/Services/logos/trovo.svg b/src/views/Publication/Services/logos/trovo.svg new file mode 100644 index 0000000..946364c --- /dev/null +++ b/src/views/Publication/Services/logos/trovo.svg @@ -0,0 +1 @@ + \ No newline at end of file