Aby umożliwić obsługę wielu przeglądarek, trzeba użyć programu FFmpeg do przekonwertowania pliku .mov
na 2 różne kontenery: kontener MP4 i WebM. W praktyce kodek powinien być też określony w tym samym czasie. Na razie pozwalamy FFmpeg
używać ustawień domyślnych.
Jeśli nie masz doświadczenia w tych pojęciach, zapoznaj się najpierw z podstawowymi informacjami o plikach multimedialnych. Jeśli nie masz zainstalowanego FFmpega, przeczytaj artykuł Podstawy aplikacji do multimediów, aby skonfigurować go w Dockerze.
Korzystamy z sugerowanej instalacji Dockera oraz pliku glocken.mov z sekcji Prepare media files for the web (Przygotowanie plików multimedialnych do wykorzystania w internecie) dodanego w katalogu media
. We wszystkich poleceniach w tej sekcji użyliśmy FFmpeg w wersji 4.3.2.
Kontenery
Najpierw musimy utworzyć nasze 2 kontenery z pliku .mov
z rozszerzeniami pliku .mp4
i .webm
zawierającymi strumień audio i wideo.
Jeśli nie wiesz, czym się różnią, zapoznaj się z podstawowymi informacjami o plikach multimedialnych, aby dowiedzieć się więcej o kontenerach i strumieniach.
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
WebM
/media # ffmpeg -i glocken.mov glocken.webm
Tworzenie WebM trwa dłużej niż format MP4. Nie powinno to dziwić,
gdy przyjrzymy się wynikom. MP4 kompresuje się do około 83%
rozmiaru oryginalnego pliku, a WebM zmniejsza rozmiar do 78%
oryginału, ale może być znacznie mniejszy.
Twoje wyniki będą się różnić. Pamiętaj, że FFmpeg 4.2.2
ma ustawioną domyślną szybkość transmisji wideo na 200k
, a w 4.3.2
nie ma domyślnej szybkości transmisji.
Dlatego film nie jest już tylko4%
oryginałem. Możesz to sprawdzić samodzielnie za pomocą polecenia bash ls -a
w folderze, w którym znajdują się 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ć niewielki 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
Sprawdź swoje zadania
Aby zweryfikować wyniki, użyj narzędzi FFmpeg i Shaka Packager zgodnie z opisem w podstawowych informacjach o aplikacjach multimedialnych:
/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4
Kodeki
Następnym krokiem jest kodek. Zgodnie z podstawowymi informacjami o plikach multimedialnych kodek nie jest tym samym co kontener (typ pliku). Dwa pliki tego samego typu kontenera mogą
przechowywać dane skompresowane przy użyciu różnych kodeków. Na przykład format WebM umożliwia kodowanie dźwięku za pomocą elementów Vorbis lub Opus. Do zmiany kodeka
używamy FFmpega. Na przykład to polecenie zwraca 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żą do określenia kodeków audio i wideo.
Strona Konwersja multimediów zawiera listę poleceń potrzebnych do konwersji kodeków. W tabelach poniżej znajdziesz podsumowanie bibliotek używanych w FFmpeg do przeprowadzania konwersji kodeka z plików WebM i MP4. Oto formaty zalecane w przypadku odpowiednio 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 Ci, jak zmienić szybkość transmisji bitów nowo tworzonych plików.