간단한 테스트 케이스를 위해 설정 한 문제에 대한 간단한 (또는 간단하지는 않은) 둘러보기를 둘러 보았습니다. red5 미디어를 통한 비디오 스트리밍 섬기는 사람.ffmpeg - RTMP를 통한 연속 파일 스트리밍
는 내가 FLV 파일의 작은 틱 라이브러리가 YouTube에서 긁어 다음과 같은 펄 스크립트를 연속적으로 재생할 관리 구축:
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()) {
}
이 스크립트는 매우 잘 그것의 목적을 수행합니다 그것은 파일을 재생 1에서 ffmpeg
까지 그러나 중요한 문제가 있습니다 : 노래를 바꿀 때마다 게시 취소 이벤트가 발생하여 모든 클라이언트 연결이 끊어집니다. 나는 이것을 방지하고 싶다. 이 이벤트는이 같은 ActionScript에서 자체 명단 : 나는 concat
디멀티플렉서 본과 다소 나에게 도움이 될 수 있다고 생각했다
16:33:54:209 - Playback - NetStream.Play.UnpublishNotify
16:33:54:209 - Playback - NetStream.Play.PublishNotify
. 질문은 매우 간단합니다 : ffmpeg를 재생 목록을 RTMP 서버에 게시하지 않고 언 퍼블리시 이벤트를 발생시키지 않는 가장 좋은 방법은 무엇입니까?
이것은 내가 생각한 것입니다. 그러나 누군가가 필요에 따라 임의의 재생 목록을 통해 스트림을 "대체"할 수있게하고 싶습니다. 나는이 특징에 관한 Shoutcast에서 오는 중입니다. 고객의 아이디어는 좋은 생각이고, 나는 그걸로 갈 것 같습니다. –
맞춤형 플래시 클라이언트를 구축하면 문제가 해결됩니다. 답변을 수락, 대단히 조언을 주셔서 감사합니다 :-) –