ffmpeg (API)를 사용하여 웹캠에서 캡처
3943 단어 ffmpeg
기본적으로는 「웹캠용 포맷」이라고 하는 포맷 지정(Mac:
-f avfoundation
, Win: -f dshow
)을 할 수 있으므로, 입력 파일로서 디바이스의 번호를 지정( -i "0"
라든지 -i "1"
라든지)해 적절한 파일에 내보내면 된다.예를 들어 Macbook에서 FaceTime 카메라에서 mp4 파일에 쓰는 경우 :
ffmpeg -f avfoundation -framerate 25 -i "0" -target pal-vcd -vf scale=640x480 ./test.mpg
위 명령의 경우 ffmpeg는 영원히 쓰기를 계속하므로 끝내고 싶을 때는 Ctrl-C를 누릅니다.
Windows용의 커멘드는 갱신 예정(그러나 시기는 미정).
웹캠 나열
터미널 사용(Mac)
Web 카메라는 AV Foundation 되는 프레임워크 경유로 보인다.-f
선택적으로 avfoundation
지정:
$ ffmpeg -list_devices true -f avfoundation -i dummy
예를 들어 sed
라든지 사용하는 것으로, 인덱스가 들어 있는 곳만 꺼낼 수가 있다:
ffmpeg -list_devices true -f avfoundation -i dummy 2>&1 \
| sed -n -e "/video devices/,/audio devices/s/\[AV[^]]*\] //gp" \
| sed -e "/video devices/d; /audio devices/d"
터미널 사용(Windows)
Windows에서는 avfoundation
대신 dshow
(stands for DirectShow)가되므로주의. 나머지는 거의 같지만, 어떻게 출력에서 데이터를 가져오면 좋을까…
참고: FM 페그. 제라의 그림. 작은 m
API를 직접 사용
이것도 한 적이 없다. 여기 원형 복사:
$ ffmpeg -list_devices true -f avfoundation -i dummy
ffmpeg -list_devices true -f avfoundation -i dummy 2>&1 \
| sed -n -e "/video devices/,/audio devices/s/\[AV[^]]*\] //gp" \
| sed -e "/video devices/d; /audio devices/d"
AVFormatContext
만들기 ffmpeg
로 전달 옵션 list_devices
를 AVDictionary
로 전달 av_find_input_format("dshow")
(Windows의 경우)를 사용하여 캡처 지원 AVInputFormat
얻기 "video=dummy"
파일 이름을 사용하여 avformat_open_input()
호출 av_log_set_callback()
에서 콜백 함수를 지정하여 가져올 수 있습니다. 아래 참조:
How to enable ffmpeg logging
API에서 웹캠 캡처 시작
위 섹션과 유사합니다. 코드는 여기 페이지 쪽이 상세하다.
그러나 정보가 최신인지 미확인. ffmpeg는 사양이 잘 바뀌므로 모른다.
AVFormatContext
를 만듭니다. AVInputFormat
를 av_find_input_format("dshow")
와 같이 가져옵니다 "video=<device name or index>"
형식의 C 문자열로 지정됩니다 avformat_open_input()
호출 AVFormatContext
객체에는 개별 스트림에 대한 포인터가 있습니다. 그 중 하나가 비디오 스트림을 지원합니다 : coder_type
회원이 AVMEDIA_TYPE_VIDEO
인지 확인할 수 있습니다.avcodec_find_decoder()
로 취득 AVFrame
객체를 준비하고 avpicture_fill()
에서 버퍼와 연관시킵니다 (이것도 미확인) AVPacket
준비 AVFormatContext
객체에 대해 av_read_frame()
를 사용하여 패킷으로 데이터를 전송하고, avcodec_decode_video2()
를 호출하여 수시로 AVFrame
를 자신의 용도로 사용한다 (미확인) *_free*()
하는 것을 잊지 않는다 Reference
이 문제에 관하여(ffmpeg (API)를 사용하여 웹캠에서 캡처), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gwappa/items/d4adc9354fab3fa2c1c9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)