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
Last revisionBoth sides next revision
voctomix [2016/11/06 14:38] derpetervoctomix [2019/09/19 23:04] – remove obsolete information andi
Line 1: Line 1:
 = Voctomix = Voctomix
  
-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]].+---- dataentry project ---- 
 +name : Voctomix  
 +project-owner : Mazdermind 
 +git-url : https://github.com/voc/voctomix 
 +project-description :  
 +project-owner :  
 +project-member :  
 +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 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]].
  
-== Doku +* [[https://media.ccc.de/v/froscon2016-1696-voctomix|Voctomix Lecture at FROSCON12]] by Mazdermind 
-Kann auf Github angeschaut werden:+  * [[http://slides.com/mazdermind/froscon12-voctomix|slides]] 
 + 
 +== Resources 
 +<WRAP group> 
 +<WRAP half column> 
 + 
 +**Documentation**
   * [[https://github.com/voc/voctomix/blob/master/README.md|Installation]]   * [[https://github.com/voc/voctomix/blob/master/README.md|Installation]]
   * [[https://github.com/voc/voctomix/blob/master/README_DOCKER.md|"Installation" mit Docker]]   * [[https://github.com/voc/voctomix/blob/master/README_DOCKER.md|"Installation" mit Docker]]
   * [[https://github.com/voc/voctomix/blob/master/voctocore/README.md|Voctocore, Protokoll und Ports]]   * [[https://github.com/voc/voctomix/blob/master/voctocore/README.md|Voctocore, Protokoll und Ports]]
   * [[https://github.com/voc/voctomix/blob/master/voctogui/README.md|Voctogui]]   * [[https://github.com/voc/voctomix/blob/master/voctogui/README.md|Voctogui]]
 +  * [[software:voctomix-hardware-examples]]
 +
 +</WRAP>
 +<WRAP half column>
 +**Subprojects**
 +  * [[projects:tallycom]]
 +  * [[voctomix:voctopanel]]
 +  * [[voctomix:voctomidi]]
 +
 +** related projects**
 +  * [[https://github.com/crossan007/PiCamFleetMapper | PiCamFleetMapper]]
 +  * [[https://github.com/CarlFK/voctomix-outcasts | vocotmix-outcasts]]
 +
 +
 +</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 47: Line 73:
 <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 71: Line 103:
 </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 80: Line 112:
 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 101: Line 124:
 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
 <code> <code>
 echo set_audio cam1 | nc -q0 localhost 9999 echo set_audio cam1 | nc -q0 localhost 9999
Line 124: Line 150:
 </code> </code>
  
-== Hacking +here you can see the commands together with replays from the core
-if you want to interact with voctocore here are some commands and the replays from the core+
-For more details see https://github.com/voc/voctomix/blob/voctopanel/voctocore/lib/commands.py+
  
 <code> <code>
Line 149: Line 173:
 <= composite_mode side_by_side_equal <= composite_mode side_by_side_equal
 </code> </code>
- 
- 
  • voctomix.txt
  • Last modified: 2020/12/06 22:18
  • by andi