Вы можете получать необработанные видеоизображения только в цветовых форматах BGRA или YUV от AVFoundation. Однако, когда вы записываете эти кадры в mp4 через AVAssetWriter, они будут закодированы с использованием кодировки H264.
Хорошим примером кода, как это сделать, является RosyWriter< /а>
Обратите внимание, что после каждой записи AVAssetWriter вы будете знать, что один полный H264 NAL был записан в файл mp4. Вы можете написать код, который считывает полный H264 NAL после каждой записи с помощью AVAssetWriter, что даст вам доступ к кадру, закодированному H264. Это может занять некоторое время, чтобы сделать это правильно с приличной скоростью, но это выполнимо (я сделал это успешно).
Кстати, для успешного декодирования этих закодированных видеокадров вам понадобится информация H264 SPS и PPS, которая находится в другом месте файла mp4. В моем случае я фактически создаю пару тестовых файлов mp4, а затем вручную извлекаю их. Поскольку они не меняются, если вы не измените спецификации в кодировке H264, вы можете использовать их в своем коде.
Проверьте мой пост на значения SPS для потока H 264 в iPhone чтобы увидеть некоторые из SPS/PPS, которые я использовал в своем коде.
И последнее замечание: в моем случае мне пришлось передавать кадры, закодированные в формате h264, на другую конечную точку для декодирования/просмотра; поэтому мой код должен был сделать это быстро. В моем случае это было относительно быстро; но в конце концов я переключился на VP8 для кодирования/декодирования только потому, что это было намного быстрее, потому что все делалось в памяти без чтения/записи файлов.
Удачи, и, надеюсь, эта информация поможет.
12.06.2013