Podstawowe informacje o aplikacjach multimedialnych

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Praca z multimediami często wymaga zmiany charakterystyki plików multimedialnych, takich jak szybkość transmisji bitów czy rozdzielczość. Znalezienie prostego sposobu na rozpoczęcie pracy może onieśmielające. Na tej stronie dowiesz się więcej o używanych narzędziach i sposobach, aby szybko je zainstalować.

Najpierw opisujemy podstawowe zastosowania 2 popularnych narzędzi multimedialnych z wierszem poleceń: Shaka Packager i FFmpeg, a my pomożemy Ci szybko zainstalować narzędzia. Dlaczego warto uwzględnić 2 aplikacje? Oba rozwiązania są skuteczne i użyteczne, ani nie robi wszystkiego, co jest potrzebne do przygotowania multimediów do działania w internecie. Utworzyliśmy także Konwersja mediów i Szyfrowanie multimediów strony, które zawierają o wiele częstsze operacje w tych 2 aplikacjach.

Te aplikacje nie są jedynymi opcjami dostępnymi podczas zadań związanych z manipulacją plikami, ale są to 2 najpowszechniejsze i najbardziej skuteczne. Inne opcje obejmują fakturę GUI dla aplikacji Miro, HandBrake i VLC. Dostępne są też kodowanie/transkodowanie takich jak Zencoder, Amazon Elastic Encoder czy Google Transcoder API.

Pakowanie Shaka

Shaka Packager to bezpłatny pakiet SDK do pakietów multimedialnych. Korzystanie z odtwarzacza w swojej witrynie użyj narzędzia Shaka Packager, które służy do przygotowywania plików. it obsługuje konwersję w przypadku 2 najpopularniejszych protokołów strumieniowego przesyłania wideo: Adaptacyjne transmitowanie przez HTTP (DASH) lub HTTP Live Streaming (HLS). Shaka System pakujący obsługuje kluczowe funkcje zabezpieczeń: popularne szyfrowanie i Widevine digital zarządzanie prawami (DRM). Obsługuje też transmisje na żywo i wideo na żądanie.

Wbrew temu, co znajduje się na opakowaniu, to narzędzie działa nie tylko w języku C++ dla programistów. Można jej używać zarówno jako biblioteki do tworzenia oprogramowania multimedialnego, jak i narzędzia wiersza poleceń służącego do przygotowywania plików multimedialnych do odtwarzania w internecie. Jest który będzie dla nas przydatny w tym przypadku. Twórcy mediów internetowych Shaka Packager to jedyny sposób na wykonywanie niektórych zadań bez wydawania pieniędzy do drogich komercyjnych zastosowań.

Oto podstawowy wzorzec polecenia Shaka Packager:

packager stream_descriptor [stream_descriptor-2 [stream_descriptor-n]] [flags]

To nie wszystko się wyświetli, gdy wpiszesz packager -help. Ten przykład jest łatwiej jest wyciągnąć wnioski, co odzwierciedla przykłady w Dokumentacja programu Shaka Packager Pamiętaj, że jest wiele kategorii stream_descriptor. we wzorze. Chociaż nie jest ona widoczna, możesz manipulować filmem i strumienie audio z pliku z osobna w jednym poleceniu.

Porównaj ten podstawowy wzorzec z prostym zastosowaniem, które wyświetla charakterystykę plików. W przykładzie ułożyliśmy równoważne części.

packager stream_descriptor [stream_descriptor-n] [flags]

packager input=glocken.mp4                       --dump_stream_info

Wynik polecenia:

File "glocken.mp4":
Found 2 stream(s).
Stream [0] type: Video
 codec_string: avc1.640028
 time_scale: 30000
 duration: 300300 (10.0 seconds)
 is_encrypted: false
 codec: H264
 width: 1920
 height: 1080
 pixel_aspect_ratio: 1:1
 trick_play_factor: 0
 nalu_length_size: 4

Stream [1] type: Audio
 codec_string: mp4a.40.2
 time_scale: 48000
 duration: 481280 (10.0 seconds)
 is_encrypted: false
 codec: AAC
 sample_bits: 16
 num_channels: 2
 sampling_frequency: 48000
 language: eng
 seek_preroll_ns: 20833

Zwróć uwagę na cechy omówione w podstawowych informacjach dotyczących plików multimedialnych. i zwróć uwagę na kilka rzeczy. Wysokość i szerokość są prawidłowe dla Full HD, a audio i wideo należą do preferowanych kodeków do stosowania w kontenerach tego typu. AAC dla dźwięku i H264 dla wideo. Zwróć też uwagę, że strumienie są identyfikowane za pomocą liczby. Przydają się one podczas działań związanych z dźwiękiem i obrazem oddzielnie.

