Потоковое видео с веб-камеры во Flash с использованием MP4 - PullRequest
3 голосов
/ 24 февраля 2009

Одной из функций приложения Flash, над которым я работаю, является возможность потоковой передачи веб-камеры другим пользователям. Мы просто используем встроенную поддержку веб-камеры во Flash и отправляем ее через FMS.

У нас есть люди, которые просят видео более высокого качества, но мы уже используем настройку высочайшего качества, которую мы можем использовать во Flash (настройка качества на 100%).

Насколько я понимаю, в более новые флэш-плееры добавлена ​​поддержка кодирования MPEG-4 для видео. Я создал простое тестовое приложение Flex, чтобы попытаться сравнить качество видео кодировок MP4 и FLV. Однако я не могу заставить MP4 работать вообще.

В соответствии с документацией Flex единственное, что мне нужно сделать, чтобы использовать MP4 вместо FLV, - это префикс "mp4:" к имени потока при вызове publish:

Укажите имя потока в виде строки с префиксом mp4: с или без расширение имени файла Префикс указывает серверу, что файл содержит H.264-кодированное видео и Аудио в кодировке AAC в MPEG-4 Контейнер части 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 ]

1 голос
/ 18 мая 2009

Вы уверены, что это относится к живым потокам, а не только к записи? эти ссылки 1 2 предполагают, что хотя игрок может декодировать sorenson, vp6 и h264, он может кодировать только в sorenson .

Я нахожусь в подобной ситуации, поэтому я хотел бы уточнить это.

edit: что на самом деле заставляет меня сомневаться, так это то, что в документации написано flv и mp4, которые не являются кодеками, а являются контейнерами, потоковая передача в реальном времени не использует контейнеры, закодированные кадры перемещаются непосредственно внутри пакетов rtmp

1 голос
/ 25 ноября 2010

Flash Player не кодирует с использованием H.264, но Flash Media Server может записывать любой кодек в контейнере F4V. Flash Media Live Encoder может кодировать с использованием H.264.

То есть вы не можете отправить h264 с веб-флеш-плеера (пока?) ...

1 голос
/ 25 февраля 2009

Было бы полезно узнать версию FMS, которую вы используете? Похоже, вам нужен как минимум FMS 3.0.2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...