컨테이너 및 코덱

데릭 허먼
데릭 허먼
조 메들리
조 메들리

여러 브라우저를 지원하려면 FFmpeg를 사용하여 .mov 파일을 MP4 컨테이너와 WebM 컨테이너라는 두 개의 컨테이너로 변환해야 합니다. 실제로는 동시에 코덱을 지정할 가능성이 높습니다. 지금은 FFmpeg가 기본값을 사용하도록 하겠습니다.

이 개념을 처음 사용한다면 계속 진행하기 전에 미디어 파일 기본사항을 읽어야 합니다. 또한 FFmpeg가 설치되어 있지 않으면 미디어 애플리케이션 기본사항을 읽고 Docker에서 설정하세요.

여기서는 추천 Docker 설치 및 media 디렉터리 내에 추가된 웹용 미디어 파일 준비glocken.mov 파일을 사용합니다. 이 섹션의 모든 명령어에 FFmpeg 버전 4.3.2를 사용했습니다.

컨테이너

먼저 파일 내에 오디오 스트림과 동영상 스트림이 모두 있는 .mp4.webm 파일 확장자를 사용하여 .mov 파일에서 컨테이너 두 개를 만들어야 합니다. 컨테이너와 스트림의 차이점을 모르는 경우 미디어 파일 기본사항에서 자세한 내용을 검토하세요.

  1. MP4

    /media # ffmpeg -i glocken.mov glocken.mp4
    
  2. WebM

    /media # ffmpeg -i glocken.mov glocken.webm
    

WebM은 MP4보다 만드는 데 시간이 더 오래 걸립니다. 결과를 보면 당연한 결과입니다. MP4는 원본 파일 크기의 약 83%로 압축되지만 WebM은 원본 크기의 78%로 줄지만 이보다 훨씬 더 작을 수 있습니다. 결과는 다를 수 있습니다. FFmpeg 4.2.2는 기본 동영상 비트 전송률을 200k로 설정하며 4.3.2에서는 기본 비트 전송률을 설정하지 않는다는 점을 유의해야 합니다. 따라서 동영상은 더 이상 원본4%에 국한되지 않습니다. 미디어 파일이 있는 폴더에서 ls -a bash 명령어를 사용하여 직접 확인할 수 있습니다.

예를 들면 다음과 같습니다.

/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root   9503301 Mar 7 18:30 glocken.webm

작은 파일을 얻으려면 다음과 같이 하면 됩니다.

/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame=  300 fps=3.6 q=0.0 Lsize=     483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root    494497 Mar 7 18:45 glocken.webm

학습 내용 확인

결과를 확인하려면 미디어 애플리케이션 기본사항에 이미 표시된 대로 FFmpeg 및 Shaka Packager를 사용합니다.

/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4

코덱

다음은 코덱입니다. 미디어 파일 기본사항에 설명된 대로 코덱은 컨테이너 (파일 형식)와 같지 않습니다. 컨테이너 유형이 같은 파일 두 개는 서로 다른 코덱을 사용해 압축된 데이터를 보유할 수 있습니다. 예를 들어 WebM 형식에서는 Vorbis 또는 Opus를 사용하여 오디오를 인코딩할 수 있습니다. 코덱을 변경하기 위해 FFmpeg를 사용합니다. 예를 들어 다음 명령어는 vorbis 오디오 코덱과 av1 동영상 코덱이 있는 .mkv 파일을 출력합니다.

/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv

이 예에서 -c:a 플래그와 -c:v는 각각 오디오 코덱과 동영상 코덱을 지정하는 데 사용됩니다.

미디어 변환 페이지에는 코덱을 변환하는 데 필요한 명령어가 표시됩니다. 아래 표에는 WebM 및 MP4 파일의 코덱을 변환하기 위해 FFmpeg에서 사용되는 라이브러리가 요약되어 있습니다. 다음은 DASH 및 HLS에 각각 권장되는 형식입니다.

동영상

코덱 확장 보관함
av1 WebM, mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

오디오

코덱 확장 보관함
aac MP4 aac
opus WebM 리보푸스
Vorbis WebM libvorbis

다음으로 새로 만든 파일의 비트 전송률을 변경하는 방법을 보여 드리겠습니다.