Nozioni di base sulle applicazioni multimediali

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Lavorare con i file multimediali spesso richiede di modificarne le caratteristiche, come velocità in bit o risoluzione. Trovare un modo semplice per iniziare può essere abbastanza intimidatorio. In questa pagina, scoprirai gli strumenti utilizzati e come per installarle rapidamente.

In primo luogo, descriviamo l'utilizzo di base per due utilità multimediali a riga di comando comuni: Shaka Packager e FFmpeg e poi ti aiuteremo a installare rapidamente gli strumenti. Perché coprire due applicazioni? Sebbene entrambi siano potenti e utili da soli, né fa tutto il necessario per preparare i media per il web. Abbiamo anche creato Conversione di contenuti multimediali e Crittografia dei contenuti multimediali pagine che mostrano molte operazioni più comuni con queste due applicazioni.

Queste applicazioni non sono le uniche opzioni disponibili per le attività di manipolazione dei file, ma sono due dei più comuni e potenti. Altre opzioni includono la GUI Applicazioni Miro, HandBrake e VLC. Esistono anche strumenti di codifica/transcodifica come Zencoder, Amazon Elastic Encoder e l'API Google Transcoder.

Confezionatore Shaka

Shaka Packager è un SDK per il pacchetto multimediale senza costi. Se utilizzi un media player sul tuo sito, Shaka Packager è ciò che useresti per preparare i file. it supporta la conversione dei due protocolli di streaming video più comuni: Dinamico Streaming adattivo su HTTP (DASH) o live streaming HTTP (HLS). Shaka Packager supporta le principali funzionalità di sicurezza: crittografia comune e Widevine Digital gestione dei diritti (DRM). Può gestire anche live streaming e video on demand.

Nonostante ciò che dice sul pacchetto, questa utilità è per più di C sviluppatori. Puoi usarlo sia come libreria per sviluppare software multimediali sia come un'utilità a riga di comando per preparare i file multimediali per la riproduzione sul web. È la quest'ultima capacità che ci è utile. Infatti, per i creator di contenuti multimediali sul web, Shaka Packager è l'unico modo per svolgere alcune attività senza spendere denaro per applicazioni commerciali costose.

Ecco il pattern di base per un comando Shaka Packager:

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

Non è esattamente quello che ottieni se digiti packager -help. Questo esempio è più facile ragionare e ciò riflette gli esempi Documentazione di Shaka Packager. Tieni presente che esistono più stream_descriptor elementi nello schema. Anche se non lo mostriamo, è possibile manipolare il video e gli stream audio di un file separatamente in un unico comando.

Confronta questo pattern di base con un semplice utilizzo che mostra le caratteristiche del file. Nell'esempio, abbiamo allineato parti equivalenti.

packager stream_descriptor [stream_descriptor-n] [flags]

packager input=glocken.mp4                       --dump_stream_info

Il comando restituisce questo risultato:

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

Cerca le caratteristiche descritte nella sezione Nozioni di base sui file multimediali. e notare alcune cose. L'altezza e la larghezza sono corrette per il formato Full HD e i codec audio e video sono tra i codec preferiti per i loro tipi di container, AAC per l'audio e H264 per i video. Tieni inoltre presente che gli stream sono identificati numeri. Sono utili per operazioni che manipolano audio e video separatamente.

Nota che l'output in alto non mostra la velocità in bit. Nonostante ciò che manca, questo output è più facile da leggere, quindi lo usiamo ogni volta che è possibile. Quando abbiamo bisogno informazioni che Shaka Packager non è in grado di ottenere, come la velocità in bit, utilizziamo FFmpeg.

FFmpeg

FFmpeg è anche un'applicazione senza costi per la registrazione, la conversione e lo streaming file multimediali. Le sue capacità non sono migliori o peggiori di quelle di Shaka Packager. Sono solo diversi.

Il pattern di base di un comando FFmpeg è simile al seguente:

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

Come Shaka Packager, questa applicazione è in grado di gestire più flussi. Alcuni dei suoi vengono utilizzate in più posizioni e manipolano l'output del file in modo diverso a seconda della posizione nel comando. Tienilo a mente mentre Dai un'occhiata alle domande di FFmpeg su Stack Overflow e su siti simili.

Confronteremo nuovamente il pattern di base con l'esempio per la visualizzazione del file caratteristiche.

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

    ffmpeg                                     -i glocken.mp4

Oltre alle informazioni richieste, viene stampato anche un messaggio di errore come mostrato nell'esempio riportato di seguito. Questo perché si tratta di una tecnica tecnicamente errata l'utilizzo di FFmpeg. Li usiamo perché mostra informazioni che ci interessano.

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

Installazione delle applicazioni con Docker

Se prevedi di seguire e provare i nostri comandi, puoi installare gli strumenti necessari manualmente o scegliere la via più facile e utilizzare Docker. Ti consigliamo di usare Docker, perché questo ti farà risparmiare molto tempo. Oltre a tutto questo, abbiamo ha fornito le istruzioni per configurarlo rapidamente.

  1. Inizia creando una nuova directory sul tuo computer con il nome media-tools. puoi utilizzare il nome che preferisci, tieni presente che le seguenti istruzioni supponi di usare media-tools come nome della directory.

  2. Crea una directory docker e media all'interno di media-tools. La directory media non verrà inserita nel contesto della build. È importante perché media è la posizione in cui vengono archiviati i file su cui prevediamo di eseguire operazioni, alcuni potrebbero essere molto grandi. Inserire Dockerfile direttamente media-tools rallenterà la creazione dell'immagine se la ricostruisci su strada, magari per cambiare le versioni installate.

  3. Crea /media-tools/docker/Dockerfile e aggiungi le seguenti istruzioni per la build:

    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. Crea l'immagine:

    docker build -t media-tools ./docker
    
  5. Esegui l'immagine come shell interattiva. In Linux:

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

    In Windows:

    docker run -w /media -v �%/media:/media -it --rm media-tools
    /media #
    
di Gemini Advanced.

Durante l'esecuzione dell'immagine puoi controllare le versioni sia per FFmpeg che per Shaka Packager per verificare che tutto sia riuscito eseguendo ffmpeg -version e packager --version. L'output dovrebbe essere simile al seguente:

/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

Ora che hai provato a utilizzare Shaka Packager e FFmpeg, puoi continuare apprendendo i concetti base, scopriamo le nozioni di base sui flussi di contenuti multimediali.