Transmisión de video de cámara web en Flash con codificación MP4

Una de las características de la aplicación Flash en la que estoy trabajando es poder transmitir una cámara web a otros. Solo estamos usando el soporte de cámara web incorporado en Flash y enviándolo a través de FMS.

Algunas personas han pedido videos de mayor calidad, pero ya estamos utilizando la configuración de mayor calidad que podemos en Flash (configuración de calidad al 100%).

Mi comprensión es que en los nuevos reproductores flash agregaron soporte para la codificación MPEG-4 para los videos. Creé una aplicación Flex de prueba simple para probar y comparar la calidad de video de las codificaciones MP4 vs FLV. Sin embargo, parece que no puedo hacer que MP4 funcione en absoluto.

De acuerdo con la Documentación de Flex lo único que necesito hacer para usar MP4 en lugar de FLV es anteponer "mp4:" al nombre de la transmisión al llamar a publicar:

Especifique el nombre de la secuencia como una cadena con el prefijo mp4: con o sin la extensión del nombre de archivo. El prefijo indica al servidor que el archivo contiene video codificado H.264 y audio codificado AAC dentro del formato contenedor MPEG-4 Parte 14.

Cuando intento esto, no pasa nada. No recibo ningún evento generado en el lado del cliente, no se lanzan excepciones, y mi registro en el lado del servidor no muestra ninguna secuencia que se inicie.

Aquí está el código relevante:

// 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");
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta