2012-07-10 81 views
1

我使用FFmpeg的捕捉到我的屏幕:直播不起作用

ffmpeg -f dshow -i video="UScreenCapture" -r 5 -s 640x480 -acodec libmp3lame -ac 1 -vcodec mpeg 4 -vtag divx -q 10 -f mpegts tcp://127.0.0.1:1234 

所以让它流于某处。接受者脚本:

error_reporting(E_ALL); /* Allow the script to hang around waiting for connections. */ 
set_time_limit(30); /* Turn on implicit output flushing so we see what we're getting as it comes in. */ 
ob_implicit_flush(); 


$address = '127.0.0.1'; 
$port = 1234; 
$outfile = dirname(__FILE__)."/output.flv"; 
$ofp = fopen($outfile, 'wb'); 

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; sleep (5); die; } 
if (socket_bind($sock, $address, $port) === false) { echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; sleep (5); die; } 
if (socket_listen($sock, 5) === false) { echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; sleep (5); die; } 
if (($msgsock = socket_accept($sock)) === false) { echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n"; sleep (5); break; } 
do { 
    $a = ''; 
    socket_recv ($msgsock, $a, 65536, MSG_WAITALL); 
    fwrite ($ofp, $a); 
    //echo strlen($a)."\r\n"; 
} while (true); 

它似乎将东西保存到磁盘好。现在,这里是HTML:

我真的不知道如何做到这一点,但基于一个例子:

<video src="/output.flv"></video> 

但它不会做任何事情。如果我想流传输的东西,那么情况如何?

+1

哪个浏览器?请注意,目前,不同的浏览器支持不同的编解码器。还要注意,通过PHP设置正确的MIME类型,它已经引起了FF的问题。它的Firefox, – bcoughlan 2012-07-11 03:22:58

+0

,我还没有尝试过与其他浏览器。但它将成为一个实时流(无开始/结束),所以它可能会错过文件标识符头文件?也许它期望静态格式? – 2012-07-11 07:55:11

+0

它不适用于任何浏览器 – 2012-07-11 15:18:21

回答

1

HTML 5视频将不支持FLV的格式HTML5将支持以下格式视频仅

.mp4 = H.264 + AAC 
.ogg/.ogv = Theora + Vorbis 
.webm = VP8 + Vorbis 

研究HTML5视频在以下网站基础 HTML5 video basics

如果你要玩

FLV你必须使用Flash或Flex程序或像流水游戏一些FLV播放器