flv視頻網站製作 使用Flex和PHP創建自己的視頻應用

本文將告訴你如何創建網站的PHP部分以及如何使用Flex框架創建一個視頻播放器。要創建一個YouTube的簡單版本(我們可以稱它爲MyTube),你需要有一些適當的工具。

在服務器端,你需要PHP 和MySQL。MySQL是用來存儲有關視頻的數據的(比如視頻的文件名,縮略圖,縮略圖的高度和寬度,標題和描述)。PHP將完成格式化頁面的工作,包括HTML和XML頁面,這取決於你想要怎麼做。

你還需要一個開源的軟件:ffmpeg,它可以將用戶上傳的任何格式的視頻文件轉換成FlashVideo文件(FLV)。當你向用戶展示一個可用的視頻列表時,這個 ffmpeg軟件還可以生成視頻中某一幀的縮略圖。毫無疑問,在視頻分享的世界中ffmpeg會是你最好的助手。它是一個功能強大、易於使用而且文檔齊全的極爲優秀的軟件。

在客戶端,有幾種不同的用戶界面可供選擇。第一種就是類似於YouTube的HTML/Flash混合式的用戶界面,另外一種就是完全基於Flash的用戶界面。這裏我選擇了Flex框架來創建一個Flash程序,這個程序首先播放視頻,然後會列出一個可用視頻的列表並提供導航。

創建PHP後臺

創建後臺的程序之前,你必須先在MySQL建立一些數據庫模式(schema)。首先,創建一個數據庫,你可以使用mysqladmin命令行:

複製內容到剪貼板
代碼:
mysqladmin create movies
完成之後,將模式加載到數據庫,模式文件內容如下:

movies.sql
複製內容到剪貼板
代碼:
DROP TABLE IF EXISTS movies;
CREATE TABLE movies (
movieId INTEGER NOT NULL AUTO_INCREMENT,
title VARCHAR( 255 ),
source VARCHAR( 255 ),
thumb VARCHAR( 255 ),
width INTEGER,
height INTEGER,
PRIMARY KEY( movieId )
);
要向數據庫中添加數據,你需要開發一個HTML上傳頁面,它可以上傳視頻,將視頻轉換成FlashVideo,獲得一個縮略圖並將這些信息添加到數據庫中。



創建上傳頁面
事實上,創建一個上傳視頻的HTML頁很簡單,如下:
addmovie.html
複製內容到剪貼板
代碼:

<html>
<body>
<form enctype="multipart/form-data" method="post"action="upload.php">
<input type="hidden" name="MAX_FILE_SIZE"value="300000" />
<table>
<tr><td>Title</td><td><inputtype="text"name="title"></td></tr>
<tr><td>Movie</td><td><inputtype="file"name="movie"></td></tr>
</table>
<input type="submit" value="Upload"/>
</form>
</body>
</html>
這個頁面的表單提交到 upload.php 頁,upload.php會處理視頻,抓取縮略圖並將數據添加到數據庫中。頁面代碼如下:
upload.php
複製內容到剪貼板
代碼:

<html><body>
<?php
require "DB.php";

function converttoflv( $in, $out )
{
unlink( $out );
$cmd = "ffmpeg -v 0 -i $in -ar11025 $out 2>&1";
$fh = popen( $cmd, "r");
while( fgets( $fh ) ) {}
pclose( $fh );
}

function getthumbnail( $in, $out )
{
unlink( $out );
$cmd = "ffmpeg -i $in -pix_fmtrgb24 -vframes 1 -s 300x200 $out2>&1";
$fh = popen( $cmd, "r");
while( fgets( $fh ) ) {}
pclose( $fh );
}

function flv_import( $upfile, $fname, $title )
{
$fname = preg_replace('/\..*$/', '', basename( $fname ) );
$flvpath = "$fname.flv";
$thumbpath ="$fname.gif";

converttoflv( $upfile,"movies\\$flvpath" );
getthumbnail( $upfile,"movies\\$thumbpath" );

$dsn ='mysql://root@localhost/movies';
$db =&DB::connect( $dsn );
if ( PEAR::isError( $db ) ) {die($db->getMessage()); }

$sth =$db->prepare( 'INSERT INTO movies VALUES ( 0, ?, ?,?, ?, ? )' );
$db->execute($sth, array( $title, $flvpath, $thumbpath, 300, 200 ) );
}

flv_import( $_FILES['movie']['tmp_name'], $_FILES['movie']['name'],$_POST['title'] );
?>
File sucessfully uploaded
</body></html>
函數flv_import()是腳本代碼的核心部分,它調用了converttoflv() 函數和getthumbnail()函數來將視頻轉換成FlashVideo文件和創建縮略圖。然後它向數據庫中添加了有關視頻的一些數據。有關FLV和縮略圖的功能都使用了 ffmpeg中的命令行來處理視頻。
當我打開addmovie.html 頁面的時候,我做了一下截圖,見圖1.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章