Zwróć uwagę, że dane wyjściowe nie pokazują szybkości transmisji bitów. Pomimo tego, czego brakuje, te dane wyjściowe są łatwiejsze do odczytania, dlatego używamy ich, gdy tylko jest to możliwe. Gdy potrzebujemy których nie możemy pobrać z programu Shaka Packager, takich jak szybkość transmisji bitów, korzystamy z formatu FFmpeg.

FFmpeg

FFmpeg to również bezpłatna aplikacja do nagrywania, konwertowania i strumieniowania. plików multimedialnych. Jej możliwości nie są lepsze ani gorsze niż Shaka Packager. Są po prostu inne.

Podstawowy wzorzec polecenia FFmpeg wygląda tak:

ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output

Podobnie jak Shaka Packager, ta aplikacja może obsługiwać wiele strumieni. Niektóre opcje są używane w wielu lokalizacjach i w różny sposób modyfikują dane wyjściowe pliku w zależności od ich pozycji w poleceniu. Pamiętaj o tym przeczytaj pytania FFmpeg na Stack Overflow i na podobnych stronach.

Ponownie porównamy podstawowy wzorzec z przykładem wyświetlania pliku. dla niektórych cech produktu.

    ffmpeg [GeneralOptions] [InputFileOptions] -i input        [OutputFileOptions] output

    ffmpeg                                     -i glocken.mp4

Oprócz wymaganych informacji zostanie również wyświetlony komunikat o błędzie. jak widać w przykładzie poniżej. To dlatego, że z technicznego punktu widzenia jest to błąd wykorzystanie FFmpeg. Używamy go, ponieważ pokazuje on informacje, na których nam zależy.

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'glocken.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.17.100
  Duration: 00:01:47.53, start: 0.000000, bitrate: 10715 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1920x1080, 10579 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
At least one output file must be specified

Instalowanie aplikacji przy użyciu Dockera

Jeśli zamierzasz postępować zgodnie z tymi instrukcjami i wypróbować nasze polecenia, możesz zainstalować ręcznie wymagane narzędzia lub wybrać prostą ścieżkę i skorzystać z Dockera. Zalecamy użycie Dockera, ponieważ pozwoli Ci to zaoszczędzić dużo czasu. Oprócz tego wprowadziliśmy .

  1. Zacznij od utworzenia na komputerze nowego katalogu o nazwie media-tools. możesz użyć dowolnej nazwy. Pamiętaj jednak, że poniższe instrukcje zakładamy, że używasz nazwy media-tools jako nazwy katalogu.

  2. Utwórz katalog docker i media w katalogu media-tools. Dzięki temu katalog media nie będzie się znajdował w kontekście kompilacji. To ważne ponieważ media to miejsce, w którym przechowywane są pliki, na których planujemy wykonać operacje, niektóre mogą być dość duże. Wstawianie Dockerfile bezpośrednio Odbudowanie komponentu media-tools spowoduje spowolnienie procesu tworzenia obrazu drogową, np. aby zmienić zainstalowane wersje.

  3. Utwórz /media-tools/docker/Dockerfile i dodaj te instrukcje kompilacji:

    FROM google/shaka-packager:release-v2.4.3 as packager
    FROM jrottenberg/ffmpeg:4.3.2-alpine38
    COPY --from=packager /usr/bin /usr/bin
    ENTRYPOINT  ["sh"]
    
  4. Utwórz obraz:

    docker build -t media-tools ./docker
    
  5. uruchomić obraz jako interaktywną powłokę, W systemie Linux:

    docker run -w /media -v ${PWD}/media:/media -it --rm media-tools
    /media #
    

    W systemie Windows:

    docker run -w /media -v %cd%/media:/media -it --rm media-tools
    /media #
    
.

Po uruchomieniu obrazu możesz sprawdzić wersje programu FFmpeg i Shaka Packager aby sprawdzić, czy wszystko się udało, uruchamiając polecenie ffmpeg -version i packager --version Dane wyjściowe powinny wyglądać tak:

/media # ffmpeg -version
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 6.4.0 (Alpine 6.4.0)
configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib
libavutil      56. 51.100 / 56. 51.100
libavcodec     58. 91.100 / 58. 91.100
libavformat    58. 45.100 / 58. 45.100
libavdevice    58. 10.100 / 58. 10.100
libavfilter     7. 85.100 /  7. 85.100
libavresample   4.  0.  0 /  4.  0.  0
libswscale      5.  7.100 /  5.  7.100
libswresample   3.  7.100 /  3.  7.100
libpostproc    55.  7.100 / 55.  7.100
/media # packager --version
packager version v2.4.3-dd9870075f-release

Skoro już wiesz, jak używać Shaka Packager i FFmpeg, możesz kontynuować zapoznaj się z podstawowymi pojęciami z sekcji Podstawy strumieniowania multimediów.