Script PHP Audio Custom untuk Streaming dengan FFmpeg
Script di bawah ini digunakan untuk melakukan restreaming video dari CCTV yang berada di Kediri dan menggabungkan audio kustom sebelum mengirimkan stream tersebut ke Facebook Live melalui RTMP. Berikut adalah penjelasan tentang setiap baris kode beserta tutorial cara menjalankannya.
#### 1. Instalasi Server dan Persiapan
1. Siapkan VPS Linux:
- Pastikan VPS menggunakan distribusi Linux yang mendukung FFmpeg, seperti Ubuntu atau CentOS.
2. Install FFmpeg
apt-get update
apt-get install ffmpeg
3. Setup PHP:
- Jika PHP belum terpasang, Anda perlu menginstalnya:
apt-get install php
4. Upload Script PHP:
- Upload script di bawah ini ke direktori server Anda, misalnya di `/var/www/html/stream.php`.
#### 2. Penjelasan Script PHP
<?php
// Lokasi file FFmpeg
$ffmpeg = '/usr/bin/ffmpeg';
- Penjelasan: Baris ini menunjukkan lokasi dari executable `ffmpeg` di server. Pastikan lokasi ini sesuai dengan instalasi FFmpeg di server Anda.
// Sumber video RTSP
$videoSource = 'https://pplterpadu.kedirikota.go.id/cctv/semampir.flv'; // Ganti dengan URL RTSP video Anda
- Penjelasan: URL ini adalah sumber video yang diambil dari CCTV. Format RTSP atau FLV sering digunakan untuk streaming video. Anda dapat mengganti URL ini sesuai dengan sumber CCTV lainnya.
// Sumber audio MP3
$audioSource = '/opt/audioku.mpeg'; // Ganti dengan nama file audio Anda
- Penjelasan: Ini adalah lokasi file audio yang akan ditambahkan ke video. Anda dapat menggunakan file berformat MP3, MPEG, atau M4A.
// Watermark teks
$watermarkText = "Restreaming by : iptvpanel.classy.id"; // Teks watermark yang ingin Anda gunakan
- Penjelasan: Teks ini akan ditampilkan sebagai watermark pada video streaming. Anda dapat menyesuaikan teks ini dengan nama atau brand Anda.
// URL RTMP YouTube Live Anda
$rtmpUrl = 'rtmps://live-api-s.facebook.com:443/rtmp/FB-4444-0-Abx6_BEN9o-7777'; // Ganti dengan URL RTMP Anda
- Penjelasan: URL ini adalah tujuan stream, dalam hal ini, adalah RTMP URL dari Facebook Live. Ganti dengan URL RTMP dari akun Facebook Live atau platform lainnya.
// Frame rate video (misalnya 30 fps)
$frameRate = 30;
- Penjelasan: Mengatur frame rate video ke 30 frame per detik. Anda bisa menyesuaikannya sesuai kebutuhan.
// Interval keyframe (GOP) harus diatur ke 2 detik (untuk frame rate 30 fps, ini berarti GOP = 60)
$keyframeInterval = $frameRate * 2;
- Penjelasan: Mengatur interval keyframe (Group of Pictures, GOP) untuk memastikan streaming berjalan lancar. Dalam hal ini, keyframe diatur setiap 2 detik (60 frame).
// Command FFmpeg
$ffmpegCommand = "$ffmpeg -i $videoSource -stream_loop -1 -i $audioSource -vf \"drawtext=text='$watermarkText':x=50:y=50:fontsize=15:fontcolor=white\" -c:v libx264 -c:a aac -g $keyframeInterval -strict experimental -f flv \"$rtmpUrl\"";
- Penjelasan: Command ini menjalankan FFmpeg untuk:
- Mengambil video dari sumber CCTV.
- Menambahkan audio dari file kustom.
- Menambahkan watermark teks ke video.
- Mengatur codec video (`libx264`) dan audio (`aac`).
- Mengatur interval keyframe.
- Mengirim stream ke URL RTMP.
// Loop untuk memastikan FFmpeg dijalankan kembali jika berhenti
while (true) {
// Menjalankan command FFmpeg
exec($ffmpegCommand, $output, $returnCode);
// Output pesan sukses atau error
if ($returnCode === 0) {
echo "Streaming telah dimulai!";
break; // Keluar dari loop jika streaming berjalan dengan sukses
} else {
echo "Error saat memulai streaming: " . implode(PHP_EOL, $output);
echo "Mencoba untuk memulai ulang streaming...\n";
sleep(5); // Tunggu 5 detik sebelum mencoba ulang
}
}
?>
- Penjelasan:
- Loop Infinite: Script akan terus berjalan dan memastikan bahwa jika proses streaming terhenti, maka akan mencoba untuk memulai ulang setelah 5 detik.
- Error Handling: Jika streaming gagal, error akan ditampilkan dan script akan mencoba kembali.
#### 3. Cara Menjalankan Script
1. Jalankan Script di Command Line:
- Anda dapat menjalankan script ini dari command line dengan perintah:
php /var/www/html/stream.php
2. Pastikan Streaming Berjalan:
- Buka dashboard Facebook Live untuk memastikan stream berjalan dengan benar.
0 Response to "Script PHP Audio Custom untuk Streaming dengan FFmpeg"
Posting Komentar