Реализация RTMP Streaming Server: последовательность сообщений connect / createStream / play пройдена, но во flashplayer нет видео / аудио - PullRequest
3 голосов
/ 08 октября 2010

Привет!

Запись RTMP Потоковый сервер для потоковой передачи AVC + AAC видео.И он отлично работает с rtmpdump.Но я не могу заставить его работать в flowplayer и других флэш-видео плеерах.

Последовательность сообщений после рукопожатия похожа на FMS / RED5 / erlyvideo / haxevideo серверы: я перепробовал множество вариантов.

Из консоли отладки Chrome я вижу, что все сообщения о переговорах переданы наFlowplayer.Последний находится на MetaData.И после этого рабочий образец ( rtmp: //flash.tvwmedia.net/LiveVideo//Live300) получает NetStream.Buffer.Full.А потоковая передача с моего сервера не получается.

Я начинаю с сообщения заголовка AVC, содержащего sps / pps.После этого первая картина AVC прошла.После - заголовок AAC и образец AAC.А потом образцы AVC / AAC.Это сбрасывается ОК на rtmpdump - у меня работает flv на выходе.Но flowplayer и другие не работают.

  1. В чем может быть проблема?
  2. Есть ли дополнительные требования дляпотоки?
  3. Возможно ли, что из-за прерванного потока h264 проигрыватель flashplayer перестает играть?Можно ли получить системные сообщения от флеш плеера, которые об этом говорят?

Надеюсь, вы можете мне помочь :) Я борюсь с этой проблемой уже 2 недели, а сейчас простоНе знаю, какие варианты я могу попробовать.

Вот журнал отладки + flv из rtmpdump.Он содержит сообщения о переговорах и некоторые первые образцы мультимедиа.


Обновление:

Я исправил одну ошибку: неверный идентификатор фрагмента фрагмента используется для "системы"сообщения (например, SetChunkSize).Но он все еще не играет.Вот другой журнал , почти такой же, как wowza .И журналы wowza / red5 тоже (для сравнения).

Я проверил следующие вещи, которые различаются в RTMP-серверах:

  1. Различные ChunkStreamID (для несистемных потоков)
  2. Различные идентификаторы StreamID (на createStream)
  3. 128b и размеры чанков 4Kb
  4. Неупакованные / упакованные заголовки чанков (в пред.1082 *
  5. Различные ответы на connect вызов (от многих серверов)
  6. Использование 57 00, 57 01 видео пакетов (видеоинформация / командный кадр)
  7. Добавление 09 (ДоступРазделитель единиц) NALU перед каждым изображением
  8. Различный порядок аудио / видео DCR / пакетов
  9. Только аудио / только видео

Но настройка всего, что не позволяламой сервер все равно работает:)

Есть идеи как решить эту проблему?


Обновление:

IЯ сделал лог через Flazr прокси, как предложил Питер.Результаты одинаковы.И я не могу найти решение: оба журнала выглядят хорошо.Может быть, я просто не вижу ничего легкого ...


Спасибо!

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

Я - автор Flazr, на который ссылается Мондейн (спасибо Мондейн!).

Я хочу указать вам на функцию прокси-сервера в Flazr. Вы можете подключить ваш флеш-плеер (или rtmpdump) к прокси-серверу и указать прокси-сервер на вашем сервере. Если вы установите журнал в режим DEBUG, вы получите очень подробную трассировку журнала всех сообщений RTMP в обоих направлениях. В прошлом мне было полезно сравнивать Flazr с другими реализациями, такими как Red5. Надеюсь, это поможет.

2 голосов
/ 09 октября 2010

Я не уверен, в чем проблема, но вы хотите убедиться, что вы делаете следующее:

1. Отправка пингов
2. Обработка байтов прочитанных / письменных отчетов

Из журнала rtmpdump ваш поток выглядит хорошо, я не заметил ничего очевидного. Есть еще два проекта, которые могут помочь вам в зависимости от вашего опыта работы с C ++ или Ruby. Сервер Izumi довольно прост и может быть легче следовать, если вы являетесь разработчиком Ruby.
http://code.google.com/p/rubyizumi/

Если вы парень C ++, то посмотрите RTMPd, Андрей знает о процессе флэш-памяти на стороне сервера больше, чем кто-либо из моих знакомых.
http://www.rtmpd.com/

Наконец, если вам нужна другая реализация Java Player / Server с открытым исходным кодом для обучения вас можно посмотреть на Flazr http://flazr.com/

...