2010-08-30 3 views
24

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

Update: Видимо IOS 4,0 Ядро Media Framework supports decoding frames и знает H.264, но нет образца кода не может видеть то, что я на самом деле я имею должен вызвать для фактического декодирования.

+1

AVAssets пока не поддерживает потоковую передачу. Похоже, что Core Media Framework низкого уровня - это место для поиска. Определен кодек H.264, который является хорошим знаком, и существуют структуры блочной буферизации, в которых вам не нужно хранить весь актив в памяти или на диске. Я хотел бы видеть код для любой части этого, особенно для той части, где буфер образца согласован со слоем или захвачен. –

+0

@Peter: Спасибо, это выглядит более перспективным. Предполагается, что он поддерживает декодирование на 'CVImageBuffer', но я действительно не вижу, какие функции предназначены для реального декодирования. –

+0

Не помогло ли вам демоверсия MoviePlayer? http://developer.apple.com/iphone/library/samplecode/MoviePlayer_iPhone/Introduction/Intro.html – karlphillip

ответ

9

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

Я напишу запрос об улучшении.

+0

Является ли запрос об улучшении открытым для общественности? Я бы проголосовал за это :) – Gili

+0

@Gili: Нет, но вы можете просто открыть запрос об ошибке/улучшении. –

+0

Привет, Георг. Я знаю, что с тех пор прошло довольно много времени, но до сих пор нет хорошего ответа на этот вопрос. Не могли бы вы поделиться, если есть способ использования пользовательских источников потока? Бесконечно благодарен! –

1

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

4

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

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

+0

Я не искал альтернативы на данный момент, но спасибо в любом случае. –

+0

Интересно. Однако libavcodec - это LGPL, поэтому, насколько я понимаю, его нельзя использовать для коммерческих приложений iOS (так как он должен быть статически связан). Или я что-то неправильно понимаю? – Sander

+1

В этой [тонкой теме] (https://news.ycombinator.com/item?id=3341852) обсуждаются некоторые проблемы. – karlphillip

0

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