Подтвердить что ты не робот

Доступ к видеодекодеру iOS?

IPad/iOS имеет поддержку потокового видео, например, H.264 с использованием MPMoviePlayerController и т.д., Но я получаю данные H.264 через пользовательский, собственный поток и должен декодировать их в мягком сценарии в реальном времени.
Можно ли каким-либо образом получить доступ к видеодекодеру iPads/iOS для декодирования этих данных?

Обновление: Очевидно, что iOS 4.0 Core Media Framework поддерживает кадры декодирования и знает о H.264, но нет примера кода, и я не могу увидеть, что на самом деле я должен вызывать для фактического декодирования.


Обновление (десять лет спустя!)

Для тех, кто ищет в Google, вы делаете это в iOS в эти дни с помощью VideoToolbox.


4b9b3361

Ответ 1

После поднятия проблемы с Apple DTS выясняется, что в настоящее время нет возможности декодировать видеоданные из пользовательских источников потока.

Я напишу запрос расширения для этого.

Ответ 2

Если у вас продолжают возникать проблемы с этим, я предлагаю вам взглянуть на libavcodec для декодирования данных (доступно в проекте ffmpeg).

В Dranger есть отличные учебники по ffmpeg, которые показывают, как правильно декодировать (через libavcodec) и отображать видеоданные (используя libsdl), среди прочего.

Ответ 3

2019

Есть два решения

  1. Сделайте это "вручную", что означает использование AVFoundation и, в частности, VideoToolbox.

Чтобы начать с этим, вы в основном начинаете с https://developer.apple.com/videos/play/wwdc2014/513/ Наслаждайтесь!

Я должен сказать, что это действительно "правильное и лучшее" решение.

  1. Если вы можете заставить ffmpeg-api работать внутри вашего iOS-приложения, вы можете использовать ffmpeg.

Есть несколько способов начать с этим. (Одна совершенно новая вещь - SWIFT ffmpeg, созданный Sunlubo: https://github.com/sunlubo/SwiftFFmpeg)

Помните о подходе "ffmpeg", что, короче говоря, с ffmpeg/iOS существует ряд юридических/лицензионных проблем. Можно искать и читать об этих проблемах.

Однако с технической стороны, в наши дни действительно возможно скомпилировать ffmpeg прямо в iOS и использовать его в коде iOS. (Использование библиотеки C может быть самым простым.)

Мы только что выполнили грандиозный проект, используя именно это, а также другие подходы. (Я никогда не хочу видеть FFmpeg снова!)

Фактически вы можете добиться реального аппаратного декодирования в iOS, используя FFmpeg.

Мы обнаружили, что это невероятно неловко. И пару ошибок нужно исправить в FFmpeg. (Надеюсь, я больше никогда не увижу videotoolbox.c :/)

Ответ 4

Пробовали ли вы писать поток H.264, который вы получаете из своего протокола, во временный файл, к которому вы постоянно добавляете, и после того, как вы написали достаточно байт, чтобы избежать буферизации воспроизведения, передайте URL-адрес вашего временного файла MPMoviePlayerController

Ответ 5

С 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 к сырью не должно быть так сложно!