Comment puis-je effectuer un codage et un décodage H.264 accéléré par le matériel pour le streaming?
Je suis en mesure d'obtenir la RGBA les données d'image de la caméra, et je veux encoder en H. 264 format. J'ai utilisé de FFmpeg pour encoder et de décoder le H. 264 vidéo, mais à une taille d'image de 640 x 480 il est trop lent pour mes besoins.
Je voudrais utiliser l'accélération matérielle pour accélérer l'encodage et le décodage, alors comment dois-je procéder?
Aussi, j'ai besoin d'être capable de diffuser de la vidéo encodée à travers le réseau et de le décoder à l'autre extrémité. Comment cela peut-il être fait?
source d'informationauteur king
Vous devez vous connecter pour publier un commentaire.
Si vous voulez faire des vidéo avec accélération matérielle d'encodage et de décodage du H. 264 vidéo sur iOS, la seule façon d'y aller est AVFoundation. Ne pas utiliser les bibliothèques de tiers pour l'encodage ou de décodage, parce qu'ils le sont actuellement par le CPU, et sont beaucoup plus lent que ce que vous obtenez à partir de AVFoundation. L'une des raisons de l'utilisation d'un tiers d'un encodeur ou d'un décodeur serait le cas si vous travaillez avec le format n'est pas pris en charge dans iOS par défaut.
Pour l'accélération matérielle pour le décodage, vous aurez envie d'utiliser un AVAssetReader instance (ou de l'une des catégories de joueurs pour une simple lecture). Avec un AVAssetReader, je reçois régulièrement 2X ou supérieur vitesses de lecture pour la lecture H. 264 codage vidéo, de sorte que les appareils iOS d'utilisation, une très bonne accélération matérielle pour que.
De même, pour l'accélération de l'encodage, vous allez utiliser une AVAssetWriter. Il y a quelques astuces pour arriver AVAssetWriter pour coder à la vitesse (alimentation en BGRA images, à l'aide d'un pixel de pool de mémoire tampon, en utilisant l'iOS 5.0 texture caches si la lecture à partir d'OpenGL ES), je décris en détail dans cette réponse.
Si vous voulez voir un peu de code qui utilise le chemin le plus rapide que j'ai trouvé pour l'accélération de l'encodage et de décodage, vous pouvez regarder mon open source GPUImage cadre, qui, contrairement à celle liée par Anastasia, est totalement libre d'utiliser.