Использование iPhone в качестве входных данных для mediastreamsegmenter - HTTP Live Streaming - PullRequest
4 голосов
/ 09 марта 2011

Я начал работать над протоколом HTTP live Streaming и чувствовал себя очень интересно. Прошел полный документ, предоставленный Apple.

Я попробовал Vedio On Demand и Live Streaming, а также использовал VLC player в качестве сервера потоковой передачи, выполнив шаги, упомянутые на одном из форумов разработчиков, и могу успешно транслировать его.

Теперь я хочу, чтобы мой iPhone служил источником для потоковой передачи, и хочу использовать другой iPhone для просмотра этого контента.

Как уже упоминалось, mediastreamsegmenter - это инструмент, который получает транспортный поток MPEG-2 через сетевое соединение UDP или от sdtin.

Может кто-нибудь подсказать, как начать использовать мой iPhone в качестве потокового сервера и иметь возможность потоковой передачи контента. Насколько мне известно, я думаю, что должно быть клиентское (iPhone) приложение, которое отправляет контент на сервер, который, в свою очередь, преобразует поток в транспортный поток MPEG-2 и отправляет его в mediastreamsegmenter. Я надеюсь, что оставшаяся часть будет такой же, как я сделал для потоковой передачи для VLC Player.

Было бы замечательно, если бы кто-нибудь помог мне, как начать с этого.

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

Это всего лишь моя догадка .Я старался не публиковать это, если есть положительный ответ.Однако до сих пор нет ответа.Поэтому я пишу это, чтобы поделиться своим мнением.Однако я сожалею, что это не очень хорошо.

Если вы хотите просто перенести видео с устройств iOS, это легко.Просто отправьте видео файл сам.Итак, я предполагаю, что вы хотите, чтобы потоковое видео.Передача того, что я сейчас записываю.

Я думал об этой проблеме несколько недель назад, но мне это не удалось.Проблема не в медиа-сегменте.MPEG2 TS - это просто контейнер, а сегментация - это просто разделение видео, его можно легко (?) Реализовать с точной спецификацией.

Настоящая проблема - кодирование видео.iOS не предлагает сжатый прямой эфир с камеры.(может быть, еще?) Только сжатый поток может быть сохранен на диск.Должен быть способ получить сжатый видеопоток внутри.Потому что FaceTime без этого невозможен.Однако это не предлагается третьим лицам.

Возможно непрерывное хранение коротких видеороликов и их загрузка на сервер.Но начало / завершение видео-сессии занимает слишком много времени.Поэтому я отказался от этого метода.

В качестве другого способа iOS предлагает несжатый видеопоток, поэтому вы можете сделать это, сжимая необработанный видеопоток самостоятельно.С ffmpeg или такими вещами.Однако кодирование видео Apple использует аппаратные функции для повышения производительности (это может улучшить качество видео при меньших размерах) и сэкономить энергию.ffmpeg делает все только в программном обеспечении.Конечно, вы можете сделать свой аппаратно-ускоренный кодер самостоятельно или приобрести его у какого-либо поставщика.

На рынке есть несколько приложений для потоковой передачи видео.Я не использовал их.Но, может быть, один из них.

  • передача необработанных кадров.(без сжатия или быстрое, но слабое сжатие)
  • на основе кодировщика ffmpeg.
  • реализация независимого аппаратно-ускоренного кодировщика.

Первый требует слишком большой полосы пропускания, а такжепотребляет тяжелую энергию.

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

В-третьих, для небольших приложений требуется слишком высокая стоимость разработки.Но если у вас достаточно бюджета, это лучше всего.Я не знаю, есть ли на рынке предустановленная библиотека для iOS.

Я бы хотел, чтобы Apple выпустила этот вид сжатого видеопотока.Который сжат с помощью аппаратного ускоренного кодера Apple.Но, может быть, этого не произойдет, если Apple не решит отказаться от защиты высококачественной функции потоковой передачи живого видео между устройствами в качестве функции убийцы ... FaceTime.

Однако возможно, что Apple выпустит этот API в какой-то момент.И я не уверен, что я искал все API.Возможно, я не смог проверить что-то важное.


Обновление

Я нашел класс AVAssetWriter, который может записывать видеоданные в файл со сжатием.Это может быть ключом к созданию такого рода приложений.

0 голосов
/ 30 декабря 2011

Есть хороший пример AVAssetWriter и AVAssetReader на Кодирование видео с использованием AVAssetWriter - CRASHES .Вы можете часть читателя, чтобы отправить собранные данные по сети.

...