Dasar-dasar aplikasi media

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Bekerja dengan media sering kali membutuhkan perubahan karakteristik file media, seperti kecepatan bit atau resolusi. Menemukan cara mudah untuk memulai dapat cukup mengintimidasi. Di halaman ini, Anda akan belajar tentang alat yang digunakan dan cara untuk menginstalnya dengan cepat.

Pertama, kami menjelaskan penggunaan dasar untuk dua utilitas media command line yang umum: Shaka Packager dan FFmpeg, lalu kami akan membantu Anda menginstal alat tersebut dengan cepat. Mengapa membahas dua aplikasi? Meskipun keduanya sangat ampuh dan berguna, dan tidak melakukan segala hal yang diperlukan untuk menyiapkan media untuk web. Kami juga membuat Konversi media dan Enkripsi media yang menunjukkan banyak operasi umum dengan kedua aplikasi ini.

Aplikasi ini bukan satu-satunya pilihan yang tersedia untuk tugas manipulasi file, tetapi mereka adalah dua jenis yang paling umum dan ampuh. Opsi lainnya termasuk GUI aplikasi Miro, HandBrake, dan VLC. Ada juga proses encoding/transcoding layanan seperti Zencoder, Amazon Elastic Encoder, dan Google Transcoder API.

Shaka Packager

Shaka Packager adalah SDK pengemasan media gratis. Jika Anda menggunakan pemutar media di situs Anda, Shaka Packager adalah apa yang akan Anda gunakan untuk menyiapkan file. Ini mendukung konversi untuk dua protokol streaming video yang paling umum: Dynamic Streaming Adaptif melalui HTTP (DASH) atau HTTP Live Streaming (HLS). Shaka Packager mendukung fitur keamanan utama: enkripsi umum dan Widevine digital pengelolaan hak cipta (DRM). Aplikasi ini juga dapat menangani {i>live-streaming<i}, dan video-on-demand.

Terlepas dari apa yang tertulis di paket, utilitas ini ditujukan untuk lebih dari sekadar C++ developer. Anda dapat menggunakannya baik sebagai perpustakaan untuk membuat perangkat lunak media maupun sebagai utilitas command line untuk menyiapkan file media untuk pemutaran web. Itu adalah kapasitas terakhir yang berguna bagi kita di sini. Faktanya, bagi kreator media web, Shaka Packager adalah satu-satunya cara untuk melakukan beberapa tugas tanpa menghabiskan uang aplikasi komersial yang mahal.

Berikut adalah pola dasar untuk perintah Shaka Packager:

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

Ini bukanlah yang Anda dapatkan jika mengetik packager -help. Contoh ini adalah lebih mudah dipahami, dan ini mencerminkan contoh-contoh dalam Dokumentasi Shaka Packager. Perlu diketahui bahwa ada beberapa stream_descriptor item dalam pola. Meskipun kami tidak menunjukkannya, Anda dapat memanipulasi video tersebut dan aliran audio dari sebuah file secara terpisah dalam satu perintah.

Bandingkan pola dasar ini dengan penggunaan sederhana yang menampilkan karakteristik file. Di contoh, Kita telah menyusun bagian yang setara.

packager stream_descriptor [stream_descriptor-n] [flags]

packager input=glocken.mp4                       --dump_stream_info

Perintah tersebut menghasilkan output berikut:

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

Cari karakteristik yang dibahas dalam Dasar-dasar file media dan memperhatikan beberapa hal. Tinggi dan lebarnya sudah sesuai untuk full HD, dan codec audio dan video adalah salah satu codec yang disukai untuk jenis penampungnya, AAC untuk audio dan H264 untuk video. Perhatikan juga bahwa streaming diidentifikasi dengan angka. Ini berguna untuk operasi yang memanipulasi audio dan video secara terpisah.

Perhatikan bahwa output di atas tidak menampilkan kecepatan bit. Meskipun belum ada, {i>output<i} ini lebih mudah dibaca, jadi kita menggunakannya kapan pun kita bisa. Saat kita memerlukan informasi yang tidak bisa diperoleh Shaka Packager, seperti kecepatan bit, kita menggunakan FFmpeg.

FFmpeg

FFmpeg juga merupakan aplikasi gratis untuk merekam, mengonversi, dan streaming file media. Kemampuannya tidak lebih baik atau lebih buruk dibandingkan Shaka Packager. Hanya saja, keduanya berbeda.

Pola dasar perintah FFmpeg terlihat seperti ini:

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

Seperti Shaka Packager, aplikasi ini dapat menangani beberapa streaming. Beberapa opsi digunakan di beberapa lokasi dan memanipulasi output file secara berbeda tergantung pada di mana mereka berada dalam perintah. Perhatikan hal ini ketika Anda lihat pertanyaan FFmpeg di Stack Overflow dan situs serupa.

Kita akan membandingkan kembali pola dasar dengan contoh untuk menampilkan karakteristik.

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

    ffmpeg                                     -i glocken.mp4

Selain informasi yang kami minta, email ini juga mencetak pesan error seperti yang ditunjukkan dalam contoh di bawah ini. Itu karena secara teknis ini bukanlah tindakan yang penggunaan FFmpeg. Kita menggunakannya karena menampilkan informasi yang penting bagi kita.

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

Menginstal aplikasi dengan Docker

Jika Anda berencana untuk mengikuti dan mencoba perintah kami, Anda dapat menginstal alat yang diperlukan secara manual, atau ikuti jalur yang mudah dan gunakan Docker. Sebaiknya gunakan Docker, karena ini akan menghemat banyak waktu. Selain itu, kita juga telah memberikan petunjuk untuk membantu Anda melakukan penyiapan dengan cepat.

  1. Mulailah dengan membuat direktori baru di suatu tempat di komputer Anda bernama media-tools; Anda dapat menggunakan nama apa pun yang Anda inginkan. Perhatikan bahwa petunjuk berikut menganggap Anda menggunakan media-tools sebagai nama direktori.

  2. Buat direktori docker dan media di dalam media-tools. Tindakan ini akan menjauhkan direktori media Anda dari konteks build. Ini penting karena media adalah tempat file disimpan yang akan kita operasikan, dan beberapa di antaranya bisa berukuran cukup besar. Menempatkan Dockerfile langsung di media-tools akan memperlambat pembuatan gambar jika Anda membangunnya kembali jalan—mungkin untuk mengubah versi yang dipasang.

  3. Buat /media-tools/docker/Dockerfile, lalu tambahkan petunjuk build berikut:

    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. Buat gambar:

    docker build -t media-tools ./docker
    
  5. Jalankan gambar sebagai shell interaktif. Di Linux:

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

    Di Windows:

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

Saat menjalankan image, Anda dapat memeriksa versi untuk FFmpeg dan Shaka Packager untuk memvalidasi bahwa semuanya berhasil dengan menjalankan ffmpeg -version dan packager --version. Output-nya akan terlihat seperti ini:

/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

Sekarang setelah Anda mencoba menggunakan Shaka Packager dan FFmpeg, Anda dapat melanjutkan mempelajari konsep dasar, selanjutnya Dasar-dasar streaming media.