Aby zapewnić obsługę wielu przeglądarek, musisz użyć FFmpeg do przekonwertowania pliku .mov
do dwóch różnych kontenerów: MP4 i WebM. W praktyce prawdopodobnie określisz kodek w tym samym czasie. Na razie FFmpeg używa domyślnych ustawień.
Jeśli te zagadnienia są dla Ciebie nowe, przed kontynuacją zapoznaj się z podstawami dotyczącymi plików multimedialnych. Jeśli nie masz zainstalowanego FFmpeg, przeczytaj artykuł Podstawy aplikacji do obsługi multimediów, aby dowiedzieć się, jak skonfigurować tę aplikację za pomocą Dockera.
Używamy sugerowanej instalacji Dockera i pliku glocken.mov z dokumentu Przygotowanie plików multimedialnych do internetu dodanego w katalogu media
. Do wszystkich poleceń w tej sekcji użyliśmy FFmpeg w wersji 4.3.2.
Kontenery
Najpierw musimy utworzyć 2 kontenery z pliku .mov
z rozszerzeniem .mp4
i .webm
z obiema ścieżkami audio i wideo.
Jeśli nie wiesz, czym różnią się kontenery i strumienie, zapoznaj się z podstawami dotyczącymi plików multimedialnych.
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
WebM
/media # ffmpeg -i glocken.mov glocken.webm
Tworzenie pliku WebM zajmuje więcej czasu niż MP4. Patrząc na wyniki,
nie jest to zaskoczeniem. Plik MP4 jest kompresowany do około 83%
pierwotnego rozmiaru, a plik WebM do 78%
pierwotnego rozmiaru, ale może być znacznie mniejszy.
Wyniki mogą się różnić. Należy pamiętać, że w FFmpeg 4.2.2
domyślna szybkość transmisji wideo to 200k
, a w 4.3.2
nie jest ustawiana domyślna szybkość transmisji.
Film nie jest już tylko4%
kopią oryginału. Możesz to sprawdzić samodzielnie, używając polecenia ls -a
bash w folderze, w którym znajdują się Twoje pliki multimedialne.
Na przykład:
/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
Aby uzyskać mały plik, wykonaj te czynności:
/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
Sprawdzanie efektów pracy
Aby zweryfikować wyniki, użyj FFmpeg i Shaka Packager, jak pokazano w artykule Podstawy aplikacji multimedialnych:
/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4
Kodeki
Kolejnym elementem jest kodek. Jak wyjaśniono w artykule Podstawy dotyczące plików multimedialnych, kodek nie jest tym samym co kontener (typ pliku). Dwa pliki tego samego typu kontenera
mogą zawierać dane skompresowane przy użyciu różnych kodeków. Na przykład format WebM umożliwia kodowanie dźwięku za pomocą kodeka Vorbis lub Opus. Do zmiany kodeka
używamy FFmpeg. Na przykład to polecenie generuje plik .mkv
z kodekiem audio vorbis
i kodekiem wideo av1
.
/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv
W tym przykładzie flaga -c:a
i -c:v
służą odpowiednio do określenia kodeków audio i wideo.
Na stronie Konwersja multimediów znajdują się polecenia potrzebne do konwersji kodeków. W tabelach poniżej znajdziesz podsumowanie bibliotek używanych w FFmpeg do konwersji kodeków w przypadku plików WebM i MP4. Oto formaty zalecane odpowiednio dla DASH i HLS.
Wideo
Kodek | Rozszerzenie | Biblioteka |
---|---|---|
av1 | WebM, MKV | Libaom-Av1 |
h264 | MP4 | libx264 |
vp9 | WebM | libvpx-vp9 |
Audio
Kodek | Rozszerzenie | Biblioteka |
---|---|---|
AAC | MP4 | AAC |
opus | WebM | Libopus |
vorbis | WebM | libvorbis |
Następnie pokażemy, jak zmienić bitrate nowo utworzonych plików.