개발일지/ffmpeg

ffmpeg을 사용하여 webcam의 영상을 저장하거나 udp 방송

자코린이 2022. 9. 19. 18:21

저는 윈도우를 사용하였습니다. 리눅스는 제가 참조한 곳을 방문하여 읽어주세요

먼저 vfwcap포멧을 사용하는 방법부터 알려드리겠습니다.(vfwcap은 오래된 옵션이라 아래 방법을 추천합니다.)

//vfwcap 사용
//사용가능한 영상 카메라 리스트
ffmpeg -y -f vfwcap -i list

그럼 아래 사진처럼 결과가 나옵니다.

driver 0으로 하나가 잡히네요

//영상 저장(mp4사용 불가)(avi 포멧 사용)
ffmpeg -y -f vfwcap -r 25 -i 0 -t 60 out.avi

설명:

-y : 전에 있던 파일에 덮어쓰기

-f : 사용 포멧

 -r : 프레임

-i : 기본 옵션으로 -i 다음으로 무슨 형식이든 와도 됩니다.(ex rtsp, mp4, avi etc)

-t : 영상 시간입니다. 기본은 초로 60은 60초입니다. 이 외에도 hh:mm:ss형식으로 가능합니다.

out.avi : 나온 결과값입니다.

참조 페이지에서는 mp4를 사용하지만 저는 영상을 재생할 때 재생이 안 되는 에러가 있어 avi를 사용했습니다.

사진처럼 잘 저장되는 것을 확인할 수 있습니다.

https://trac.ffmpeg.org/wiki/Capture/Webcam

 

Capture/Webcam – FFmpeg

Windows dshow Uses the dshow (DirectShow) input device which is the preferred option for Windows users. See the wiki article about DirectShow and the dshow input device documentation for more information. vfwcap Warning: vfwcap is outdated. Use dshow inste

trac.ffmpeg.org

 

참조페이지를 보시면 지금은 dshow를 사용한다고 나옵니다.

이젠 dshow를 사용한 저장과 스트리밍을 해보겠습니다.

//사용가능한 비디오, 오디오 장비 리스트
ffmpeg -list_devices true -f dshow -i dummy

여기서 저는 usb캠을 사용하겠습니다.

//video장비가 가능한 포멧 찾기
ffmpeg -f dshow -list_options true -i video="USB2.0 HD UVC WebCam"

//영상 스트리밍(여기서 -c:v h264_nvenc -c:a aac는 영상 포멧을 h264형식으로 압축하는 것인데 nvida의 nvenc를 설치해야 합니다.)
//저는 노트북이라 이 부분은 빼고 실행했습니다.(이 부분에서 오류가 나시면 엔비디아  nvcuda.dll 를 다운받으세요) 
ffmpeg -f dshow -s 320x240 -r 30 -pixel_format yuyv422 -i video="USB2.0 HD UVC WebCam" -c:v h264_nvenc -c:a aac -f mpegts "udp://127.0.0.1:8888"

 

이제 리스너를 생성합니다.

ffplay udp://127.0.0.1:8888?mode=listener

 

잘 작동하는 것을 확인하실 수 있습니다.

 

영상 저장은 아래 명령어를 치시면 됩니다.

ffmpeg -f dshow -s 320x240 -r 30 -pixel_format yuyv422 -i video="USB2.0 HD UVC WebCam" -t 60 out2.avi

 

참조: https://butteryoon.github.io/dev/2020/11/17/ffmpeg_cam_streaming.html

 

ffmpeg을 이용한 내장 카메라 영상 실시간 스트리밍 테스트

Windows에서 ffmpeg로 내장 카메라 영상을 실시간 전송을 위한 기본 환경을 구성해본다.

butteryoon.github.io

 

'개발일지 > ffmpeg' 카테고리의 다른 글

ffmpeg을 사용한 오디오 저장  (0) 2023.05.01
ffmpeg은 무엇인가?  (2) 2022.09.19