Для поддержки нескольких браузеров вам потребуется использовать FFmpeg для преобразования файла .mov
в два разных контейнера: контейнер MP4 и контейнер WebM. На практике вы, скорее всего, одновременно укажете кодек. На данный момент мы позволяем FFmpeg использовать настройки по умолчанию.
Если эти понятия для вас новы, вам следует прочитать основы работы с медиафайлами, прежде чем идти дальше. Кроме того, если у вас не установлен FFmpeg, прочтите «Основы работы с мультимедийным приложением», чтобы настроить его с помощью Docker.
Мы используем предложенную установку Docker и файл glocken.mov из раздела «Подготовка медиафайлов для Интернета», добавленный в каталог media
. Мы использовали FFmpeg версии 4.3.2 для всех команд в этом разделе.
Контейнеры
Во-первых, нам нужно создать два контейнера из файла .mov
с расширениями .mp4
и .webm
с аудио- и видеопотоком внутри файла. Ознакомьтесь с основами работы с медиафайлами, чтобы узнать больше о контейнерах и потоках, если вы не знаете различий между ними.
МП4
/media # ffmpeg -i glocken.mov glocken.mp4
ВебМ
/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. Например, эта команда выводит файл .mkv
с аудиокодеком vorbis
и видеокодеком av1
.
/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv
В этом примере флаги -c:a
и -c:v
предназначены для указания аудио- и видеокодеков соответственно.
На странице преобразования мультимедиа перечислены команды, необходимые для преобразования кодеков. В таблицах ниже приведены библиотеки, используемые в FFmpeg для преобразования кодеков для файлов WebM и MP4. Это форматы, рекомендуемые для DASH и HLS соответственно.
Видео
Кодек | Расширение | Библиотека |
---|---|---|
av1 | ВебМ, MKV | libaom-av1 |
h264 | МП4 | libx264 |
вп9 | ВебМ | libvpx-vp9 |
Аудио
Кодек | Расширение | Библиотека |
---|---|---|
аак | МП4 | аак |
опус | ВебМ | либопус |
ворбис | ВебМ | Либворбис |
Далее мы покажем вам, как изменить битрейт вновь созданных файлов.