ffmpeg-RTMP上的连续文件流

ffmpeg-RTMP上的连续文件流,ffmpeg,red5,rtmp,Ffmpeg,Red5,Rtmp,我一直在寻找一个简单(或者可能不是那么简单)的演练,来解决我在设置一个简单测试用例时遇到的一个问题:red5媒体服务器上的视频流 我已经构建了一个从YouTube抓取的FLV文件的小ish库,并使用以下perl脚本成功地连续播放它们: use Cwd; use strict; use warnings; use DBI; use DBD::mysql; our $db = DBI->connect(); my $dst = "/home/seb/youtube/"; sub stream

我一直在寻找一个简单(或者可能不是那么简单)的演练,来解决我在设置一个简单测试用例时遇到的一个问题:red5媒体服务器上的视频流

我已经构建了一个从YouTube抓取的FLV文件的小ish库,并使用以下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
一个接一个地播放文件。然而,它这样做有一个关键的问题:每次交换歌曲时都会导致取消发布事件,这会导致所有客户端断开连接。我想防止这种情况发生。事件在ActionScript中表现为:

 16:33:54:209 - Playback - NetStream.Play.UnpublishNotify
 16:33:54:209 - Playback - NetStream.Play.PublishNotify

我看过
concat
demuxer,相信它可能会对我有所帮助。问题很简单:在不引起未发布事件的情况下,将ffmpeg流作为播放列表发送到RTMP服务器的最佳方法是什么?

我认为没有简单的ffmpeg方法可以阻止发送这些事件

当你说客户端时,你真的是指播放流的Flash客户端,对吗

您可以将这些视频保存在red5上,并在red5中配置播放列表,而不是将它们从FFMPEG流式传输到red5。Red5具有所谓的播放列表功能,可以连续播放视频

如果您的客户端是定制的,您也可以修改客户端以跳过此操作。
我认为人们实现无休止播放列表的最常见方式是使用简单的ActionScript客户端代码,自动跳过不同的视频。这比任何类型的服务器端解决方案都要简单。

我就是这么想的。然而,我希望有人能够“覆盖”这样的流-流在随机播放列表,如果必要的话。顺便说一句,我是从Shoutcast来的,它有这些特点。客户端的想法很好,我很可能会同意。构建自定义flash客户端解决了这个问题。答案已接受,非常感谢您的建议:-)