ffmpeg: webcam, vídeos ou câmera RTSP em mosaico

Publicado por Fabio em 06/10/2022

[ Hits: 4.450 ]

 


ffmpeg: webcam, vídeos ou câmera RTSP em mosaico



Antes de tudo, o play de vários vídeos foi feito no Ubuntu 22.04.1 LTS.

Tem que ter o ffmpeg instalado:

sudo apt-get install ffmpeg

Estarei colocando aqui 3 exemplos de play que podem ser colocados em um script e executados com permissão de execução.

Exemplo 1º:

Supondo que você tem 4 vídeos no formato MKV, onde cada vídeo tem os seguintes nomes: 01.mkv, 02.mkv, 03.mkv e 04.mkv.

Salve em um arquivo com o nome play-video.sh o seguinte:

###############################################################
ffmpeg
   -i 01.mkv
   -i 02.mkv
   -i 03.mkv
   -i 04.mkv
  -filter_complex "
      [0:v] setpts=PTS-STARTPTS, scale=qvga [a0];
      [1:v] setpts=PTS-STARTPTS, scale=qvga [a1];
      [2:v] setpts=PTS-STARTPTS, scale=qvga [a2];
      [3:v] setpts=PTS-STARTPTS, scale=qvga [a3];
      [a0][a1][a2][a3]xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0[out]
      "
    -map "[out]"
    -c:v libx264 -t '30' -f matroska output_col_2x2.mkv
###############################################################

Dê permissão de execução:

sudo chmod 777 play-video.sh

Execute o script:

./play-video.sh

Exemplo 2º:

Supondo que você tem 2 webcam onde cada uma está nos seguintes devices:

/dev/video0
/dev/video1

Salve em um arquivo com o nome play-webcam.sh o seguinte:

###############################################################
ffmpeg 
   -i /dev/video0 
   -i /dev/video1 
  -filter_complex " 
      [0:v] setpts=PTS-STARTPTS, scale=qvga [a0]; 
      [1:v] setpts=PTS-STARTPTS, scale=qvga [a1]; 
      [a0][a1]xstack=inputs=2:layout=0_0|0_h0|w0_0|w0_h0[out] 
      " 
      -map "[out]" 
	-c:v libx264 -preset superfast -crf 18 -f matroska - | ffplay -
###############################################################

Dê permissão de de execução:

sudo chmod 777 play-webcam.sh

Execute o script:

./play-webcam.sh

Exemplo 3º:

Supondo que você tem 4 câmeras com a seguinte configuração:

IP = 192.168.1.116
Porta = 554
Protocolo = rtsp
User = admin
Password = "nao tem senha, esta em branco"
Canal = 1, 2, 3, 4

Salve em um arquivo com o nome play-rtsp.sh o seguinte:

###############################################################
ffmpeg -rtsp_transport tcp 
    -i "rtsp://192.168.1.116:554/user=admin&password=&channel=1&stream=0.sdp" 
    -i "rtsp://192.168.1.116:554/user=admin&password=&channel=2&stream=0.sdp"
    -i "rtsp://192.168.1.116:554/user=admin&password=&channel=3&stream=0.sdp"
    -i "rtsp://192.168.1.116:554/user=admin&password=&channel=4&stream=0.sdp"
    -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 -
###############################################################

Dê permissão de execução:

sudo chmod 777 play-rtsp.sh

Execute o script:

./play-rtsp.sh

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Uma maneira fácil de fazer a cópia diretórios

Atalhos do elementary OS

Monitorando tráfego da interface de rede em três comandos

O comando nice

Detecção de Sistema Operacional com NMAP

  

Comentários
[1] Comentário enviado por maurixnovatrento em 23/10/2022 - 13:45h


o ffmpeg é bem completo mesmo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts