Видео воспроизводится ненормально быстро в течение короткого времени при потоковой передаче из FMS (проблема появляется на iPad)

Я транслирую (живую, без записи) видео с помощью Flash Media Server 4.5. Я создал до 2 приложений -

1) Издатель: публикует (потоки) видео с использованием FMS. 2) Receiver: Воспроизведение опубликованного потока.

Все работает хорошо, как ожидалось, потому что это очень простое приложение на WEB или в (Desktop) браузере.

Но когда я подключаю приложение Receiver к iPad, видео, он воспроизводится отлично, но между ними он быстро воспроизводится (например, вы быстро переходите на видеомагнитофон или DVD-плеер) за несколько миллисекунд, а затем обратно в норму.

Примечание. Я пытался использовать Wowza-сервер вместо FMS, но не повезло.

Чтобы решить эту проблему, я играл с некоторыми настройками, такими как - снижением частоты кадров до 10, качеством до 50, благоприятным для ложного. Это приводит к улучшению уровня бит, но мой клиент не может идти на компромисс с низким качеством видео, что тоже на iPad.

Заранее спасибо!

1 ответ

На самом деле это предполагаемое поведение для потоковой передачи в реальном времени. На этот вопрос нет ответа "один размер подходит всем".

Если вы используете протокол RTMP (протокол TCP), сетевой уровень будет обеспечивать доставку всех пакетов. Это не обязательно идеально подходит для трансляции в прямом эфире. Обычно используется RTMFP (протокол UDP).

Я не могу найти, где я читал это раньше (документация NetStream?). Но Flash Player сделает все возможное, чтобы не отставать от реального потока. Он может воспроизводить видео несколько быстрее или опускать видеокадры, чтобы сделать это.

Обычно это происходит из-за проблем с сетью, поэтому ваш подход к снижению качества видеопотока является хорошим подходом. Однако лучше всего играть с разрешением захвата камеры (с помощью Camera.setMode()).

Уменьшение разрешения захвата уменьшит пропускную способность, необходимую для передачи видео. Вы можете использовать меньшее разрешение захвата (например, 320x240) и по-прежнему отображать его в большем размере в объекте Video (480x360). Очевидно, что есть компромисс, который вам нужно будет сделать. Возможно, у ваших пользователей есть возможность установить качество, основанное на их сетевых условиях.

Другой полезный метод - Camera.setQuality(). Если проблема связана с пропускной способностью, вы можете указать целевой показатель пропускной способности, чтобы позволить Flash управлять качеством, основанным на пропускной способности. Опять же, предоставляя пользователям возможность настроить это.

Наконец, если проблема только возникает на IPad, и вы уверены, что пропускная способность не является проблемой, тогда это может быть связано с оборудованием. Опять же, Flash будет делать все возможное, чтобы поддерживать поток в прямом эфире как можно более "текущим" (мое чувство кишки заключается в том, что он будет отбрасывать кадры, а не играть быстрее в этом сценарии).

licensed under cc by-sa 3.0 with attribution.