prototype of live channels
No description provided.
Comments (76)
-
reporter -
reporter see #14: add a BroadcastController, BroadcastService, BroadcastRepository, BroadcastRequest and Broadcast
→ <<cset f62b733c6373>>
-
reporter see #14: persist the Broadcast
→ <<cset 1ee68292af80>>
-
reporter When a broadcast is created, a message should be sent to RabbitMQ in order to have the Wowza modules pick it up and create the related stream in Wowza.
-
reporter The kind of queue we're looking for is fanout (Publisher/Subscriber message): https://www.rabbitmq.com/tutorials/tutorial-three-python.html
-
reporter The exchange name is going to be called helixware.fanout as it appears also to be the best practice (according to the default exchanges available with a fresh install of RabbitMQ).
-
reporter see #14: add initial support for sending out Broadcasts to AMQP
→ <<cset 86ee97c05c7b>>
-
reporter see #14: specify which templating message to use; make User serializable
→ <<cset 86a81c260f26>>
-
reporter see #14: make models serializable to be sent via AMQP; prepare a BroadcastMessage to reduce the amount of data being sent via AMQP
→ <<cset 21259a6f4df1>>
-
reporter The following command can be used to create a broadcast:
curl -X POST http://admin:password@cloud.helixware.localhost/4/broadcast \ -d '{"path":"test006", "title":"test title", "username": "admin", "loop": true}' \ -H "Content-Type: application/json"
The expected response is:
{ "id":20, "title":"test title", "description":"", "relativePath":"test006", "ratio":null, "isLive":true, "applicationRelativePath":"System/admin/test006", "username":"admin", "account":"System" }
The message is being sent to AMQP, we can move now onto the Wowza module to see to get this message and create an (empty) stream.
-
reporter The broadcast should have a collection of clips each representing a different bitrate of the same broadcast. For the time being we'll work with the path provided by the broadcast instance.
-
reporter see #14: prepare for Broadcast clips
→ <<cset 4ad73ee78919>>
-
reporter see #14: add a Messaging configuration to the Wowza Module and a listener for Broadcast messages
→ <<cset 4e5b2db7a4cd>>
-
reporter see #14: receiving broadcasts, need to use the BroadcastMessage in order to avoid depending on Hibernate
→ <<cset bb4b9be80c0e>>
-
reporter see #14: the Wowza module now receives the broadcasts
→ <<cset e5198094b411>>
-
reporter A preliminary communication test proved succesful:
BroadcastListener: I just received a broadcast :: test009
-
reporter Now we want a
BroadcastMessageService
to handle the incomingBroadcastMessage
and create a stream (and related thread) accordingly. Future message related to this broadcast should be handled in order to set the current stream. -
reporter see #14: read the exchange and the queue from the configuration, providing default values
→ <<cset 5d72f9095278>>
-
reporter see #14: prepare for the broadcast creation methods
→ <<cset ea7363543a54>>
-
reporter see #14: add logging to check when a broadcast thread is created
→ <<cset 074f0334d9e2>>
-
reporter Posting the broadcast JSON now yields the following in Wowza (which is a success):
PublisherService: A publisher has been created [ name :: _definst_ ][ stream :: System/admin/test011 ] BroadcastMessageService: A broadcast thread has been created [ path :: System/admin/test011 ]
-
reporter - changed status to open
(change status to open)
-
reporter see #14: prepare for a web method to queue an asset
→ <<cset 77de9ea57d3e>>
-
reporter see #14: introduce mq-based logging
→ <<cset d14a4159495e>>
-
reporter see #14: receive logs in Web
→ <<cset a719c6ffd548>>
-
reporter see #14: define the parameters of the queue method
→ <<cset 13ca815e96fd>>
-
reporter see #14: add a new Commands module to support sending/receiving commands via AMQP
→ <<cset b7e7b6f8511d>>
-
reporter see #14: implement the GetBroadcasts command
→ <<cset 79ba3139fe46>>
-
reporter see #14: listen for GetBroadcasts command in Web instances and reply accordingly
→ <<cset 2925df68b130>>
-
reporter see #14: ask for existing Broadcasts when Wowza starts
→ <<cset 4970d6a9be9a>>
-
reporter see #14: have listAll return a List instead of an iterable
→ <<cset e5903f1eeb1f>>
-
reporter see #14: getting the list of Broadcasts
→ <<cset 7c99db7117a6>>
-
reporter see #14: remove unused class
→ <<cset ce0471176fa1>>
-
reporter see #14: receiving the list of Broadcasts
→ <<cset 7214f48cd2fd>>
-
reporter see #14: reduce logging
→ <<cset dcef3a84271d>>
-
reporter see #14: avoid null exceptions when no server is available to respond to a broadcast request
→ <<cset 320b5d440c75>>
-
reporter see #14: handle null responses
→ <<cset 5d80bf9c11b7>>
-
reporter see #14: adding the list of assets bound to a broadcast
→ <<cset 22b118166496>>
-
reporter see #14: use of Optional<Asset> instead of Asset and use of checkAccess
→ <<cset 37a7efa74834>>
-
reporter see #14: add ManyToMany relationship between Broadcasts to Assets
→ <<cset fa390c236acf>>
-
reporter see #14: avoid the encoder from loading the Web components
→ <<cset aeaf957e27c9>>
-
reporter see #14: create the QueueAssetCommand
→ <<cset 2148945d76b8>>
-
reporter see #14: create the QueueAssetCommandExecutor
→ <<cset 7abadf3c4513>>
-
reporter This is the list of tests that we need to perform:
- Start Channel 1-3 (for SETTOPBOX: MPEG-TS and for OTT/VLC:MP4) via Script/URL
- Play Channels with more than 3 video on demand files in loop
- Switching Playlist of a Channel (with different video files) via Script/URL
- Re-Starting Channels
- Playing Channels with corrupt assets (broken or missing files)
- Optional: Channel(s) with Live Signal
- Optional: Simulated Networkloss/Disconnetion
- Re-Starting Playout Server
-
reporter see #14: make the RemoteLogger more similar to the Logger interface
→ <<cset 1b88718f1dc2>>
-
reporter First ever queue broadcast message received by the Wowza module:
QueueAssetCommandExecutor: QueueAssetCommand{broadcast=tv.helixware.model.Broadcast@501ae8ea, asset=io.insideout.helixware.data.model.OnDemandAsset@626b2c3d, position=-1, play=false, start=0, end=-1}
-
reporter see #14: separate the Queues; set the routing key to the command class name; bind the RabbitListener to queues according to the commands
→ <<cset fa28e1483425>>
-
reporter see #14: use the standard SLF4 logger
→ <<cset 3ff96d5fe908>>
-
reporter see #14: initial handling of Broadcast channels
→ <<cset 818aea3bcde8>>
-
reporter see #14: initial handling of Broadcast channels
→ <<cset f41e65404137>>
-
reporter see #14: allow specifying assets IDs right away
→ <<cset 949c7defc827>>
-
reporter see #14: new CreateBroadcastCommand used to notify when a Broadcast is created
→ <<cset 038bd38ba8a8>>
-
reporter see #14: catch stop events from playing clips
→ <<cset 416c60d765d3>>
-
reporter see #14: encapsulate assets linked to a Broadacst into a BroadcastItem
→ <<cset 4f26f81c862c>>
-
reporter see #14: send a broadcast with related items when it's first created
→ <<cset 02c62cf702c1>>
-
reporter see #14: remove initial prototype of Broadcast messages
→ <<cset 228eec2199fe>>
-
reporter see #14: supporting looping playlists
→ <<cset fb823865ccc9>>
-
reporter see #14: add support to play broadcast items when requested and to preload broadcasts at startup
→ <<cset ad63c9ab30fb>>
-
reporter see #14: preload broadcast items since they are serialized and passed via messaging
→ <<cset 5af18cd7d6ab>>
-
reporter see #14: prepare for the delete broadcast command
→ <<cset 541017aa4d91>>
-
reporter see #14: implement delete of broadcasts
→ <<cset 58ea67ee2fdc>>
-
reporter see #14: implement delete of broadcasts
→ <<cset 3d4c608aface>>
-
reporter see #14: add sending delete message
→ <<cset b90290f8a76c>>
-
reporter see #14: add support for a set state command that allows to restart a broadcast
→ <<cset 509f1f75492c>>
-
reporter see #14: implement the basic set state function to restart a broadcast
→ <<cset 7372d0ce1616>>
-
reporter see #14: add support for deleting a single BroadcastItem
→ <<cset 8aa6a45b75dc>>
-
reporter see #14: implement the delete broadcast item
→ <<cset 07039c1d9061>>
-
reporter see #14: implement a BroadcastState event
→ <<cset af2e775fafaa>>
-
reporter see #14: look for stuffing
→ <<cset de205f113027>>
-
reporter - changed status to on hold
Prototype has been presented. Let's put this on hold for the time being.
-
reporter see #14: switch to Log4j and update Wowza lib references to latest version
→ <<cset fad799d636d0>>
-
reporter see #14: remove Logback configurations
→ <<cset f7bb654553a7>>
-
reporter see #14: minor formatting changes
→ <<cset 47ed4f12ce7b>>
-
reporter see #14: use most recent Wowza components
→ <<cset 227159353ebc>>
-
reporter see #14: remove test line
→ <<cset 9d8ac1b686c3>>
-
reporter see #14: commit PoC broadcasts
→ <<cset 19c040362139>>
- Log in to comment
In order not to collide with the current definition of a channel, we'll talk about broadcasts.