Grundlagen der Medienanwendung

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Bei der Arbeit mit Medien müssen häufig die Eigenschaften von Mediendateien geändert werden, wie Bitrate oder Auflösung. Ein einfacher Einstieg kann ziemlich einschüchternd. Auf dieser Seite erfahren Sie mehr über die verwendeten Tools um sie schnell zu installieren.

Zuerst beschreiben wir die grundlegende Verwendung zweier gängiger Befehlszeilen-Mediendienstprogramme: Shaka Packager und FFmpeg. Wir helfen Ihnen dann, die Tools schnell zu installieren. Warum sollten Sie zwei Anwendungen abdecken? Beide sind zwar leistungsstark und für sich genommen nützlich, und auch nicht alles, was zur Vorbereitung von Medien für das Web nötig ist. Außerdem haben wir die Medienkonvertierung und Medienverschlüsselung Seiten, auf denen viele weitere gängige Vorgänge mit diesen beiden Anwendungen angezeigt werden.

Diese Anwendungen sind nicht die einzigen Möglichkeiten zur Dateibearbeitung, aber sie sind zwei der gängigsten und leistungsfähigsten. Weitere Optionen: GUI die Anwendungen Miro, HandBrake und VLC. Es gibt auch Codierung/Transcodierung wie Zencoder, Amazon Elastic Encoder und Google Transcoder API.

Logo: Shaka Packager

Shaka Packager ist ein kostenloses SDK für die Medienverpackung. Wenn Sie einen Mediaplayer verwendet haben auf Ihrer Website haben, würden Sie die Dateien mit Shaka Packager vorbereiten. Es unterstützt die Konvertierung für die beiden gängigsten Videostreaming-Protokolle: Adaptives Streaming über HTTP (DASH) oder HTTP-Live-Streaming (HLS). Logo: Shaka Packager unterstützt wichtige Sicherheitsfunktionen: Common Encryption und Widevine Digital Rechteverwaltung (DRM) ein. Er kann auch Livestreaming und Video-on-Demand verarbeiten.

Trotz der Angaben im Paket ist dieses Dienstprogramm nicht nur für C++- zu entwickeln. Sie können sie sowohl als Bibliothek für die Erstellung von Mediensoftware als auch ein Befehlszeilen-Dienstprogramm zur Vorbereitung von Mediendateien für die Webwiedergabe Es ist die die für uns von Nutzen sind. Für Ersteller von Webmedien Shaka Packager kann einige Aufgaben nur erledigen, ohne Geld für teuren kommerziellen Anwendungen.

Hier ist das grundlegende Muster für einen Shaka Packager-Befehl:

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

Dies ist nicht das, was Sie erhalten, wenn Sie packager -help eingeben. Dieses Beispiel ist verständlicher ist, was die Beispiele in der Dokumentation zu Shaka Packager Es gibt mehrere stream_descriptor Elemente im Muster. Auch wenn wir das nicht zeigen, könntest du das Video manipulieren und Audiostreams einer Datei separat in einem einzigen Befehl.

Vergleichen Sie dieses Basismuster mit einer einfachen Verwendung, die Dateimerkmale anzeigt. In dem Beispiel haben wir die äquivalenten Teile angeordnet.

packager stream_descriptor [stream_descriptor-n] [flags]

packager input=glocken.mp4                       --dump_stream_info

Der Befehl gibt Folgendes aus:

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

Achte auf die unter Grundlagen von Mediendateien beschriebenen Merkmale. und ein paar Dinge beachten. Die Höhe und Breite sind bei Full HD korrekt. Audio- und Video-Codecs gehören zu den bevorzugten Codecs für ihre Containertypen, AAC für Audio und H264 für Video Streams sind mit Zahlen. Diese sind nützlich für Vorgänge zur Manipulation von Audio- und Videoinhalten. separat.

Beachten Sie, dass in der obigen Ausgabe keine Bitrate angezeigt wird. Auch wenn das fehlt, Diese Ausgabe ist leichter zu lesen, also verwenden wir sie, wann immer wir können. Wenn wir Informationen, die Shaka Packager nicht abrufen kann, wie etwa die Bitrate, verwenden wir FFmpeg.

FFmpeg

FFmpeg ist ebenfalls eine kostenlose Anwendung zum Aufzeichnen, Konvertieren und Streamen. Mediendateien. Seine Funktionen sind nicht besser oder schlechter als Shaka Packager. Sie unterscheiden sich einfach.

Das Grundmuster für einen FFmpeg-Befehl sieht so aus:

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

Wie Shaka Packager kann auch diese Anwendung mehrere Streams verarbeiten. Einige der -Optionen an mehreren Stellen verwendet werden und die Dateiausgabe unterschiedlich beeinflussen je nachdem, wo sie sich im Befehl befinden. Behalten Sie das im Hinterkopf, Sehen Sie sich FFmpeg-Fragen auf Stack Overflow und ähnlichen Websites an.

Wir vergleichen das grundlegende Muster wieder mit dem Beispiel für die Anzeige von Eigenschaften.

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

    ffmpeg                                     -i glocken.mp4

Zusätzlich zu den angeforderten Informationen wird hier auch eine Fehlermeldung wie im Beispiel unten gezeigt. Das liegt daran, dass dies Verwendung von FFmpeg. Wir verwenden sie, weil sie Informationen anzeigt, die uns wichtig sind.

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

Anwendungen mit Docker installieren

Wenn Sie unsere Befehle ausprobieren möchten, können Sie entweder die erforderlichen Tools manuell oder Sie wählen einfach Docker aus. Wir empfehlen die Verwendung von Docker, da Sie so viel Zeit sparen. Darüber hinaus haben wir eine Anleitung für eine schnelle Einrichtung bereitgestellt.

  1. Erstellen Sie zuerst auf Ihrem Computer ein neues Verzeichnis mit dem Namen media-tools. Sie können einen beliebigen Namen verwenden. Beachten Sie jedoch, dass die folgenden Anweisungen nehmen wir an, Sie verwenden media-tools als Verzeichnisnamen.

  2. Erstellen Sie die Verzeichnisse docker und media in media-tools. Dadurch wird das Verzeichnis media außerhalb des Build-Kontexts gehalten. Das ist wichtig, weil in media Dateien gespeichert werden, für die Vorgänge geplant sind, und von denen einige ziemlich groß sein können. Dockerfile direkt einfügen in media-tools würde die Erstellung des Images verlangsamen, wenn Sie es im um die installierten Versionen zu ändern.

  3. Erstellen Sie /media-tools/docker/Dockerfile und fügen Sie die folgenden Build-Anweisungen hinzu:

    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. Erstellen Sie das Image:

    docker build -t media-tools ./docker
    
  5. Führen Sie das Image als interaktive Shell aus. Unter Linux:

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

    Unter Windows:

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

Beim Ausführen des Images können Sie die Versionen von FFmpeg und Shaka Packager prüfen um zu prüfen, ob alles erfolgreich war, indem Sie ffmpeg -version ausführen und packager --version. Die Ausgabe sollte in etwa so aussehen:

/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

Nachdem Sie sich nun mit Shaka Packager und FFmpeg versucht haben, können Sie fortfahren. lernen Sie die grundlegenden Konzepte kennen. Fahren Sie als Nächstes mit Grundlagen des Medienstreamings fort.