Membangun saluran pengiriman video langsung sendiri: Panduan Praktis FFmpeg×MediaMTX

Masalah: Kamera berbicara melalui RTSP, tetapi browser tidak dapat mendengarnya.

Misalkan Anda ingin menampilkan video langsung dari kamera keamanan atau perangkat IoT di aplikasi web. Sebagian besar kamera mengalirkan dengan RTSP (Real Time Streaming Protocol). Namun, browser telah menghentikan dukungan RTSP sejak tahun 2010-an. Singkatnya, masalah mendasar adalah bahwa “bahasa yang digunakan kamera” dan “bahasa yang dapat dipahami browser” berbeda.

Penerjemahan ini ditangani oleh FFmpeg (pisau serba guna untuk pengolahan video) dan MediaMTX (server konversi protokol). Dengan menggabungkan kedua ini, Anda dapat membangun pipeline streaming dengan latensi rendah seperti profesional.

Penjelasan Alat

FFmpeg: tongkat sihir untuk mengonversi semua format video

Alur pemrosesan FFmpeg:

  • Demultiplexer: Memisahkan video dan audio dari kontainer
  • Dekode: Mengubah data terkompresi menjadi frame mentah
  • Penyaringan: Penskalaan, koreksi warna, dan lain-lain diterapkan
  • Pengkodean: Kompresi menggunakan H.264 atau VP9
  • Multiplex: Dikemas dalam wadah keluaran

Untuk penggunaan streaming, FFmpeg berfungsi sebagai mesin input. Mengambil video dari webcam atau file, mengkodekannya dengan efisien, dan mengirimkannya ke server melalui RTSP atau RTMP.

MediaMTX: Protokol hub yang mendukung banyak klien

FFmpeg memiliki output tunggal, tetapi MediaMTX dapat melakukan penyiaran secara simultan ke beberapa klien. Selain itu:

  • Menerima dengan RTSP/RTMP/WebRTC/HLS
  • Dikemas ulang untuk klien yang berbeda
  • Mengonversi RTSP ke WebRTC (dapat diputar di browser)
  • Otentikasi・Distribusi Beban・Manajemen Klien

Dengan satu biner dan file konfigurasi YAML, dapat menangani skenario kompleks yang sebelumnya memerlukan beberapa server khusus.

Langkah Implementasi

Langkah 1: Instal alat

Ubuntu/Debian:

sudo apt update sudo apt install autoconf automake build-essential pkg-config libx264-dev libvpx-dev libfdk-aac-dev git clone ffmpeg cd ffmpeg ./configure --enable-gpl --enable-libx264 --enable-nonfree make -j$(nproc) sudo make install

macOS:

brew install ffmpeg

Windows: Unduh dari gydan.dev → Ekstrak ke C:\ffmpeg → Tambahkan ke PATH sistem

MediaMTX v1.15.0 juga terinstal (mudah dengan satu biner).

Langkah 2: Streaming file video

buat mediamtx.yml:

jalur: test_video: sumber: penerbit

Memulai MediaMTX:

mediamtx mediamtx.yml

Mengirim video melalui RTSP dengan FFmpeg:

ffmpeg -re -i video.mp4 -c:v libx264 -preset fast -c:a aac -f rtsp rtsp://localhost:8554/test_video

-re: Mempertahankan frame rate (diperlukan untuk live streaming) -preset fast:Keseimbangan kecepatan encoding

Periksa di VLC Media Player: Media → Buka Aliran Jaringan → rtsp://localhost:8554/test_video

Langkah 3: Siarkan langsung dari kamera web

Windows:

ffmpeg -f dshow -rtbufsize 100M -i video=“Integrated Webcam” -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam

macOS:

ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i “0” -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam

Linux:

ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -f rtsp rtsp://localhost:8554/webcam

-tune zerolatency adalah poin. Optimalisasi streaming waktu nyata.

Langkah 4: Putar di browser (WebRTC)

perbarui mediamtx.yml:

webrtc: ya webrtcAddress: :8889 webrtcEncryption: tidak webrtcAllowOrigin: '*'

jalur: webcam: sumber: penerbit

Mulai ulang MediaMTX dan buka http://localhost:8889 di browser → gambar langsung akan ditampilkan di browser.

Aliran Data

  1. Webcam → Generasi Frame Langsung
  2. FFmpeg → Mengkode H.264 & Mengirim RTSP
  3. MediaMTX → Penerimaan RTSP dan konversi WebRTC
  4. Browser → Pemutaran waktu nyata dengan WebRTC

MediaMTX tidak melakukan re-encoding. Hanya mengemas ulang aliran H.264 ke dalam kontainer protokol yang berbeda. Oleh karena itu, mewujudkan latensi rendah.

Ringkasan Kali Ini

Pipa dasar selesai:

  • FFmpeg dan MediaMTX telah diinstal
  • Memeriksa streaming file video dan kamera web
  • Pemutaran berhasil melalui WebRTC di browser

Namun, ada tantangan dalam operasi produksi:

  • Tanpa otentikasi dan keamanan
  • hanya berfungsi di localhost
  • Dukungan kamera IP nyata belum
  • Tanpa penanganan kesalahan

Pada Bagian 2, kita akan melanjutkan dengan penambahan otentikasi, koneksi kamera IP, dan dukungan internet.

Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
Tambahkan komentar
Tambahkan komentar
Tidak ada komentar
  • Sematkan