«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

VIDEOCUBE

FFmpeg 분석 (1) - 이해 본문

분석

FFmpeg 분석 (1) - 이해

라떼청년 2023. 12. 31. 09:09

FFmpeg

 

FFmpeg 은 무료 오픈 소스 소프트웨어 로 영상 또는 음성 파일을 변환 또는 추출, 생성을 위해 사용하는 유틸리티로서 많은 영상관련 개발자 또는 영상 작업자가 한번 쯤은 익히 들어본 경험이 있을 것이다.

FFmpeg 은 다음 라이브러리를 활용하기 위한 Application 이며, 다음 라이브러리를 이용하여 Player ( ffplay ), 미디어 분석기 ( ffprobe ), 미디어 서버 ( ffserver ) 와 같이 제작 배포 되어 지고 있다.

라이브러리는 다음과 같다.

  libavutil   프로그래밍을 단순화 하기 위한 유틸리티 라이브러리
  libavcodec   오디오/ 비디오 인코더와 디코더가 포함된 라이브러리
  libavformat   demuxer와 muxer 가 포함된 라이브러리
  libavdevice   입/출력 소프트웨어 프레임워크 라이브러리
  libavfilter   미디어 필터 라이브러리
  libswscale   이미지 변환 작업을 수행하는 라이브러리
  libswresample   오디오 변환 작업을 수행하는 라이브러리

 

위 라이브러리를 활용한다면, OpenCV 나 영상 분석에 관련된 작업군에도 유용하게 활용할 수 있다.

가장 일반적으로 활용되는 경우에는 우리가 흔히 인코딩으로 불리는 작업에 많이 사용하고 있다.

디바이스와 같은 기기들에서 지원하고 있는 코덱과 지원하는 하드웨어 스펙, 네트워크 환경에 따른 속도 문제로 인해 영상을 재생하지 못하는 경우에 ffmpeg 을 이용하여, 코덱 변환 비트레이트 조절 및 스케일 조절 을 통한 인코딩을 진행하여 재생이 가능하도록 도움을 준다.

다음은 영상을 변환하는 과정이다.

인코딩 하는 과정

 

영상을 변환 하는 과정에 있어서 진행되는 가장 첫번째는 디먹싱으로 format 이라 불리우는 파일의 형태로 부터 코덱을 분리해 나가는 작업을 진행한다.

이 과정에서 duration, codec 의 정보등 영상과 음성의 정보를 획득하게 된다.

코덱을 분리했다면, 코덱을 영상 또는 음성의 실제 raw 데이터를 뽑아내기 위해서는 디코딩이라는 작업을 진행한다.

보통 zip 파일을 unzip 하는 과정으로 묘사할 수 있을 것 같다.

 실제 영상 음성 데이터를 추출하게 된다면, 변환하고자 하는 코덱으로 압축을 하는 과정을 인코딩이라 한다.

인코딩을 완료했다면, 설정된 정보를 이용하여 format 으로 감싸는 것이 먹싱 과정일 것이다.

위 4단계를 거치면서, 우리가 흔히 말하는 '인코딩을 한다' 라고 하는 것이며,

위 과정에서 demuxing 작업과 decoding 작업을 통해 RAW 데이터를 뽑아내어 화면에 출력하게 되면 플레이어가 되고,

demuxing 작업과 decoding 작업을 통해 RAW 데이터 에서 jpg 또는 png 로 변환을 하게 되면 썸네일이 된다.

위 라이브러리와 인코딩 하는 과정을 FFmpeg 의 소스와 빌드를 통해 위에 기술된 각 구간에 행해지는 소스를 분석하여, 추후 영상과 관련된 작업을 함에 있어 도움이 되고자 기록하려 한다.

반응형

'분석' 카테고리의 다른 글

FFmpeg 분석 (2) - 빌드  (0) 2023.12.31
OBS Studio 분석 (3) - 구조  (0) 2021.03.08
OBS Studio 분석 (2) - 빌드  (1) 2021.03.02
OBS Studio 분석 (1) - 준비  (1) 2021.02.21
[MPEG TS] 구조 분석  (0) 2018.01.02
Comments