2012-09-07 26 views
3

我正在查看netstream documentation.,但如果appendBytes()真的可以獲取任意數據,不能真正收集。我真的可以只是採取任意位圖數據(作爲一個字節數組)並追加到流(可能在發送到FMS保存文件之前)?我認爲我錯了:它只適用於動態流媒體。我知道可以通過FMS獲取網絡攝像頭饋送並直接編碼視頻。但是,如果我想在編碼之前添加一些疊加層,那麼甚至可以在Flash中使用?即你能動態地在Flash中生成netStream對象,還是你可以做的唯一的事情是draw bitmap data from a netStream而不是反之亦然?AS3:是否有可能將階段元素或位圖數據捕獲到網絡流中?

基本上,我們的目標是操縱視頻和音頻,就像Movie Masher一樣,並直接保存實際的視頻文件。 Movie Masher實際上會將單幀保存到服務器以供日後轉換。

我聽說FP11具有本地H264編碼 - 所以'專家'的問題:最終的netStream可以在瀏覽器中編碼,然後通過HTTP上傳到服務器,還是FMS仍然是一項要求?我在看這realtime encoder demo,但我不確定他們是否僅僅使用FMS作爲應用,或者如果它是流程的一部分。

有一個encoding FLV的開源項目,它使用了ByteArrayFlvEncoder,它允許你編碼原始的ByteArrays。 H264是否有相當的功能?

回答

1

根據該文件,它似乎並不可能使用本地編碼器,因爲你不能在同一時間利用這兩種NetStream.publish()NetStream.appendBytes()

NetStream可以發佈流或播放流,它不能做到這一點。 要發佈流並查看來自服務器的回放,請創建兩個NetStream對象。

換句話說,似乎沒有辦法通過NetStream對象向FMS發送自定義數據。

所以,你可以:

  1. 將相機安裝到一個Video對象
  2. 應用了一系列效果是W /像素處理
  3. 爲以後的編碼像素數據發送到服務器上一個套接字,或使用您提到的AS3編碼器將烘焙的FLV保存爲文件(在用戶的計算機或服務器上)
+0

所以基本上,即使我們可以使用鍊金術來直接錄製到H264,我們仍必須將其連接到一個攝像頭流,並不能真正寫幀到緩衝區呢? – FlavorScape

+0

正如我所說的,除了使用'NetStream'對象發送自定義數據(意味着您希望能夠利用'publish()'提供的Flash Player H264編碼器,您幾乎可以做任何事情。但看看這些文檔就是結論,你的選擇並不侷限於此,但是像我看來的那樣,服務器發送幀的自定義協議就像Movie Masher那樣有效。 –

+0

感謝您的輸入 - 我通過了這麼多不同的方法閱讀它變得充滿。接受8分鐘的賞金。運氣! – FlavorScape

1

appendBytes on the NetStream class conjun與NetStreamAppendBytesAction類一起使用。

示例代碼: 參考演示:http://www.bytearray.org/?p=1689

// retrieve the FLV stream 
var bytes:ByteArray = event.currentTarget.data; 
// put the NetStream class into Data Generation mode 
netstream.play(null); 
// before appending new bytes, reset the position to the beginning 
netstream.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN); 
// append the FLV video bytes 
netstream.appendBytes(bytes); 
相關問題