Skip to content

Instantly share code, notes, and snippets.

@huwcbjones
Created December 5, 2019 00:21
Show Gist options
  • Save huwcbjones/94a5f69489aaeba385349d963c6fc640 to your computer and use it in GitHub Desktop.
Save huwcbjones/94a5f69489aaeba385349d963c6fc640 to your computer and use it in GitHub Desktop.
FFMPEG Streaming
# Basic Stream Command
.\ffmpeg.exe -stream_loop -1 -re -i '..\..\Darude - Sandstorm.mp4' -tune zerolatency -vcodec copy udp://224.1.1.1:30000
.\ffmpeg.exe -stream_loop -1 -re -i '..\..\Darude - Sandstorm.mp4' -tune zerolatency -filter_complex:v "split=3[out1][out2]" \
-map "[out1]" -filter-f mpegts udp://224.1.1.1:30000
# Play command
.\ffplay.exe -analyzeduration 1 -fflags -nobuffer -probesize 32 -sync ext -i udp://224.1.1.1:30000
# split 4x4
.\ffmpeg.exe -stream_loop -1 -re -i '..\..\Darude - Sandstorm.mp4' -tune zerolatency `
-filter_complex `
"[0]split=16[a][b][c][d][e][f][g][h][i][j][k][l][m][n][o][p];
[a]crop=iw/4:ih/4:0*iw/4:0*ih/4[a];
[b]crop=iw/4:ih/4:1*iw/4:0*ih/4[b];
[c]crop=iw/4:ih/4:2*iw/4:0*ih/4[c];
[d]crop=iw/4:ih/4:3*iw/4:0*ih/4[d];
[e]crop=iw/4:ih/4:0*iw/4:1*ih/4[e];
[f]crop=iw/4:ih/4:1*iw/4:1*ih/4[f];
[g]crop=iw/4:ih/4:2*iw/4:1*ih/4[g];
[h]crop=iw/4:ih/4:3*iw/4:1*ih/4[h];
[i]crop=iw/4:ih/4:0*iw/4:2*ih/4[i];
[j]crop=iw/4:ih/4:1*iw/4:2*ih/4[j];
[k]crop=iw/4:ih/4:2*iw/4:2*ih/4[k];
[l]crop=iw/4:ih/4:3*iw/4:2*ih/4[l];
[m]crop=iw/4:ih/4:0*iw/4:3*ih/4[m];
[n]crop=iw/4:ih/4:1*iw/4:3*ih/4[n];
[o]crop=iw/4:ih/4:2*iw/4:3*ih/4[o];
[p]crop=iw/4:ih/4:3*iw/4:3*ih/4[p]" `
-map '[a]' -f mpegts udp://224.1.1.1:30001 `
-map '[b]' -f mpegts udp://224.1.1.1:30002 `
-map '[c]' -f mpegts udp://224.1.1.1:30003 `
-map '[d]' -f mpegts udp://224.1.1.1:30004 `
-map '[e]' -f mpegts udp://224.1.1.1:30005 `
-map '[f]' -f mpegts udp://224.1.1.1:30006 `
-map '[g]' -f mpegts udp://224.1.1.1:30007 `
-map '[h]' -f mpegts udp://224.1.1.1:30008 `
-map '[i]' -f mpegts udp://224.1.1.1:30009 `
-map '[j]' -f mpegts udp://224.1.1.1:30010 `
-map '[k]' -f mpegts udp://224.1.1.1:30011 `
-map '[l]' -f mpegts udp://224.1.1.1:30012 `
-map '[m]' -f mpegts udp://224.1.1.1:30013 `
-map '[n]' -f mpegts udp://224.1.1.1:30014 `
-map '[o]' -f mpegts udp://224.1.1.1:30015 `
-map '[p]' -f mpegts udp://224.1.1.1:30016
# split 2x2
.\ffmpeg.exe -stream_loop -1 -re -i '..\..\Darude - Sandstorm.mp4' -tune zerolatency -r 50 `
-filter_complex `
"[0]split=4[a][b][c][d];
[a]crop=iw/2:ih/2:0*iw/2:0*ih/2[a];
[b]crop=iw/2:ih/2:1*iw/2:0*ih/2[b];
[c]crop=iw/2:ih/2:1*iw/2:1*ih/2[c];
[d]crop=iw/2:ih/2:0*iw/2:1*ih/2[d]" `
-map '[a]' -f mpegts udp://224.1.1.1:30001 `
-map '[b]' -f mpegts udp://224.1.1.1:30002 `
-map '[c]' -f mpegts udp://224.1.1.1:30003 `
-map '[d]' -f mpegts udp://224.1.1.1:30004
ffmpeg -stream_loop -1 -re -i 'input.mp4' -tune zerolatency \
-filter_complex \
"[0]split=4[a][b][c][d];
[a]crop=iw/2:ih/2:0*iw/2:0*ih/2[a];
[b]crop=iw/2:ih/2:1*iw/2:0*ih/2[b];
[c]crop=iw/2:ih/2:1*iw/2:1*ih/2[c];
[d]crop=iw/2:ih/2:0*iw/2:1*ih/2[d]" \
-map '[a]' -r 60 -f mpegts udp://224.1.1.1:30001 \
-map '[b]' -r 60 -f mpegts udp://224.1.1.1:30002 \
-map '[c]' -r 60 -f mpegts udp://224.1.1.1:30003 \
-map '[d]' -r 60 -f mpegts udp://224.1.1.1:30004
.\ffmpeg.exe -stream_loop -1 -re -i '..\..\Darude - Sandstorm.mp4' -tune zerolatency -r 50 `
-filter_complex `
"[0]split=4[a][b][c][d];
[a]crop=iw/2:ih/2:0*iw/2:0*ih/2[a];
[b]crop=iw/2:ih/2:1*iw/2:0*ih/2[b];
[c]crop=iw/2:ih/2:0*iw/2:1*ih/2[c];
[d]crop=iw/2:ih/2:1*iw/2:1*ih/2[d]" `
-map '[a]' -f mpegts udp://224.1.1.1:30001 `
-map '[b]' -f mpegts udp://224.1.1.1:30002 `
-map '[d]' -f mpegts udp://224.1.1.1:30003 `
-map '[c]' -f mpegts udp://224.1.1.1:30004
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment