Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS上将h.264文件包装为mp4_Ios_Video_Ffmpeg_Mp4_H.264 - Fatal编程技术网

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

如何在iOS上将h.264文件包装为mp4,ios,video,ffmpeg,mp4,h.264,Ios,Video,Ffmpeg,Mp4,H.264,我有一个空的h.264文件(来自raspberry pi摄像头),我想把它包装成mp4。我不需要播放、编辑、添加或删除任何内容,也不需要访问像素 很多人都询问过为iOS编译ffmpeg或流式实时数据。但是由于ffmpeg命令行与其iOS版本之间缺乏简单的转换,我很难理解如何实现这个简单的命令: ffmpeg-i input.h264-vcodec copy out.mp4 我并不特别关心这是通过ffmpeg、avconv还是AVFoundation(或其他方式)实现的。在一台设备上做这件事似乎并

我有一个空的h.264文件(来自raspberry pi摄像头),我想把它包装成mp4。我不需要播放、编辑、添加或删除任何内容,也不需要访问像素

很多人都询问过为iOS编译ffmpeg或流式实时数据。但是由于ffmpeg命令行与其iOS版本之间缺乏简单的转换,我很难理解如何实现这个简单的命令:

ffmpeg-i input.h264-vcodec copy out.mp4


我并不特别关心这是通过ffmpeg、avconv还是AVFoundation(或其他方式)实现的。在一台设备上做这件事似乎并不难。

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

  • 从输入中读取PPS/SPS。h264
  • 从SPS中提取高度和宽度
  • 从PPS/SPS生成avcC标头
  • 创建文件类型为AVFileTypeQuickTimeMovie的AVAssetWriter
  • 创建一个AVAssetWriterInput
  • 将具有高度和宽度的AVAssetWriterInput作为AVMediaTypeVideo添加到AVAssetWriter
  • 从您的input.h264(可能采用附录B格式)中一次读取一个NAL
  • 将input.h264中的NAL从起始代码前缀(0 0 1;附录B)转换为大小前缀(mp4格式)
  • AU型、PPS型、SPS型落管器
  • 为每个NAL创建一个CMSampleBuffer,并使用avcC头添加一个CMFormatDescription
  • 使用已知帧速率重新生成从零开始的时间戳(如果帧被重新排序,请小心)
  • 将CMSampleBuffer附加到AVAssetWriterInput
  • 转到7直到EOF

  • 谢谢@Markus,这看起来是一个强有力的概念性概述。你能解释一下缩略词吗?如果可能的话,你能提供一些针对iOS的帮助吗?你能提供我使用给定步骤的示例代码吗?请尝试以下链接: