컨테이너 및 코덱

Derek Herman
Derek Herman
Joe Medley
Joe Medley

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

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

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

먼저 .mov 파일에서 .mp4.webm 파일 확장자가 있는 두 개의 컨테이너를 만들어야 합니다. 이 컨테이너에는 파일 내에 오디오 스트림과 동영상 스트림이 모두 포함되어 있습니다. 컨테이너와 스트림의 차이를 모르는 경우 미디어 파일 기본사항에서 자세히 알아보세요.

  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는 각각 오디오 코덱과 동영상 코덱을 지정하기 위한 것입니다.

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

동영상

코덱 확장 라이브러리
av1 WebM, mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

오디오

코덱 확장 라이브러리
aac MP4 aac
opus WebM libopus
vorbis WebM libvorbis

다음으로 새로 만든 파일의 비트 전송률을 변경하는 방법을 알아봅니다.