Потоковое видео с веб-камеры во Flash с использованием кодировки MP4
Одна из функций Flash-приложения, над которым я работаю, - это возможность транслировать веб-камеру другим пользователям. Мы просто используем встроенную поддержку веб-камеры во Flash и отправляем ее через FMS.
У нас были люди, которые просили видео более высокого качества, но мы уже используем самые высокие настройки качества, которые только можно во Flash (устанавливаем качество на 100%).
Насколько я понимаю, в новых флеш-плеерах добавлена поддержка кодировки MPEG-4 для видео. Я создал простое тестовое приложение Flex, чтобы попытаться сравнить качество видео в кодировках MP4 и FLV. Однако я вообще не могу заставить MP4 работать.
Согласно документации Flex, единственное, что мне нужно сделать, чтобы использовать MP4 вместо FLV, - это добавить «mp4:» к имени потока при вызове публикации:
Укажите имя потока в виде строки с префиксом mp4: с расширением имени файла или без него. Префикс указывает серверу, что файл содержит видео в формате H.264 и аудио в формате AAC в формате контейнера MPEG-4 Part 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)3
Вы уверены, что это относится к прямым трансляциям, а не только к записи? эти 1 2 ссылки предполагают, что, хотя плеер может декодировать sorenson, vp6 и h264, он может кодировать только sorenson .
Я нахожусь в похожей ситуации, поэтому я хотел бы прояснить это.
edit: что на самом деле заставляет меня сомневаться, так это то, что в документации говорится о flv и mp4, которые являются не кодеками, а контейнерами, потоковая передача в реальном времени не использует контейнеры, закодированные кадры перемещаются непосредственно внутри пакетов rtmp