最近要開發一個網站,須提供錄音功能,使用者可以線上錄音,submit後錄音檔案存在網站資料庫,目前看到很多Java的程式,但是找不到PHP的程式,網站伺服器後端是不是還要安裝其他軟體,是否有哪位先進可以提供這方面的參考資料.
red5是一個open source的fms clone:
http://osflash.org/red5/showcase
但是我沒用過,要怎麼與php整合,就不是很清楚了。
用java sound api可以做出內嵌在瀏覽器的applet來錄音,不過通常檔案會存在客戶電腦中。也許可以透過這個applet做上傳檔案的功能,但是這樣從submit到檔案上傳完畢會有一定的時間差,看你能不能接受。php的部份使用處理檔案上傳的功能就可以了,倒是沒多大學問。
另外一種可能的作法(我不太確定,要回頭看api是否可行),是錄音當下把資料上傳,我沒試過。不過AudioSystem最後是可以把資料寫入檔案或OutputStream,也許把這個OnputStream再把資料傳入一個InputStream,然後用HttpClient的InputStreamEntity包裝,再用PostMethod包裝以後,就可以上傳也說不定,但是要測試過才知道。
Java Sound API請參考:
http://java.sun.com/j2se/1.5.0/docs/api/index.html?javax/sound/sampled/package-summary.html
尤其是裡面的:javax.sound.sampled.AudioSystem等類別的說明
HttpClient請參考官網:
http://hc.apache.org/httpclient-3.x/
下載的package裡面除了library以外還有許多範例。
關於從OutputStream把資料轉到InputStream,剛剛也有看到一些資料,例如這個老討論串:http://www.coderanch.com/t/275464/Streams/java/OutputStream-InputStream#1910523
以及老文章:
http://ostermiller.org/convert_java_outputstream_inputstream.html
若不介意看書的話,可以參考下面那本書
PHP for Flash FMS動態網站開發手札
http://www.books.com.tw/exep/assp.php/yogo/exep/prod/booksfile.php?item=0010452410
你的需求我個人建議用flash + php + fms(或red5)是最好的方式,因為據adobe的官方說法flash play的安裝率有97%,而flash play有錄音功能,可以搭配後端的php + fms(或red5)使用,即可達成你需求