multiview

Browser, können oft maximal 6 Verbindungen – kann man bei Firefox via about:config Option network.http.max-persistent-connections-per-server entsprechend hochsetzen.

multiview-monitor

mit i3 und mpv bei der froscon16

~/.config/mpv/mpv.conf

hwdec=auto

start-streams-vertical.sh

#!/bin/bash
export DISPLAY=:0
i3-msg workspace mpv

mpv --no-audio --really-quiet rtmp://10.73.1.3:1935/stream/s1_native_hd &
P1=$?
i3-msg splith
sleep 3
mpv --no-audio --really-quiet rtmp://10.73.2.3:1935/stream/s2_native_hd &
P2=$?
sleep 3
mpv --no-audio --really-quiet rtmp://10.73.3.3:1935/stream/s3_native_hd &
P3=$?
sleep 3
mpv --no-audio --really-quiet rtmp://10.73.4.3:1935/stream/s4_native_hd &
P4=$?
sleep 10

i3-msg focus parent
sleep 3
i3-msg splitv
sleep 3

mpv --no-audio --really-quiet rtmp://10.73.5.3:1935/stream/s5_native_hd &
P5=$?
sleep 10
i3-msg splith
mpv --no-audio --really-quiet rtmp://10.73.6.3:1935/stream/s6_native_hd &
P6=$?
sleep 10
mpv --no-audio --really-quiet rtmp://10.73.7.3:1935/stream/s7_native_hd &
P7=$?
read

kill -9 $P1
kill -9 $P2
kill -9 $P3
kill -9 $P4
kill -9 $P5
kill -9 $P6
kill -9 $P7
export DISPLAY=:0 
chromium --new-window https://streaming.media.ccc.de/foss4g-2016/schedule 
chromium --new-window  --disable-web-security --user-data-dir index.html

(Chromium wegen Hardwarebeschleunigung, index.html ist modifizierte version von voc.marudor.de bei der die zweite Hälfte der Streams von live.dus.c3voc.de gezogen wird um das 6er connection limit pro Server zu umgehen.)

Zwischen i3 workspaces hin und her schalten

while /bin/true; do for i in 1 3; do i3-msg workspace $i; sleep 10; done; done 

mit ffmpeg

#/bin/bash
o='rtmp://127.0.0.1/stream/loudness'

for i in s{1,2,3,4,5,6,41,42}
do
	if [[ ! -e /tmp/fifo${i} ]];
	then
		mkfifo /tmp/fifo${i};
	fi

	ffmpeg -hide_banner -v warning -y \
		-i "http://cdn.c3voc.de/${i}_native_sd.webm" \
		-filter_complex "nullsrc=size=640x840 [base];
       			[0:v] scale=640:360, fps=15 [scaled];
			[0:a] ebur128=video=1:meter=18:size=640x480 [ebur][a1];
			[ebur] fps=15 [v1];
			[a1] aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo [audio];
			[base][v1] overlay=shortest=1 [tmp1];
			[tmp1][scaled] overlay=shortest=1:y=480 [ov];
			[ov] drawtext=fontcolor=white:x=200:y=50:fontsize=128:fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf:text=${i} [out]" \
		-map "[out]" -c:v rawvideo -pix_fmt yuv420p \
		-map "[audio]" -c:a pcm_s16le \
		-f matroska "/tmp/fifo${i}" &
	#echo $! > /tmp/fifo${i}.pid	
done

ffmpeg -hide_banner -v warning -y -fflags +genpts -flags +global_header \
	-thread_queue_size 1024 -i /tmp/fifos1 \
	-thread_queue_size 1024 -i /tmp/fifos2 \
	-thread_queue_size 1024 -i /tmp/fifos3 \
	-thread_queue_size 1024 -i /tmp/fifos4 \
	-thread_queue_size 1024 -i /tmp/fifos5 \
	-thread_queue_size 1024 -i /tmp/fifos6 \
	-thread_queue_size 1024 -i /tmp/fifos41 \
	-thread_queue_size 1024 -i /tmp/fifos42 \
	-filter_complex "
		[0:a][1:a][2:a][3:a][4:a][5:a][6:a][7:a] amix=inputs=8 [audio];
		nullsrc=size=2560x1680 [base];
		[base][0:v] overlay=shortest=1 [tmp1];
		[tmp1][1:v] overlay=shortest=1:x=640 [tmp2];
		[tmp2][2:v] overlay=shortest=1:x=1280 [tmp3];
		[tmp3][3:v] overlay=shortest=1:x=1920 [tmp4];
		[tmp4][4:v] overlay=shortest=1:x=0:y=840 [tmp5];
		[tmp5][5:v] overlay=shortest=1:x=640:y=840 [tmp6];
		[tmp6][6:v] overlay=shortest=1:x=1280:y=840 [tmp7];
		[tmp7][7:v] overlay=shortest=1:x=1920:y=840, fps=15 [out]" \
	-map "[out]" -s 1280x800 \
	-c:v libx264 \
	-maxrate:v:0 2000k -bufsize:v:0 8192k -crf:0 21 \
	-pix_fmt:0 yuv420p -profile:v:0 main -g:v:0 15 \
	-preset:v:0 veryfast \
	-map "[audio]" \
	-c:a aac -b:a 96k -ar 44100 \
	-y -f flv ${o}

killall ffmpeg
exit
2020/12/06 17:22 · andi
  • multiview.txt
  • Last modified: 2021/12/23 17:30
  • by andi