FFmpeg를 사용하여 하나의 동영상 파일을 다중 RTSP 스트리밍하는 방법을 다룹니다.
FFmpeg를 사용하여 하나의 비디오 파일를 입력으로 8개의 RTSP URL을 생성하여 RTSP 스트리밍하는 테스트를 해본 결과입니다.
2020. 10. 10 최초작성
2024. 4. 6 변경된 프로그램 반영
FFmpeg를 사용하여 하나의 동영상 파일을 다중 RTSP 스트리밍하기
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 스트리밍하기
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
'ffmpeg' 카테고리의 다른 글
FFmpeg를 사용하여 웹캠 영상을 RTSP 스트리밍하기 (0) | 2024.08.15 |
---|---|
FFmpeg를 사용하여 webcam을 RTSP 스트리밍 하여 OpenCV에서 확인하기 (0) | 2024.06.23 |
ffmpeg를 사용하여 동영상 파일을 jpg 이미지 파일로 변환하기 (0) | 2023.10.13 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!