FFmpeg를 사용하여 webcam을 RTSP 스트리밍하고 OpenCV에서 해당 영상을 확인하는 과정을 다룹니다.
2021. 6. 10 최초작성
2024. 6. 23 최종작성
1. 아래 링크에서 mediamtx windows 버전( 이름에 windows_amd64가 붙은 것)을 다운로드하여 적당한 곳에 압축을 풀어줍니다.
https://github.com/bluenviron/mediamtx/releases
mediamtx.exe를 실행합니다. 접속을 허용하냐고 물어보면 예를 클릭합니다.
다음처럼 실행됩니다.
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 주소를 사용합니다.
4. 웹캠을 PC에 연결하고 다음 명령을 사용하여 사용가능한 디바이스 이름을 확인합니다.
여기에선 웹캠 이름 "HD Pro Webcam C920"를 확인했습니다.
ffmpeg -list_devices true -f dshow -i dummy
[dshow @ 00000238e576b200] "HD Pro Webcam C920"
[dshow @ 00000238e576b200] Alternative name "@device_pnp_\\?\usb#vid_046d&pid_082d&mi_00#6&f546908&1&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
앞에서 확인한 웹캠 이름과 IP 주소를 변경하여 다음 명령을 실행합니다.
ffmpeg -f dshow -video_size 640*480 -i video="HD Pro Webcam C920" -r 30 -c:v libx264 -preset fast -tune zerolatency -f rtsp -rtsp_transport tcp rtsp://192.168.45.245:8554/visual
마지막 줄에 다음처럼 보이면서 frame 항목의 숫자가 증가해야 합니다.
frame= 62 fps= 31 q=25.0 size=N/A time=00:00:02.03 bitrate=N/A speed=1.01x
5. 명령 프롬프트 창을 새로 열어서 ffmpeg에 포함된 다음 명령을 사용하여 스트리밍된 웹캠 영상을 확인할 수 있습니다.
빨간색 부분은 앞에서 확인한 IP 주소로 변경해야 합니다.
방어벽 메시지 박스가 보이면 엑세스 허용을 해줘야 합니다.
ffplay -fflags nobuffer -flags low_delay rtsp://192.168.45.245:8554/visual
6. 명령 프롬프트 창을 새로 열어서 vlc를 사용하여 확인할 수도 있습니다.
빨간색 부분은 앞에서 확인한 IP 주소로 변경해야 합니다.
방어벽 메시지 박스가 보이면 엑세스 허용을 해줘야 합니다.
"C:\Program Files\VideoLAN\VLC\vlc.exe" rtsp://192.168.45.245:8554/visual
7. 다음 OpenCV 코드를 사용하여 스트리밍 영상을 플레이할 수 있습니다.
C++에서도 VideoCapture 함수에 RTSP 주소만 넣어주면 됩니다.
import cv2 cap = cv2.VideoCapture("rtsp://192.168.45.245:8554/visual" ) while True: ret,img = cap.read() if ret == True: cv2.imshow("webcam", img) key = cv2.waitKey(1) if key == 27: break |
참고
https://www.bogotobogo.com/VideoStreaming/ffmpeg_webcam_capture_Windows.php
https://github.com/mtinet/ffmpegStreamming/blob/b22f82a4b1c47f9e0547290b19715e877db6d894/README.md
'ffmpeg' 카테고리의 다른 글
FFmpeg를 사용하여 웹캠 영상을 RTSP 스트리밍하기 (0) | 2024.08.15 |
---|---|
FFmpeg를 사용하여 하나의 동영상 파일을 다중 RTSP 스트리밍하기 (0) | 2024.04.06 |
ffmpeg를 사용하여 동영상 파일을 jpg 이미지 파일로 변환하기 (0) | 2023.10.13 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!