簡體   English   中英

使用 MP4 編碼在 Flash 中流式傳輸網絡攝像頭視頻

[英]Streaming webcam video in Flash using MP4 encoding

我正在開發的 Flash 應用程序的功能之一是能夠將 stream 網絡攝像頭發送給其他人。 我們只是使用 Flash 中的內置網絡攝像頭支持並通過 FMS 發送。

我們已經有人要求更高質量的視頻,但我們已經在 Flash 中使用了最高質量設置(將質量設置為 100%)。

我的理解是,在較新的 flash 播放器中,他們增加了對視頻 MPEG-4 編碼的支持。 我創建了一個簡單的測試 Flex 應用程序來嘗試比較 MP4 與 FLV 編碼的視頻質量。 但是,我似乎根本無法讓 MP4 工作。

根據Flex 文檔,要使用 MP4 而不是 FLV,我唯一需要做的就是在調用發布時在 stream 的名稱前添加“mp4:”:

將 stream 名稱指定為前綴為 mp4: 的字符串,帶或不帶文件擴展名。 前綴向服務器表明該文件包含 MPEG-4 Part 14 容器格式中的 H.264 編碼視頻和 AAC 編碼音頻。

當我嘗試這個時,沒有任何反應。 我沒有在客戶端引發任何事件,沒有拋出異常,並且我在服務器端的日志記錄沒有顯示任何流開始。

以下是相關代碼:

// These are all defined and created within the class.
private var nc:NetConnection;
private var sharing:Boolean;
private var pubStream:NetStream;
private var format:String;
private var streamName:String;
private var camera:Camera;

// called when the user clicks the start button
private function startSharing():void {
  if (!nc.connected) {
    return;
  }

  if (sharing) { return; }

  if(pubStream == null) {
    pubStream = new NetStream(nc);
    pubStream.attachCamera(camera);
  }
  startPublish();

  sharing = true;
}

private function startPublish():void {
  var name:String;

  if (this.format == "mp4") {
    name = "mp4:" + streamName;
  } else {
    name = streamName;
  }

  //pubStream.publish(name, "live");
  pubStream.publish(name, "record");
}

Flash Player 不使用 H.264 編碼,但 Flash 媒體服務器可以在 F4V 容器中錄制任何編解碼器。 Flash Media Live Encoder 可以使用 H.264 進行編碼。

所以基本上你不能從 web flash 播放器發送 h264(還沒有?)...

了解您正在運行的 FMS 版本會有所幫助嗎? 看來您至少需要 FMS 3.0.2。

您確定這適用於實時流,而不僅適用於錄制嗎? 1 2 個鏈接表明,雖然播放器可以解碼sorenson、vp6 和 h264,但它只能在sorenson中編碼。

我也有類似的情況,所以我想澄清一下。

編輯:實際上讓我懷疑的是文檔說flv和mp4,它們不是編解碼器而是容器,實時流不使用容器,編碼幀直接在rtmp數據包中傳播

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM