作者 主題: 使用 PHP 控管 Flash FLV 影片  (閱讀 4527 次)

0 會員 與 1 訪客 正在閱讀本文。

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4050
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
使用 PHP 控管 Flash FLV 影片
« 於: 2009-05-08 12:52 »
創作來源: http://phorum.study-area.org/index.php/topic,56258.0.html

今天找時間 try 了一下,有點成績所以來紀錄一下。

程式參考: http://swf.com.tw/?p=27
範例程式下載: http://www.flashcomguru.com/downloads/phpstream.zip

範例的 php 程式是沒有作用的,也就是沒有 php 也是可以運作,
影片就是靠 action script 內的 _vidName 來載入

======== 以下為修正過得檔案 ========

scrubber.html
在此使用 flash swf 網址來傳遞參數,例如 flash.swf?id=1&name=abc

代碼: [選擇]
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
width="380" height="260" id="scrubber" align="middle">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="allowFullScreen" value="false" />
    <param name="movie" value="scrubber.swf?vid=1&videoname=golfers.source.flv" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <embed src="scrubber.swf?vid=1&videoname=golfers.source.flv" quality="high" width="380" height="260"
 allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" />
</object>

flvprovider.php
請參考程式內註解

代碼: [選擇]
<?php
$path 
= &#39;/usr/local/www/apache22/data/test/flashvideo/&#39;; // 完整絕對路徑

$seekat $_GET["position"];
$filename htmlspecialchars($_GET["file"]); // 由 flash .swf 傳遞來的檔名
$ext=strrchr($filename".");
$file $path $filename;

// ----- 以下和原程式相同

scrubber.fla
修改開頭的宣告,以及 scrubit() restartIt() 兩個 function
HTML 的網址參數使用 _root 來取得

代碼: [選擇]
//var _vidName = "golfers.flv";
var _vidName = _root.videoname;
var _videoid = _root.vid;
var _vidURL = "http://192.168.1.200/test/flashvideo/" + _vidName;
var _phpURL = "http://192.168.1.200/test/flashvideo/flvprovider.php";

function scrubit() {
var tofind = Math.floor((loader.scrub._x/loaderwidth)*duration);
if (tofind <= 0 ) {
restartIt();
return;
}

for (var i:Number=0; i < times.length; i++){
var j = i + 1;
if( (times[i] <= tofind) && (times[j] >= tofind ) ){
trace("match at " + times[i] + " and " +  positions[i]);
bufferClip._visible = true;
ns.play( _phpURL + "?file=" + _vidName + "&position=" + positions[i]);
trace("play " + _phpURL + "?file=" + _vidName + "&position=" + positions[i]);

break;
}
}
}

function restartIt() {
// ns.play( _vidURL );
ns.play( _phpURL + "?file=" + _vidName + "&position=" + positions[i]);
}

圖一:運作檔案列表
圖二:實際運作

===================================

此方案的好處

1. 沒有作業系統平台限制,測試時平台為 FreeBSD
2. 檔案傳輸使用 php ,可輕易和現有程式系統整合
« 上次編輯: 2009-05-08 12:59 由 hoyo »
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