Ich empfange rohe H.264-NALUs von einer IP-Kamera (über Live555) und möchte sie mit Hardware dekodieren, weil FFmpeg zwar großartig ist, aber zu langsam (der Kamerasensor ist groß).
Die einzige Lösung, die ich sehe, ist, die NALUs in eine Filmbehälterdatei wie MPEG-4 zu schreiben und dann diese Datei mit AVAssetReader
zu lesen und zu dekodieren.
Bin ich in den Unkräutern? Hat jemand Erfolg H.264 NALUs von einem Strom zu entschlüsseln? Hat jemand irgendwelche Tipps zum Schreiben von NALUs in eine MPEG-4-Datei? Andere Ideen?
Wie Matt bereits erwähnt hat, gibt es keinen direkten Zugriff auf den H264-Decoder von Apple.
Ich hatte jedoch Erfolg mit ffmpeg und h264 Decodierung. Wie du bereits erwähnt hast, habe ich ffmpeg mit LGPL gebaut. Ich konnte H264-Streams bis hin zum Echtzeit-HD-Stream ohne Latenz sowohl auf dem iPad als auch auf dem iPhone entschlüsseln. Von ffmpeg wird nichts Besonderes benötigt, Sie können eine Menge Standard-Decoding-C ++ - Code finden, der auf iOS einwandfrei funktioniert. Auch in meinem Fall wurden H264 NALUs über RTP / RTSP in Echtzeit geliefert.
Auch wenn ich Sie wäre, würde ich Ihre App durch xcode-Instrumente laufen lassen, um wirklich zu sehen, wo Sie Engpass ist, aber ich wäre sehr überrascht, dass es in ffmpeg Entschlüsselungsschritt ist. Hoffentlich hilft diese Info.
Leider können Sie dies derzeit nicht tun. Fühlen Sie sich frei, ein Radar mit Apple über diese Art von Zugriff auf den Hardware-Decoder wollen. Es wird sicherlich als ein Duplikat gelöst werden :-). Ich gehe davon aus, dass es aus lizenzrechtlichen Gründen nicht möglich ist, auf den Hardware-Codec zuzugreifen.
Sie werden also einen Software-Decoder brauchen. Bitte beachten Sie, dass Sie, wenn Sie in den App Store liefern, etwas mit einer Nicht-GPL-Lizenz benötigen (es sei denn, Sie möchten Ihre App ebenfalls öffnen).