免費的 Flash FLV 串流視訊解決方案

免費的 Flash FLV 串流視訊解決方案
文∕趙英傑

最近的一個案子當中需要用到串流視訊(streaming video),因為視訊只是一小部分需求,業主沒有意願添購串流伺服器(例如:Macromedia Flash Communication Server∕Flash Media Server 或者德國 OnlineLib 公司的 VCS Broadcaster),而且既有的 Web Hosting 公司也未提供串流視訊服務。所幸在 FlashComGuru 網站找到一篇說明採用 PHP 提供免費 Flash FLV 串流服務的文章,包含 Flash 和 PHP 原始檔。最酷的是,伺服器端不需要安裝任何額外的軟體,因而解決了串流視訊的問題 :grin:,該網站有線上示範。

底下是筆者使用該文章的原始檔修改的視訊範例,提供給有興趣的朋友參考(這不是很好的例子,因為是用老舊的 Nikon 數位相機錄影,沒有聲音)。影片採用 Flash 8 的 on2 VP6 codec 以 400kbps 壓縮成 FLV (Flash Video 格式),影片長度只有 15 秒:

如果您看不到視訊,請下載 Flash 8 Player 下載 Flash Player

Posts created 483

21 thoughts on “免費的 Flash FLV 串流視訊解決方案

  1. 到flashcomguru網站下載原始檔(http://www.flashcomguru.com/downloads/phpstream.zip)並解壓縮後,將能看到三個檔案:php, .fla和.flv(範例視訊)。

    開啟scrubber.fla檔,修改位於actions圖層第一格,第7到9行的程式:

    // 這是第7行,設定視訊檔名。
    var _vidName = “golfers.flv”;

    /* 這是第8行,把www.yourdomain.com換成你的網址 */
    var _vidURL = “http://www.yourdomain.com/” + _vidName;

    /* 這是第9行,把www.yourdomain.com換成你的網址 */
    var _phpURL = “http://www.yourdomain.com/flvprovider.php”;

    匯出Flash影片(.swf檔)後,把此.swf檔,連同上面的.flv和.php程式一齊上傳到你的網站根目錄即可測試,good luck!

  2. 對,用傳統的ActiveX控制項和外掛程式處理方式,採用 <object> 和 <embed> 標籤,直接看此頁的原始碼就能瞭解。

  3. 🙄
    請問大大
    為什麼我用 Flash MX 2004 開啟不了 該fla檔

    初學者
    煩請多多指教

  4. Open Red5 中文社区开张了!
    在大伙的共同努力下,我们的Open Red5中文社区终于开张了.
    Red5 Server 是一个开源Flash 媒体服务器,它提供了流媒体服务,实时广播服务,共享对象,远程调用,客户端录制等特性.目前已经是0.6 final released版本了.但是目前无论是在国内还是在国外,相关的技术文档很少.随着目前国内的用户逐渐增多,大家迫切希望有一个中文的社区作为该开源软件的技术支持.为此Open Red5中文社区就在这样的背景下诞生了.希望我们大家在这样的一个开放的平台上共同学习,共同进步!

    网站地址:
    http://www.openred5.cn
    http://www.openred5.com

  5. 請問我用appserv-win32-2.4.8 這個軟體
    想在自己電腦裡面RUN這個串流視訊
    我解壓縮的三個檔案都放進去C:\AppServ\www
    =============我的scrubber設定==============
    // 這是第7行,設定視訊檔名。
    var _vidName = “golfers.flv”;
    /* 第9行,把www.yourdomain.com換成你的網址 */
    var _vidURL = “http://localhost/flvprovider.php” + _vidName;
    /* 第11行,把www.yourdomain.com換成你的網址 */
    var _phpURL = “http://localhost/flvprovider.php”;
    ================我的flvprovider.php設定===================
    //full path to dir with video.
    $path = ‘C:\AppServ\www\flvprovider\flv’;
    ====================================================
    他會顯示
    ERORR: The file does not exist
    我是PHP初學者 咳咳 Orz

  6. hi bubu:

    你的ActionScript程式第9行要改成(去掉flvprovider.php):

    /* 第9行,把www.yourdomain.com換成你的網址 */
    var _vidURL = “http://localhost/” + _vidName;

    PHP裡面的path,用相對路徑(請留意路徑的斜線):

    “flvprovider/flv”

    jeffrey

  7. 如何將FLV加入alpha,叫入flash時就有去背效果?
    我試過用AE軟體去背後,轉出AVI,之後用FLASH的video encode轉成flv
    然後叫入flash中,結果還是沒去到背!
    到底是哪個環節沒做好?
    請專家幫我解解謎吧!謝謝拉!

  8. 既然使用After Effects,你可以從中選擇File > Export > Macromedia Flash Video (FLV)指令,直接匯出Flash Video (.flv)格式。匯出影片時,在匯出設定畫面中,按下 “Show Advanced Settings” (顯示進階設定)鈕,並勾選 “Encode Alpha Channel” 選項即可。

    至於AVI檔沒有Aplha Channel的原因,應該是你選擇了一個不支援Alpha Channel的codec(壓縮/解壓縮程式)。

  9. 您好~:razz:~請問一下~~我也是出現下面這個錯誤訊息
    ERORR: The file does not exist

    問題1.
    $path = ‘D:/test/golfers.flv’ ← 這裡指哪種檔案的路徑?golfers.flv 嗎?還是指到資料夾就好?還是..?..

    問題2.
    請問$_GET[“position”]; 及 $_GET[“file”] 是代表哪種URL變數,因為您的PHP檔只有1個,所以我並不知道GET變數從哪傳過來~~以及它們的值各代表什麼? 檔名?路徑? 哪種值呢? 謝謝

    $seekat = $_GET[“position”];
    $filename = htmlspecialchars($_GET[“file”]);
    $ext=strrchr($filename, “.”);
    $file = $path . $filename;

    if((file_exists($file)) && ($ext==”.flv”) && (strlen($filename)>2) && (!eregi(basename($_SERVER[‘PHP_SELF’]), $filename)) && (ereg(‘^[^./][^/]*$’, $filename)))
    {
    header(“Content-Type: video/x-flv”);
    if($seekat != 0) {
    print(“FLV”);
    print(pack(‘C’, 1 ));
    print(pack(‘C’, 1 ));
    print(pack(‘N’, 9 ));
    print(pack(‘N’, 9 ));
    }
    $fh = fopen($file, “rb”);
    fseek($fh, $seekat);
    while (!feof($fh)) {
    print (fread($fh, filesize($file)));
    }
    fclose($fh);
    }
    else
    {
    print(“ERORR: The file does not exist”); }
    ?>

  10. 您好~~抱歉~~我發現了…
    原來是在Flash傳值過去~~
    第2個問題我收回~~謝謝~~:lol:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top