如何在iOS上将h.264文件包装为mp4

时间:2015-04-30 15:51:02

标签: ios video ffmpeg mp4 h.264

我有一个简单的h.264文件(来自覆盆子pi相机),我想把它包装成mp4。我不需要播放,编辑,添加或删除任何内容,也不需要访问像素。

很多人都在询问有关为iOS编译ffmpeg或者直播实时数据的问题。但是由于ffmpeg命令行与iOS构建之间缺乏简单的转换,我很难弄清楚如何实现这个简单的命令:

pwd

我并不特别关心这是通过ffmpeg,avconv还是AVFoundation(或其他)发生的。看起来它应该不是 - 在设备上很难做到。

1 个答案:

答案 0 :(得分:2)

这并不难,但需要一些工作和注意细节。 这是我最好的猜测:

  1. 从input.h264
  2. 读取PPS / SPS
  3. 提取高度& SPS的宽度
  4. 从PPS / SPS生成avcC标头
  5. 创建文件类型为AVFileTypeQuickTimeMovie
  6. 的AVAssetWriter
  7. 创建AVAssetWriterInput
  8. 将AVAssetWriterInput添加为AVMediaTypeVideo,其高度为&宽度到AVAssetWriter
  9. 从您的input.h264(可能是附件B格式)中一次读取一个NAL
  10. 将您的input.h264中的NAL从前缀(0 0 1;附录B)的起始码转换为前缀大小(mp4格式)
  11. 删除AU,PPS,SPS
  12. 类型的NAL
  13. 为每个NAL创建一个CMSampleBuffer,并使用avcC标头添加CMFormatDescription
  14. 使用已知的帧速率重新生成以零开始的时间戳(注意您的帧是否重新排序)
  15. 将您的CMSampleBuffer附加到AVAssetWriterInput
  16. 转到7直到EOF