반응형

FFmpeg를 사용하여 하나의 동영상 파일을 다중 RTSP 스트리밍하는 방법을 다룹니다.

FFmpeg를 사용하여 하나의 비디오 파일를 입력으로 8개의 RTSP URL을 생성하여  RTSP 스트리밍하는 테스트를 해본 결과입니다.



2020. 10. 10  최초작성

2024. 4. 6  변경된 프로그램 반영 




FFmpeg를 사용하여 하나의 동영상 파일을 다중 RTSP 스트리밍하기

https://youtu.be/vvZjst7cAlQ

 

1. 아래 링크에서 mediamtx windows 버전( mediamtx_v1.6.0_windows_amd64.zip )을 다운로드하여 적당한 곳에 압축을 풀고 mediamtx.exe를 실행합니다. 접속을 허용하냐고 물어보면 예를 클릭합니다.

 

https://github.com/bluenviron/mediamtx/releases 



다음처럼 실행됩니다.

 



 

2. 아래 링크에서 윈도우 버전 ffmpeg-release-full.7z를 다운로드합니다.

https://www.gyan.dev/ffmpeg/builds/ 

 

압축을 풀어 ffmpeg-7.0-full_build 폴더를 ffmpeg라고 이름을 바꿔서  c:\에 복사해두고 진행합니다.  폴더 이름 중 7.0 부분은 바뀔 수 있습니다.

 



3. 현재 PC의 IP주소를 확인합니다.

 

윈도우 키 + R을 누른 후 cmd 엔터를 눌러 명령 프롬프트를 실행합니다.

 



ipconfig를 입력후 엔터를 눌러 실행합니다. 다음처럼 기본 게이트웨이가 출력되는 항목에 있는 IPv4 주소를 사용합니다. 

 



3. ffmpeg.exe로 동영상을 스트리밍합니다. 

 

다음 위치에 동영상 파일을 복사해둡니다. 여기에선 cup.mp4를 사용합니다. 

 

C:\Users\사용자이름

 

https://github.com/webnautes/nudapeu/blob/master/cup.mp4

 




4. 명령 프롬프트에서 다음처럼 실행하여 스트리밍을 시작합니다. 

하나의 동영상으로 하나의 rtsp 스트리밍을 하는 경우입니다. 

 

rtsp 주소는  rtsp://192.168.45.245:8554/live1가 됩니다. IP 주소는 앞에서 찾은 현재  PC의 IP로 변경하세요.  

 

C:\ffmpeg\bin\ffmpeg -re -stream_loop -1 -i cup.mp4  -map 0:v -c:v libx264 -f rtsp rtsp://192.168.45.245:8554/live1



실행하면 다음처럼 보입니다.

 



5. VLC(https://www.videolan.org/vlc/index.ko.html )  설치후 명령 프롬프트에서 다음처럼 실행하여 스트리밍된 영상을 볼 수 있습니다.  IP 주소는 앞에서 찾은 현재  PC의 IP로 변경하세요.

 

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live1



다음처럼 실행됩니다.

 




6. 다음처럼 하나의 cup.mp4 동영상 파일을 가지고 8개의 rtsp URL을 생성합니다.  IP 주소는 앞에서 찾은 현재  PC의 IP로 변경하세요.



이 방법을 사용시 문제점은 CPU 사용률이 높은 것입니다. cup.mp4 640x480 영상 기준으로 8개의 rtsp 스트리밍시 CPU를 80%  이상 점유합니다.

 

C:\ffmpeg\bin\ffmpeg  -re -stream_loop -1 -i cup.mp4  -map 0:v -c:v libx264 -f rtsp rtsp://192.168.45.245:8554/live1  -map 0:v -c:v libx264 -f rtsp rtsp://192.168.45.245:8554/live2   -map 0:v -c:v libx264 -f rtsp rtsp://192.168.45.245:8554/live3  -map 0:v -c:v libx264 -f rtsp rtsp://192.168.45.245:8554/live4 -map 0:v -c:v libx264 -f rtsp rtsp://192.168.45.245:8554/live5  -map 0:v -c:v libx264 -f rtsp rtsp://192.168.45.245:8554/live6   -map 0:v -c:v libx264 -f rtsp rtsp://192.168.45.245:8554/live7  -map 0:v -c:v libx264 -f rtsp rtsp://192.168.45.245:8554/live8




7. 다음처럼 8개의 영상을 스트리밍한 결과를 볼 수 있습니다. 

사용한 cup.mp4는 640x480 영상으로 네트워크 상태에 따라 스트리밍된 8개의 영상중 일부가 잠시 깨지거나 딜레이가 생기기도합니다. 

 

ffmpeg 옵션을 최적화할 필요가 있어보입니다. 

 

사실 하나의 URL을 vlc를 사용하여 여러 번 볼 수도 있지만 본 포스팅의 목적은 여러개의 RTSP URL을 만들어 보는 것입니다. 

 

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live1

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live2

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live3

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live4

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live5

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live6

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live7

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live8



실행 결과는 다음 유튜브 영상에서 확인하세요.

 

FFmpeg를 사용하여 하나의 동영상 파일을 다중 RTSP 스트리밍하기

https://youtu.be/vvZjst7cAlQ 





 

 

8. 엔비디아 하드웨어 엔코더 h264_nvenc를 사용하면 제약(?) 때문에 스트리밍 3개까지만 사용가능한 듯합니다.  

4개까지 실행해봤습니다.  IP 주소는 앞에서 찾은 현재  PC의 IP로 변경하세요.



CPU 사용률이 낮은 대신 많은 개수의 RTSP 스트리밍을 할 수 없는 단점이 있습니다. 



C:\ffmpeg\bin\ffmpeg  -re -stream_loop -1 -i cup.mp4  -map 0:v -c:v h264_nvenc  -f rtsp rtsp://192.168.45.245:8554/live1  -map 0:v -c:v h264_nvenc  -f rtsp rtsp://192.168.45.245:8554/live2   -map 0:v -c:v h264_nvenc  -f rtsp rtsp://192.168.45.245:8554/live3 -map 0:v -c:v h264_nvenc  -f rtsp rtsp://192.168.45.245:8554/live4




9. 다음처럼 하면 4개의 영상을 볼 수 있습니다.

 

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live1

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live2

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live3

"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/live4



  

ffmpeg의 자세한 옵션은 아래 링크에서 확인하세요

https://trac.ffmpeg.org/wiki/EncodingForStreamingSites





반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts