2010-08-30 20 views
24

Urządzenie iPad/iOS obsługuje transmisje strumieniowe wideo dla np. H.264 przy użyciu MPMoviePlayerController itp., Ale otrzymuję dane H.264 za pośrednictwem niestandardowego, zastrzeżonego strumienia i trzeba go rozszyfrować w miękkim scenariuszu czasu rzeczywistego.
Czy dekoder wideo iPads/iOS może być w jakikolwiek sposób wykorzystywany do dekodowania tych danych?Dostęp do dekodera wideo w systemie iOS?

Aktualizacja: Podobno iOS 4.0 Rdzeń Mediów ramowa supports decoding frames i zna H.264, ale nie ma przykładowy kod ani mogę zobaczyć, co ja właściwie powinnam zadzwonić do rzeczywistej dekodowania.

+1

Programy AVA nie obsługują jeszcze przesyłania strumieniowego. Wygląda na to, że najlepszym rozwiązaniem jest Core Media Framework o niskim poziomie. Jest tam zdefiniowany kodek H.264, co jest dobrym znakiem, i istnieją blokowe struktury buforujące, w których nie trzeba przechowywać całego zasobu w pamięci lub na dysku. Chciałbym zobaczyć kod dla dowolnej części tego, zwłaszcza dla części, w której bufor próbki jest skoordynowany z warstwą lub przechwycony. –

+0

@Peter: Dzięki, to wygląda bardziej obiecująco. Wydaje się, że powinno obsługiwać dekodowanie do 'CVImageBuffer', ale naprawdę nie widzę, jakie funkcje są dla rzeczywistego dekodowania. –

+0

Czy demo MoviePlayer Ci nie pomogło? http://developer.apple.com/iphone/library/samplecode/MoviePlayer_iPhone/Introduction/Intro.html – karlphillip

Odpowiedz

9

Po zgłoszeniu problemu z Apple DTS okazuje się, że obecnie nie ma możliwości zdekodowania danych wideo z niestandardowych źródeł strumieniowych.

Będę złożyć wniosek o ulepszenie tego.

+0

Czy prośba o ulepszenie jest jawna? Chciałbym zagłosować na to :) – Gili

+0

@Gili: Nie, ale możesz również otworzyć prośbę o błąd/ulepszenie. –

+0

Cześć, Georg. Wiem, że od tego czasu minęło sporo czasu, ale wciąż nie ma dobrej odpowiedzi na to pytanie. Czy możesz podzielić się, jeśli istnieje jakiś sposób korzystania z niestandardowych źródeł strumieniowych? Stukrotne dzięki! –

1

Czy próbowałeś napisać strumień H.264, który otrzymałeś od swojego protokołu, do pliku tymczasowego, do którego ciągle się dodajesz, a następnie po napisaniu wystarczającej liczby bajtów, aby uniknąć buforowania odtwarzania, przekazując adres URL pliku tymczasowego do pliku MPMoviePlayerController?

4

Jeśli nadal występują z tym problemy, sugeruję, aby zapoznać się z libavcodec dla dekodowania danych (dostępne na ffmpeg project).

Istnieją wspaniałe samouczki ffmpeg w dranger, które pokazują, jak poprawnie dekodować (poprzez libavcodec) i wyświetlać dane wideo (przy użyciu libsdl), między innymi.

+0

W tym momencie nie szukałem alternatyw, ale dzięki. –

+0

Interesujące. Jednak libavcodec to LGPL, więc, jak rozumiem, nie można go używać w komercyjnych aplikacjach na iOS (ponieważ musi być statycznie połączony). Czy mogę coś źle zrozumieć? – Sander

+1

Ten [wątek] (https://news.ycombinator.com/item?id=3341852) omawia niektóre z problemów. – karlphillip

0

W systemie iOS 8 można użyć przybornika wideo (https://developer.apple.com/reference/videotoolbox) do odkodowania ramki H264 do ramek nieprzetworzonych. API VT są przyspieszane sprzętowo i zapewniają znacznie lepszą wydajność w porównaniu z libavcodec. Jeśli chcesz odtwarzać klatki lub generować podgląd, możesz użyć renderera opartego na eagl. Napisałem przykładową aplikację do kodowania ramek z surowego do h.264 (https://github.com/manishganvir/iOS-h264Hw-Toolbox). h.264 na raw nie powinno być tak trudne!

Powiązane problemy