voctomix

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
voctomix [2017/07/14 10:29] derpetervoctomix [2020/12/06 22:18] (current) andi
Line 4: Line 4:
 name : Voctomix  name : Voctomix 
 project-owner : Mazdermind project-owner : Mazdermind
-git-url : https://github.com/voc/voctomix+git-url_url : https://github.com/voc/voctomix
 project-description :  project-description : 
-project-owner :  +project-members :  
-project-member :  +project-status_ : running
-project-status : running+
 ---- ----
-Voctomix ist ein Softwaremischer der es uns erlaubt auf Konferenzen HD-Recording und -Streaming anbieten zu können.  Voctomix wird aktuell von [[people:Mazdermind]] fürs VOC entwicklet und ist [[https://github.com/timvideos/gst-switch|gst-switch]]'s kleine Schwester. Sie lebt im [[intern:git|Git]] unter git@c3voc.de:voctomix und read-only [[https://github.com/voc/voctomix|auf Github]].+Voctomix ist ein Softwaremischer der es uns erlaubt auf Konferenzen HD-Recording und -Streaming anbieten zu können.  Voctomix wird aktuell von [[people:Mazdermind]] fürs VOC entwickelt und ist [[https://github.com/timvideos/gst-switch|gst-switch]]'s kleine Schwester. Sie lebt im [[intern:git|Git]] unter git@c3voc.de:voctomix und read-only [[https://github.com/voc/voctomix|auf Github]].
  
 * [[https://media.ccc.de/v/froscon2016-1696-voctomix|Voctomix Lecture at FROSCON12]] by Mazdermind * [[https://media.ccc.de/v/froscon2016-1696-voctomix|Voctomix Lecture at FROSCON12]] by Mazdermind
Line 32: Line 31:
   * [[voctomix:voctopanel]]   * [[voctomix:voctopanel]]
   * [[voctomix:voctomidi]]   * [[voctomix:voctomidi]]
 +
 +** related projects**
 +  * [[https://github.com/crossan007/PiCamFleetMapper | PiCamFleetMapper]]
 +  * [[https://github.com/CarlFK/voctomix-outcasts | vocotmix-outcasts]]
 +
  
 </WRAP> </WRAP>
 </WRAP> </WRAP>
  
-== Installation on VOC-Hardware +== Installation on VOC hardware 
-The Installation on VOC Machines (Encoder-Cubes and Mixer-Notebooks) is managed through [[Ansible]]. The Ansible Deployment creates the following Things on the Encoder-Cubes+The installation on VOC machines (encoder cubes and mixer notebooks) is managed through [[Ansible]]. The Ansible deployment creates the following things on the encoder-cubes
-  * Source of last Release in ''/opt/voctomix/release'' +  * Source of last release in ''/opt/voctomix/release'' 
-  * Config-File for Voctocore in ''/opt/voctomix/voctocore-config.ini'' +  * Config file for voctocore in ''/opt/voctomix/voctocore-config.ini'' 
-  * Scripts to source/sink/playout Video-Content into/out of the Voctocore in ''/opt/voctomix/scripts'' +  * Scripts to source/sink/playout videocontent into/out of the voctocore in ''/opt/voctomix/scripts'' 
-  * Systemd-Units in ''/etc/systemd/system/*.service'' +  * Systemd units in ''/etc/systemd/system/*.service'' 
-  * A System-Status-Script in ''/usr/bin/voctomix-status''+  * A system status script in ''/usr/bin/voctomix-status''
  
-Ansible always resetd the Setup to a default configuration, where all SDI-Ports are used as Campera-INs, no Playout is active and all Supporting-Scripts are enabled. Ansible generated the following Systemd-Units for Voctomix:+Ansible always resets the setup to a default configuration, where all SDI-ports are used as camera INs, no playout is active and all supporting scripts are enabled. Ansible generated the following Systemd units for Voctomix:
 ^ Systemd-Unit ^ Description ^ ^ Systemd-Unit ^ Description ^
-| bgloop-source.service | Source the Background-Loop from ''/opt/voc/share/bgloop.ts''+| music-source.service | Source Music from ''/opt/voc/share/pause-music/'' into the pause loop 
-| decklink-source-[NAME].service | Such a Unit is generated for each Decklink-Input-Device present at the time of the ansible-run. Source Video- and Audio from this Decklink-Input | +| pause-source.service | Source pause loop from ''/opt/voc/share/pause.ts''
-| grabber-source.service | Source Video-Input from the Epiphan Framegrabber via Ethernet | +| program-to-[NAME]-playout.service | Such a unit is generated for each Decklink output device present at the time of the ansible-run. Playout video- and audio from the program output (=what is being recorded; before the stream-blanker) to the Decklink output 
-| grabber-to-[NAME]-playout.service | Such a Unit is generated for each Decklink-Output-Device present at the time of the ansible-run. Playout Video- and Silence from the Framegrabber-Input to the Decklink-Output | +| program-to-framebuffer-playout.service | Playout video from the program output (=what is being recorded; before the stream-blanker) to the HDMI/DVI/VGA output on the mainboard 
-| grabber-to-framebuffer-playout.service | Playout Video from the Framegrabber-Input to the HDMI/DVI/VGA Output on the Mainboard | +| recording-sink.service | Record the program output to segmented .ts-files in ''/video''
-| music-source.service | Source Music from ''/opt/voc/share/pause-music/'' into the Pause-Loop +| streaming-hd-sink.service | Encode and stream the stream-blanker output to <code>rtmp://127.0.0.1:1935/stream/s{{ room_number }}_native_hd</code> 
-| pause-source.service | Souece Pause-Loop from ''/opt/voc/share/pause.ts''+| streaming-sd-sink.service | Encode and stream the stream-blanker output to <code>rtmp://127.0.0.1:1935/stream/s{{ room_number }}_native_sd</code> 
-| program-to-[NAME]-playout.service | Such a Unit is generated for each Decklink-Output-Device present at the time of the ansible-run. Playout Video- and Audio from the Program-Output (=what is being recorded; before the Stream-Blanker) to the Decklink-Output +| stream-to-[NAME]-playout.service | Such a unit is generated for each Decklink-Output-Device present at the time of the ansible-run. Playout video and audio from the stream output (=what is being streamed; after the stream-blanker) to the Decklink output 
-| program-to-framebuffer-playout.service | Playout Video from the Program-Output (=what is being recorded; before the Stream-Blanker) to the HDMI/DVI/VGA Output on the Mainboard +| stream-to-framebuffer-playout.service | Playout video from the stream output (=what is being streamed; after the stream-blanker) to the HDMI/DVI/VGA output on the mainboard |
-| recording-sink.service | Record the Program-Output to Segmented .ts-Files in ''/video''+
-| streaming-hd-sink.service | Encode and Stream the Streamblanker-Output to rtmp://127.0.0.1:1935/stream/s{{ room_number }}_native_hd | +
-| streaming-sd-sink.service | Encode and Stream the Streamblanker-Output to rtmp://127.0.0.1:1935/stream/s{{ room_number }}_native_sd | +
-| stream-to-[NAME]-playout.service | Such a Unit is generated for each Decklink-Output-Device present at the time of the ansible-run. Playout Video- and Audio from the Stream-Output (=what is being streamed; after the Stream-Blanker) to the Decklink-Output +
-| stream-to-framebuffer-playout.service | Playout Video from the Stream-Output (=what is being streamed; after the Stream-Blanker) to the HDMI/DVI/VGA Output on the Mainboard |+
 | voctocore.service | The Voctocore | | voctocore.service | The Voctocore |
  
-All Supporting Units are ''WantedBy=voctocore.service'' as well as the request ''Requires=voctocore.service'' and ''After=voctocore.service''.+All supporting units are ''WantedBy=voctocore.service'' as well as the request ''Requires=voctocore.service'' and ''After=voctocore.service''.
 This means: This means:
-  * The Supporting Units only start up when the Core has successfully started up first +  * The supporting units only start up when the core has successfully started up first 
-  * When enabled, the Supporting Units automatically start up when the Core is up +  * When enabled, the supporting units automatically start up when the core is up 
-  * The Supporting Units go down when the Core goes down+  * The supporting units go down when the core goes down
  
  
Line 73: Line 72:
 <code> <code>
 sudo systemctl restart voctocore.service sudo systemctl restart voctocore.service
 +</code>
 +
 +Stop recording at night and schedule re-start in the morning:
 +<code>
 +for i in 1 2 3 4 5 6 41 42; do echo "10.73.${i}.3"; ssh 10.73.${i}.3 'sudo systemctl stop recording-sink.service'; done
 +for i in 1 2 3 4 5 6 41 42; do echo "10.73.${i}.3"; ssh 10.73.${i}.3 'echo "sudo systemctl restart voctocore.service" | at 09:00'; done
 </code> </code>
  
Line 97: Line 102:
 </code> </code>
  
-If you leave out the enable/disable the change will be temporary and restarting the voctocore-Unit or the encoder-Cube will reset the change.+If you leave out the enable/disable the change will be temporary and restarting the voctocore unit or the encoder cube will reset the change.
  
-Similar to enable Playout to the Framebuffer, you can do:+Similar to enable playout to the Framebuffer, you can do:
 <code> <code>
 sudo systemctl start stream-to-framebuffer-playout.service                                                                                                        sudo systemctl enable stream-to-framebuffer-playout.service sudo systemctl start stream-to-framebuffer-playout.service                                                                                                        sudo systemctl enable stream-to-framebuffer-playout.service
Line 106: Line 111:
 Leaving out the enable/disable the change will also here be temporary. Leaving out the enable/disable the change will also here be temporary.
  
-Playout to the Framebuffer can always be interrupted by funny tty0 printouts at any time :) +Playout to the framebuffer can always be interrupted by funny tty0 printouts at any time :) 
-Also think about whether you want to playout the Program-Output (before the Streamblanker) or the Streaming-Output (after the Streamblanker). +Also think about whether you want to playout the program output (before the stream-blanker) or the streaming output (after the stream-blanker).
- +
-Creating a background for the supersource from an image file +
- +
-  ffmpeg -loop 1 -i background.png -f s16le -i /dev/zero -ar 48000 -ac 1 -r 25 -t 00:01:00 -s 1920x1080 -c:v mpeg2video -q:v 0 -aspect 16:9 -f mpegts bgloop.ts +
- +
-Creating a background for the supersource from a MP4 file in correct resolution +
- +
-  ffmpeg -i bgloop.mp4 -filter:v fps=25 -c:v mpeg2video -q:v 0 -aspect 16:9 -f mpegts bgloop.ts +
  
  
 == Debugging == Debugging
-To see the Output of the various Units, you can use a command like this:+To see the output of the various units, you can use a command like this:
 <code> <code>
 journalctl -au decklink-source-decklink-sdi-2.service   journalctl -au decklink-source-decklink-sdi-2.service  
Line 127: Line 123:
 Alternative version: Alternative version:
   journalctl -a -f -u  grabber-source.service   journalctl -a -f -u  grabber-source.service
 +
 +
 == Control Commands == Control Commands
-Some Useful Control-Commands when you only have a Shell (see also [[https://github.com/voc/voctomix/tree/master/example-scripts/control-server|example-scripts/control-server]]:+Some useful control commands when you only have a shell (see also [[https://github.com/voc/voctomix/tree/master/example-scripts/control-server|example-scripts/control-server]]:
 For more details see https://github.com/voc/voctomix/blob/voctopanel/voctocore/lib/commands.py For more details see https://github.com/voc/voctomix/blob/voctopanel/voctocore/lib/commands.py
 <code> <code>
  • voctomix.1500020993.txt.gz
  • Last modified: 2017/07/14 10:29
  • by derpeter