2012-08-14 301 views
0

我只是在這個問題上度過了一整天,恐怕我錯過了一些東西。使用Flash流式傳輸視頻

我在我的S3服務器上使用AVC編碼有一個簡單的mov/mp4文件,並且我有一個應該播放它的swf文件。我發現有兩種方法可以做到這一點,如here所述。

第一個是:

nc.connect(null); 
var ns:NetStream = new NetStream(nc); 
ns.play("http://url.path/movie.mov"); 

這工作,但它看起來像它下載的視頻,一旦完成,將開始播放。

爲了使用它的視頻流也說,使用這樣的:

nc.connect("http://url.path/"); 
var ns:NetStream = new NetStream(nc); 
ns.play("movie.mov"); 

我在NetStream的構造函數該代碼失敗:

ArgumentError: Error #2126: NetConnection object must be connected.

問題:

  1. 這是這樣做的正確方法還是我在代碼中遺漏了一些東西?
  2. 我發現this thread,這讓我非常傷心,但我建立了一些播放S#流媒體視頻的HTML視頻播放器,這是怎麼回事?
  3. 讀一點,看到它可能是因爲h264格式,它只在最後發送元數據。這是正確的嗎?將它轉換成另一種格式就可以解決它?
  4. 所有的Flash流媒體教程假設我用RTMP協議存儲我的視頻,閱讀了一下,看到我可以使用Adobe Media Server 5 on Amazon Web Services。我一定要嗎?有沒有免費的解決方案,或閃光只能流這個協議?

Thx。

+0

你看過Red5媒體服務器嗎? http://www.red5.org/ - 它是開源的,可以免費使用。 – bigp 2012-08-14 14:10:05

+0

你有沒有想過這件事? – BadFeelingAboutThis 2012-08-20 17:08:35

+0

還沒有,我需要檢查空氣應用程序是否修復它。 – shem 2012-08-21 06:57:01

回答

0

爲了您的方法有兩種:

  1. 無論你的服務器需要被告知流MIME類型(我有S3沒有經驗,但很可能已經設置了常見的視頻類型)或文件類型不是支持流式傳輸的類型(MOOV原子--meta數據 - 位於文件末尾而不是起始位置)。使用Adobe Media Encoder(或將該數據置於文件開頭的其他編碼程序)重新編碼爲.mp4(h.264編碼)或.f4v(或.flv)。

  2. 這是用於流媒體服務器(Flash Media Server),因此您可以輸入媒體服務器的地址:例如, 「RTMP://媒體服務器/應用/ streamName中」。

+0

1.它是一個在h.264中編碼的mov文件(當我下載它時,它的下載格式爲mp4)。而mime類型是video/mp4。 2.我必須使用這個嗎? – shem 2012-08-14 19:55:38

+0

服務器可能不會流式傳輸,因爲它位於.mov容器中。我知道一些mp4文件在文件末尾有所有的元數據,這也可能是你的問題。我試着用Adobe Media Encoder將它重新編碼爲f4v或mp4,並完全拋棄mov容器。您也可以嘗試將您的源文件從.mov重命名爲.mp4 – BadFeelingAboutThis 2012-08-14 20:53:44

+0

Thx作爲評論 - 重命名和重新編碼沒有幫助,還有其他想法? – shem 2012-08-15 08:16:38

0

如果文件在播放開始前完全下載,可能是因爲元數據位於視頻的末尾。

嘗試使用qt-faststart(或在線搜索預編譯的二進制版本)將此元數據移動到文件的開頭。