Может кто-нибудь указать мне на документацию, которая поможет мне получить правильные значения SPS и PPS для iPhone.Значения SPS для потока H 264 в iPhone
ответ
Вопрос немного неясно ...
Picture Parameter Set
описана в последнем ITU-T release стандарта в главе 7.3.2.2
Sequence Parameter Set
описана в разделе 7.3.2.1.
Я уверен, что вы знаете, но вы можете сохранять только закодированное видео H264 в файл (.mp4, .mov) на iOS. Пока нет доступа к закодированным видеокадрам из кода. Поэтому, если вы хотите создать файл mp4 с кодированным видео, вам необходимо использовать AVAssetWriter. У Apple есть хороший example code о том, как это сделать.
Я не знаю ни одного места, где публикуются различные SPS/PPS; поскольку они варьируются в зависимости от настроек сжатия, размера изображения и того, кодируете ли вы видео в портретном или альбомном режиме. Вы можете использовать приведенный выше примерный код (RosyWriter) для создания небольших файлов .mp4 с вашими настройками кодировки; и затем я бы использовал шестнадцатеричный редактор, чтобы найти SPS/PPS вручную. Обратите внимание, что SPS/PPS направится в конец файла после потока H264 как часть более крупной информационной структуры mp4. Вы можете найти дополнительную информацию о своей структуре в Интернете.
Вот несколько SPS/PPS, которые я нашел полезными для своего проекта. Некоторые из них могут работать для вас, но если вы не можете, вы всегда можете создать mp4 с вашими настройками кодировки H264 и найти необходимые SPS/PPS. Мое видео было закодировано с помощью AVVideoProfileLevelH264Baseline30, и вот СФС/PPS для различных видео размеров мне нужно:
SPS:
// For AVCaptureSessionPresetLow(144x192) AVCaptureSessionLandscape on Iphone4S, Iphone5
char iphone_sps[] = {0x67, 0x4D, 0x00, 0x0C, 0xAB, 0x41, 0x82, 0x74, 0xD4, 0x04, 0x04, 0x18, 0x08};
// For AVCaptureSessionPresetLow(144x192), AVCaptureVideoOrientationPortrait on all Ipads
char ipad_sps[] = {0x67, 0x4D, 0x00, 0x0C, 0xAB, 0x41, 0x23, 0x34, 0xD4, 0x04, 0x04, 0x18, 0x08};
// Iphone 4G AVCaptureSessionPresetLow (144x192), AVCaptureVideoOrientationPortrait
char iphone4g_sps[] = {0x67, 0x42, 0x00, 0x1E, 0x8D, 0x68, 0x24, 0x66, 0x9A, 0x83, 0x00, 0x83, 0x01};
// For AVCaptureSessionPreset352x288 (352x288), AVCaptureVideoOrientationLandscape
char iphone_sps[] = {0x67, 0x42, 0x00, 0x1E, 0xAB, 0x40, 0xB0, 0x4B, 0x4D, 0x40, 0x40, 0x41, 0x80, 0x80};
// For AVCaptureSessionPreset352x288 (352x288), AVCaptureVideoOrientationPortrait
char ipad_sps[] = {0x67, 0x42, 0x00, 0x1E, 0xAB, 0x40, 0xB0, 0x4B, 0x4D, 0x40, 0x40, 0x41, 0x80, 0x80};
PPS:
char pps[] = {0x28, 0xCE, 0x3C, 0x80};
char iphone4g_pps[] = {0x68, 0xCE, 0x09, 0xC8};
Где вы их нашли? –
Как я описал в своем ответе, SPS/PPS были в видео только файлы mp4, которые я сгенерировал с помощью классов avfoundation/avassetwriter – Aki
Вы можете кодировать один кадр в файл, а затем извлечь sps и pps из этого файла. У меня есть пример, который показывает, как это сделать в http://www.gdcl.co.uk/2013/02/20/iOS-Video-Encoding.html
Ты мой спаситель @Geraint! Я искал подходящую запись об этом целую вечность, и у вас даже есть отличный образец кода и очень сжатый маркированный список! –
Возможно ли это в случае с iOs 9 через 3 года? Это кажется почти невероятным. Я могу получить данные h264 через сокет udp и легко декодировать его в аппаратном обеспечении, но если я хочу отправить данные h264 с камеры, мне нужно сначала записать его в файл, а затем прочитать из файла? Таким образом, единственный способ дозировать данные камеры без этой задержки закодирован в программном обеспечении, например, с использованием FFMpeg? – asendra
Нет, это больше не нужно с ios 8. Вы можете напрямую использовать кодировщик VideoToolbox и декодер apis. –
- 1. Декодирование H.264 без потока
- 2. Синтаксис H.264 SPS/PPS в SIP/SDP предложение
- 3. H.264 over RTP - Идентифицировать фреймы SPS и PPS
- 4. Извлечение видеоизображений H.264 из потока MPEG-TS с поврежденным SPS
- 5. decimal to base64 преобразование для H.264
- 6. Инкапсулирование H.264 в MP4
- 7. AVAssetWriterInput H.264 Passthrough to QuickTime (.mov) - Передача в SPS/PPS для создания атома avcC?
- 8. H.264 в Firefox
- 9. штампы времени RTP \ H.264
- 10. Пул CMSampleBufferRef для записи потока H.264 AVCC
- 11. Что передать avcodec_decode_video2 для транспортного потока H.264?
- 12. Декодирование потока h.264 с MediaCodec, dequeueOutputBuffer всегда возвращает -1
- 13. Инструменты для параллелизации H.264?
- 14. h.264 и mpeg header
- 15. H.264 Temporal Reference
- 16. Кодирование видеоизображения Flowplayer H.264
- 17. h 264 Аппаратное кодирование/декодирование Для IOS (IPhone/Ipad)?
- 18. Как рассчитать размеры видео с использованием SPS, информации PPS в потоке H.264
- 19. Библиотека для декодирования H.264 RTSP stream
- 20. Кодирование видео H.264
- 21. Анализ синтаксиса * данных h.264
- 22. Видеокодер H.264 в javascript
- 23. Декодирование H.264 отдельных единиц измерения
- 24. Безопасное место для обрезания данных H.264?
- 25. Инструмент для чтения статистики видеофайлов h.264
- 26. Сохранение RTP-потока H.264 без повторного кодирования?
- 27. H.264 Видео в контейнере MPEG2TS
- 28. Всестороннее определение H.264 Алгоритм
- 29. Вставка живого потока RTSP видео H.264 на веб-странице
- 30. Android H.263 или H.264 файл?
Вы говорите о потоке видео H264, закодированном iphone? – Aki
есть. Правильно. –