Я искал простой (или, возможно, не так-простой) ход для проблемы, которую я имею в своей настройке для простого тестового примера: потоковая передача видео через red5 media сервер.ffmpeg - непрерывная потоковая передача файлов по RTMP
Я построил небольшой иш библиотека FLV файлов соскабливают с YouTube и сумел воспроизвести их последовательно со следующим PERL скрипт:
use Cwd;
use strict;
use warnings;
use DBI;
use DBD::mysql;
our $db = DBI->connect();
my $dst = "/home/seb/youtube/";
sub streamFile {
my $r = $db->prepare("SELECT name FROM music_flvs ORDER BY RAND() LIMIT 1");
$r->execute();
my @data = $r->fetchrow_array();
my $filename = $data[0]
my $t = `ffmpeg -re -i '${dst}${filename}' -ab 48k -ac 1 -vcodec libx264 -crf 30 -s "640x480" -acodec libfaac -ar 44100 -threads 4 -f flv 'rtmp://server/oflaDemo/music'`;
return 1;
}
while (&streamFile()) {
}
Этот скрипт делает его цель очень хорошо: она играет файлы одного от одного до ffmpeg
. Тем не менее, он делает это с важной проблемой: он вызывает событие Unpublish каждый раз, когда он меняет песни, что приводит к отключению всех клиентов. Я хотел бы предотвратить это. Событие проявляется в ActionScript, как это:
16:33:54:209 - Playback - NetStream.Play.UnpublishNotify
16:33:54:209 - Playback - NetStream.Play.PublishNotify
Я видел concat
демультиплексора и считают, что это может несколько помочь мне. Вопрос довольно прост: какой лучший способ сделать ffmpeg потоком воспроизведения плейлиста на RTMP-сервер без какого-либо события Unpublish?
Это то, что я думал. Тем не менее, я хотел бы, чтобы кто-то мог «переопределить» поток как таковой - если необходимо, перейдите по произвольному плейлисту. Кстати, я пришел из Shoutcast на этом, у которого есть эти функции. Идея клиента хорошая, и я, скорее всего, поеду с этим. –
Построение пользовательского флеш-клиента решает проблему. Ответ принят, большое спасибо за совет :-) –