代码之家  ›  专栏  ›  技术社区  ›  Herms

使用MP4编码的Flash流式网络摄像头视频

  •  3
  • Herms  · 技术社区  · 15 年前

    我正在开发的Flash应用程序的一个功能是能够将网络摄像头传输给其他人。我们只是在Flash中使用内置的网络摄像头支持,并通过FMS发送。

    我的理解是,在较新的flash播放器中,他们为视频添加了对MPEG-4编码的支持。我创建了一个简单的TestFlex应用程序,尝试比较MP4和FLV编码的视频质量。然而,我似乎根本无法让MP4工作。

    根据 Flex documentation

    将流名称指定为字符串 前缀为mp4:带或不带 文件扩展名。前缀 向服务器指示该文件 包含H.264编码的视频和 第14部分集装箱格式。

    当我尝试这种方法时,什么都没有发生。我没有在客户端引发任何事件,也没有抛出任何异常,服务器端的日志记录也没有显示任何正在启动的流。

    以下是相关代码:

    // 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");
    }
    
    3 回复  |  直到 15 年前
        1
  •  1
  •   Theo.T    15 年前

    了解您正在运行的FMS版本会有帮助吗?

        2
  •  1
  •   Pablote    15 年前

    您确定这适用于实时流而不仅仅是录制吗?这 1 2 链接表明,虽然玩家可以 解码 sorenson、vp6和h264,它只能在 索伦森

    我也有类似的情况,所以我想澄清一下。

    编辑:实际上让我怀疑的是,文档中说flv和mp4不是编解码器,而是容器,直播流不使用容器,编码的帧直接在rtmp数据包中传输

        3
  •  1
  •   Cristian Rusu    13 年前

    Flash Player不使用H.264进行编码,但Flash Media Server可以在F4V容器中录制任何编解码器。Flash Media Live编码器可以使用H.264进行编码。

    所以基本上你不能从网络flash播放器发送h264(还没有?)。。。

    推荐文章