Ответ 1
После поднятия проблемы с Apple DTS выясняется, что в настоящее время нет возможности декодировать видеоданные из пользовательских источников потока.
Я напишу запрос расширения для этого.
IPad/iOS имеет поддержку потокового видео, например, H.264 с использованием MPMoviePlayerController
и т.д., Но я получаю данные H.264 через пользовательский, собственный поток и должен декодировать их в мягком сценарии в реальном времени.
Можно ли каким-либо образом получить доступ к видеодекодеру iPads/iOS для декодирования этих данных?
Обновление: Очевидно, что iOS 4.0 Core Media Framework поддерживает кадры декодирования и знает о H.264, но нет примера кода, и я не могу увидеть, что на самом деле я должен вызывать для фактического декодирования.
Обновление (десять лет спустя!)
Для тех, кто ищет в Google, вы делаете это в iOS в эти дни с помощью VideoToolbox.
После поднятия проблемы с Apple DTS выясняется, что в настоящее время нет возможности декодировать видеоданные из пользовательских источников потока.
Я напишу запрос расширения для этого.
Если у вас продолжают возникать проблемы с этим, я предлагаю вам взглянуть на libavcodec для декодирования данных (доступно в проекте ffmpeg).
В Dranger есть отличные учебники по ffmpeg, которые показывают, как правильно декодировать (через libavcodec) и отображать видеоданные (используя libsdl), среди прочего.
Есть два решения
Чтобы начать с этим, вы в основном начинаете с https://developer.apple.com/videos/play/wwdc2014/513/ Наслаждайтесь!
Я должен сказать, что это действительно "правильное и лучшее" решение.
Есть несколько способов начать с этим. (Одна совершенно новая вещь - SWIFT ffmpeg, созданный Sunlubo: https://github.com/sunlubo/SwiftFFmpeg)
Помните о подходе "ffmpeg", что, короче говоря, с ffmpeg/iOS существует ряд юридических/лицензионных проблем. Можно искать и читать об этих проблемах.
Однако с технической стороны, в наши дни действительно возможно скомпилировать ffmpeg прямо в iOS и использовать его в коде iOS. (Использование библиотеки C может быть самым простым.)
Мы только что выполнили грандиозный проект, используя именно это, а также другие подходы. (Я никогда не хочу видеть FFmpeg снова!)
Фактически вы можете добиться реального аппаратного декодирования в iOS, используя FFmpeg.
Мы обнаружили, что это невероятно неловко. И пару ошибок нужно исправить в FFmpeg. (Надеюсь, я больше никогда не увижу videotoolbox.c
:/)
Пробовали ли вы писать поток H.264, который вы получаете из своего протокола, во временный файл, к которому вы постоянно добавляете, и после того, как вы написали достаточно байт, чтобы избежать буферизации воспроизведения, передайте URL-адрес вашего временного файла MPMoviePlayerController
С iOS 8 вы можете использовать панель инструментов видео (https://developer.apple.com/reference/videotoolbox), чтобы декодировать H264 в необработанные кадры. VT API аппаратно ускоряются и обеспечит вам гораздо лучшую производительность по сравнению с libavcodec. Если вы хотите воспроизвести фреймы или создать предварительный просмотр, вы можете использовать средство визуализации на основе eagl для воспроизведения. Я написал пример приложения для кодирования кадров из raw в h.264 (https://github.com/manishganvir/iOS-h264Hw-Toolbox). h.264 к сырью не должно быть так сложно!