Одной из функций приложения 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");
}