Я тоже с этим борюсь. Библиотека ffmpeg, похоже, работает для сжатия, но лицензирование означает, что вам нужно выпустить исходный код.
Вы можете установить свой объект в качестве делегата из AVCaptureVideoDataOutput и реализовать этот обратный вызов в очереди отправки:
- (void) captureOutput: (AVCaptureOutput *) captureOutput didOutputSampleBuffer: (CMSampleBufferRef) sampleBuffer fromConnection: (AVCaptureConnection *) соединение;
Затем вы получите несжатое видео, которое вы можете обработать в виде uiimage или jpeg (для этого у Apple есть примеры кода), но нет способа получить аппаратно сжатые кадры H264, чего мы действительно хотим. Здесь вы можете реализовать такую библиотеку, как ffmpeg, для сжатия видео в H264 или что-то еще.
В настоящее время я пытаюсь выяснить, могу ли я интерпретировать вывод файла AVAssetWriter и перенаправить его в поток (он может записывать видео с аппаратным сжатием), но Apple почему-то затрудняет это по какой-то причине.
Дайте мне знать, если найдете что-то, что работает.