ffmpeg

who_am_i·2021년 9월 15일
0

자습 (기술 정리)

목록 보기
2/2

마이클 니더마이어(Michael Niedermayer)의 주도하에 개발되고 있는 모든 동영상, 음악, 사진 포맷들의 디코딩과 인코딩을 목표로 만들어지고 있는 LGPL과 GPL 라이선스를 따르는 오픈 소스 프로젝트

ffmpeg를 설치하는 방법은 아래 링크를 통해 다운 받을 수 있다.
(윈도우에서는 환경변수를 설정해줘야 rtsp 관련 라이브러리를 사용할 떄 사용할 수 있다.)
https://ffmpeg.org/download.html

정리하기에 앞서..

  1. 저가 필요한 부분인 segemnt, hls, rtsp 부분을 정리 하였습니다.
  2. segement와 hls를 통해 stream을 세그먼트화 하는 명령어 들은 너무 많아 정리하지 않았습니다.
    https://www.ffmpeg.org/ffmpeg-all.html#segment_002c-stream_005fsegment_002c-ssegment
    에서 확인해주세요.

ffmpeg 사이트 설명

개요 = ffmpeg 매우 빠른 비디오 및 오디오 컨버터로서 ~~ 하라고 적혀있다.

EX) ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

우선 첫 ffmpeg를 보면
위의 ffmpg 예시를 보여준다.

ffmpeg -i 입력.avi -r 24 출력.avi

STREM(필터, 복사, 선택)

필터링 부분에서는 decode frames -> (filter) => filter frames -> encoder -> 완성 이러한 느낌의 그림과 설명이 있다.

복사 부분은 스트림을 카피한 다는 것과 선택한다는 부분인데
input -> demuxer -> 데이터 패킷! -> muxer -> 완성
이런 느낌으로 해독 인코딩을 안한다고 한다.

선택같은 경우에는 -map을 통해 선택하는데 각 스트림 선택 출력 제어 옵션을 설정하나 건너뛸 수 있다는 설명인 거 같았다.

Option

  1. Stream specifiers(스트림 지정자?)
    스트림에 대한 설정 같은 느낌으로 index, type, id 등을 설정한다.
  2. Generic options(일반 옵션)
  3. AVOptions
  4. Main Options (주요 옵션)
  5. Video Optionse (비디오 옵션)

segment

기본적인 스트림 세그먼트화에 사용되는 것으로 (분할)

hls

HTTP 라이브 스트리밍
(재생 목록 파일과 하나 이상의 세그먼트 파일을 만든다.)
segment 보다 구체적인 구현

rtsp

ffmpeg rtsp 설명 페이지 (24.32)
https://www.ffmpeg.org/ffmpeg-all.html#segment_002c-stream_005fsegment_002c-ssegment

대충 설명을 보면 프로토콜 처리기가 아닌 muxer or DeMuxer 역할은 한다고 되어있다.

(muxer = 여러 입력을 하나로 합치는 과정)

rtsp_transport

= RTSP 전송 프로토콜 선택. (muxer같은 경우에는 tcp, udp 만 지원, RTSP는 기본적으로 stateful 이다.)
전송을 요청을 할 때엔 주로 TCP 가 사용된다.

rtsp_flags

잘 사용을 안해서 모르겠지만 (filter_src: 협상된 피어 주소 허용, listen: 수신 연결 서버 역할 등 이라 적혀있다.)

allowed_media_types

서버 허용할 미디어 유형이다. (video, audio, data)

min && max port

로컬 udp 포트 설정

listen_timeout

초기 연결 설정 최대 시간 제한 설정

reorder_queue_size

패킷 처리를 위해 버퍼링할 패킷 수

timeout

소켓 tcp 시간 초과 설정

(이 외에는 대부분 통신에 대한 것들이라 생략한다.. )

EX) 최대 재주문 지연 시간 0.5초 UDP 통신
ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4

profile
멋진 개발자가 되고 싶어요 youngjun.site

0개의 댓글