Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ropelletier/a8609f00532d69acf691ba9d6b1ef3d2 to your computer and use it in GitHub Desktop.
Save ropelletier/a8609f00532d69acf691ba9d6b1ef3d2 to your computer and use it in GitHub Desktop.
#!/bin/bash
ffmpeg -rtsp_transport tcp \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/102 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/202 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/302 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/402 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/502 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/602 \
-filter_complex "
nullsrc=size=1920x1080 [base];
[0:v] setpts=PTS-STARTPTS, scale=w=960:h=360 [upperleft];
[1:v] setpts=PTS-STARTPTS, scale=w=960:h=360 [upperright];
[2:v] setpts=PTS-STARTPTS, scale=w=960:h=360 [middleleft];
[3:v] setpts=PTS-STARTPTS, scale=w=960:h=360 [middleright];
[4:v] setpts=PTS-STARTPTS, scale=w=960:h=360 [lowerleft];
[5:v] setpts=PTS-STARTPTS, scale=w=960:h=360 [lowerright];
[base][upperleft] overlay=x=0:y=0 [tmp1];
[tmp1][upperright] overlay=x=960:y=0 [tmp2];
[tmp2][middleleft] overlay=x=0:y=360 [tmp3];
[tmp3][middleright] overlay=x=960:y=360 [tmp4];
[tmp4][lowerleft] overlay=x=0:y=720 [tmp5];
[tmp5][lowerright] overlay=x=960:y=720
" \
-c:v rawvideo -f nut - | mpv -
#!/bin/bash
# 8 channel input, 4 rows and 2 columns layout
ffmpeg -rtsp_transport tcp \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/102 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/202 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/302 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/402 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/502 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/602 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/702 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3/Streaming/Channels/802 \
-filter_complex "
nullsrc=size=1920x1080 [base];
[0:v] setpts=PTS-STARTPTS, scale=w=960:h=270 [upperleft];
[1:v] setpts=PTS-STARTPTS, scale=w=960:h=270 [upperright];
[2:v] setpts=PTS-STARTPTS, scale=w=960:h=270 [middleleft];
[3:v] setpts=PTS-STARTPTS, scale=w=960:h=270 [middleright];
[4:v] setpts=PTS-STARTPTS, scale=w=960:h=270 [lowerleft];
[5:v] setpts=PTS-STARTPTS, scale=w=960:h=270 [lowerright];
[6:v] setpts=PTS-STARTPTS, scale=w=960:h=270 [centerleft];
[7:v] setpts=PTS-STARTPTS, scale=w=960:h=270 [centerright];
[base][upperleft] overlay=x=0:y=0 [tmp1];
[tmp1][upperright] overlay=x=960:y=0 [tmp2];
[tmp2][middleleft] overlay=x=0:y=270 [tmp3];
[tmp3][middleright] overlay=x=960:y=270 [tmp4];
[tmp4][lowerleft] overlay=x=0:y=540 [tmp5];
[tmp5][lowerright] overlay=x=960:y=540 [tmp6];
[tmp6][centerleft] overlay=x=0:y=810 [tmp7];
[tmp7][centerright] overlay=x=960:y=810
" \
-c:v rawvideo -f nut - | mpv -
ffmpeg -rtsp_transport tcp \
-i rtsp://smartiptv:PASSWORD@192.168.2.3:6911/Streaming/Channels/101 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3:6911/Streaming/Channels/201 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3:6911/Streaming/Channels/301 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3:6911/Streaming/Channels/401 \
-filter_complex "
nullsrc=size=1920x1080 [base];
[0:v] setpts=PTS-STARTPTS, scale=960x540 [upperleft];
[1:v] setpts=PTS-STARTPTS, scale=960x540 [upperright];
[2:v] setpts=PTS-STARTPTS, scale=960x540 [lowerleft];
[3:v] setpts=PTS-STARTPTS, scale=960x540 [lowerright];
[base][upperleft] overlay=shortest=1 [tmp1];
[tmp1][upperright] overlay=shortest=1:x=960 [tmp2];
[tmp2][lowerleft] overlay=shortest=1:y=540 [tmp3];
[tmp3][lowerright] overlay=shortest=1:x=960:y=540
" \
-c:v libx264 -preset superfast -crf 18 -f matroska - | ffplay -
ffmpeg -rtsp_transport tcp \
-i rtsp://smartiptv:PASSWORD@192.168.2.3:6911/Streaming/Channels/102 \ # use substream with lower resolution
-i rtsp://smartiptv:PASSWORD@192.168.2.3:6911/Streaming/Channels/202 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3:6911/Streaming/Channels/302 \
-i rtsp://smartiptv:PASSWORD@192.168.2.3:6911/Streaming/Channels/402 \
-filter_complex "
nullsrc=size=1920x1080 [base];
[0:v] setpts=PTS-STARTPTS, scale=960x540 [upperleft];
[1:v] setpts=PTS-STARTPTS, scale=960x540 [upperright];
[2:v] setpts=PTS-STARTPTS, scale=960x540 [lowerleft];
[3:v] setpts=PTS-STARTPTS, scale=960x540 [lowerright];
[base][upperleft] overlay=shortest=1 [tmp1];
[tmp1][upperright] overlay=shortest=1:x=960 [tmp2];
[tmp2][lowerleft] overlay=shortest=1:y=540 [tmp3];
[tmp3][lowerright] overlay=shortest=1:x=960:y=540
" \
-c:v libx265 \ # check output and see what format the camera use, see `ffmpeg -encoders | grep V`
-preset superfast -crf 18 -f matroska - | ffplay -
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment