Bekerja dengan media sering kali memerlukan perubahan karakteristik file media, seperti kecepatan bit atau resolusi. Menemukan cara mudah untuk memulai bisa sangat menakutkan. Di halaman ini, Anda akan mempelajari alat yang digunakan dan cara menginstalnya dengan cepat.
Pertama, kami menjelaskan penggunaan dasar untuk dua utilitas media command line umum: Shaka Packager dan FFmpeg, lalu kami membantu Anda menginstal alat tersebut dengan cepat. Mengapa mencakup dua aplikasi? Meskipun keduanya sangat bermanfaat dan juga bermanfaat, bukan semua yang diperlukan untuk menyiapkan media untuk web. Kami juga membuat halaman Konversi media dan Enkripsi media yang menampilkan banyak operasi yang lebih umum dengan kedua aplikasi ini.
Aplikasi ini bukan satu-satunya opsi yang tersedia untuk tugas manipulasi file, tetapi keduanya adalah dua yang paling umum dan canggih. Opsi lainnya mencakup aplikasi GUI Miro, HandBrake, dan VLC. Ada juga layanan encoding/transcoding seperti Zencoder, Amazon Elastic Encoder, dan Google Transcoder API.
Pemaket Shaka
Shaka Packager adalah SDK pengemasan media gratis. Jika Anda menggunakan pemutar media di situs, Shaka Packager adalah yang akan Anda gunakan untuk menyiapkan file. Fitur ini mendukung konversi untuk dua protokol streaming video yang paling umum: Dynamic Adaptive Streaming over HTTP (DASH) atau HTTP Live Streaming (HLS). Shaka Packager mendukung fitur keamanan utama: enkripsi umum dan pengelolaan hak digital Widevine (DRM). Teknologi ini juga dapat menangani live streaming dan video on demand.
Terlepas dari yang dinyatakan di paket, utilitas ini ditujukan untuk lebih dari developer C++. Anda dapat menggunakannya baik sebagai library untuk membangun software media maupun utilitas command line untuk menyiapkan file media untuk pemutaran web. Ini 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 mengeluarkan uang untuk 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
lebih mudah untuk dijelaskan, dan hal ini mencerminkan contoh dalam
dokumentasi Shaaka Packager. Perhatikan bahwa ada beberapa item stream_descriptor
di dalam pola. Meskipun kami tidak menampilkannya, Anda dapat memanipulasi streaming
video dan audio dari file secara terpisah dengan satu perintah.
Bandingkan pola dasar ini dengan penggunaan sederhana yang menampilkan karakteristik file. Di contoh, Kita telah menyejajarkan bagian-bagian yang setara.
packager stream_descriptor [stream_descriptor-n] [flags]
packager input=glocken.mp4 --dump_stream_info
Perintah 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 perhatikan beberapa hal. Tinggi dan lebarnya benar untuk full HD, serta codec audio dan video termasuk di antara codec pilihan untuk jenis penampungnya, AAC untuk audio dan H264 untuk video. Perhatikan juga bahwa aliran data diidentifikasi dengan angka. Hal ini berguna untuk operasi yang memanipulasi audio dan video secara terpisah.
Perhatikan bahwa output di atas tidak menampilkan kecepatan bit. Terlepas dari apa yang hilang, {i>output<i} ini lebih mudah dibaca, jadi kita menggunakannya kapan pun kita bisa. Ketika membutuhkan informasi yang tidak dapat diperoleh Shaka Packager, seperti kecepatan bit, kita menggunakan FFmpeg.
FFmpeg
FFmpeg juga merupakan aplikasi gratis untuk merekam, mengonversi, dan melakukan streaming file media. Kemampuannya tidak lebih baik atau lebih buruk daripada Shaka Packager. Keduanya hanya berbeda.
Pola dasar perintah FFmpeg terlihat seperti ini:
ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output
Seperti Shaka Packager, aplikasi ini dapat menangani beberapa {i>stream<i}. Beberapa opsinya digunakan di beberapa lokasi dan memanipulasi output file secara berbeda bergantung pada lokasinya dalam perintah. Perhatikan hal ini saat Anda melihat pertanyaan FFmpeg di Stack Overflow dan situs serupa.
Kita akan membandingkan kembali pola dasar dengan contoh untuk menampilkan karakteristik file.
ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output
ffmpeg -i glocken.mp4
Selain informasi yang kami minta, informasi ini juga mencetak pesan error seperti yang ditunjukkan pada contoh di bawah. Hal ini karena secara teknis ini adalah penggunaan FFmpeg yang salah. Kami menggunakannya karena menampilkan informasi yang penting bagi kami.
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 mengambil jalur yang mudah dan menggunakan Docker. Sebaiknya gunakan Docker, karena ini akan menghemat banyak waktu. Selain itu, kami juga telah memberikan petunjuk agar Anda dapat menyiapkan dengan cepat.
Mulai dengan membuat direktori baru di komputer Anda yang bernama
media-tools
; Anda dapat menggunakan nama apa pun yang Anda suka. Perhatikan bahwa petunjuk berikut mengasumsikan Anda menggunakanmedia-tools
sebagai nama direktori.Buat direktori
docker
danmedia
di dalammedia-tools
. Tindakan ini akan menyimpan direktorimedia
Anda di luar konteks build. Hal ini penting karenamedia
adalah tempat file disimpan dan akan kami gunakan untuk melakukan operasi, dan beberapa di antaranya bisa berukuran cukup besar. MenempatkanDockerfile
secara langsung dimedia-tools
akan memperlambat pembuatan image jika Anda mem-build-nya kembali di kemudian hari, mungkin untuk mengubah versi yang diinstal.Buat
/media-tools/docker/Dockerfile
, dan 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"]
Buat gambar:
docker build -t media-tools ./docker
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 gambar, Anda dapat memeriksa versi untuk FFmpeg dan Shaka Packager
guna 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
Setelah mencoba menggunakan Shaka Packager dan FFmpeg, Anda dapat terus mempelajari konsep-konsep dasar, selanjutnya Dasar-dasar streaming media.