在iPhone上转换视频

在iPhone上转换视频,iphone,video,ios4,video-encoding,Iphone,Video,Ios4,Video Encoding,我有一个应用程序,允许用户从他们的库中选择一个视频,或者用相机拍摄视频并上传到服务器。当我将视频发送到服务器时,我需要视频采用特定格式(m4v、h.264、AAC)。在iOS 5或更早版本中,视频记录为.mov文件(尽管使用h.264和AAC) 如何将视频转换为m4v?诚然,我对视频编码的细节和差异有点粗略,如果我不知道,请原谅。David,我可以建议您的服务器进行转码吗?在手机上进行代码转换既复杂又乏味。然而,iPhone已经使用h.264和AAC编码,所以你确定你需要做什么吗。mov和m4v

我有一个应用程序,允许用户从他们的库中选择一个视频,或者用相机拍摄视频并上传到服务器。当我将视频发送到服务器时,我需要视频采用特定格式(m4v、h.264、AAC)。在iOS 5或更早版本中,视频记录为.mov文件(尽管使用h.264和AAC)


如何将视频转换为m4v?诚然,我对视频编码的细节和差异有点粗略,如果我不知道,请原谅。

David,我可以建议您的服务器进行转码吗?在手机上进行代码转换既复杂又乏味。然而,iPhone已经使用h.264和AAC编码,所以你确定你需要做什么吗。mov和m4v对您来说可能并不重要,所有扩展都表明容器支持什么。我发现90%的视频都是非常基本的,并且使用容器格式的最小功能集。要进行比较,请查看wiki页面:

您可以使用Atom Box Viewer反复检查文件的结构(有两天的试用下载期,这对调查视频文件结构很有用)。不幸的是,它不是很直观,因为它假设您了解视频容器,但是,您可以非常快速地判断您的目标容器是否与您从iPhone获得的容器匹配

如果您确实需要强制执行容器/内容语义,除了编写自己的转码器之外,我建议您考虑使用ffmpeg。ffmpeg为音频和视频支持多种不同的容器和格式。例如,您可以通过如下方式调用它来强制执行您的标准:

ffmpeg.exe -i inputFile.mp4 -vcodec libx264 -s 320x240 -acodec libfaac outputFile.m4v
我给你的例子很简单,把它分解如下:

-i => input file
-vcodec libx264 => video codec set to use h.264 using the x264 encoder. to list more you can do: ffmpeg -formats
-s 320x240 => here I'm just explicitly specifying my size. If you don't set a size it will use whatever the input source size is
-acodec libfaac => use the faac AAC encoding library to transcode the audio
最后输出文件作为最后一个参数

如果您愿意,您也可以更具体地指定需要多少次编码(2次编码将提供更好的压缩,减少伪影)、目标比特率是多少(可能您希望将转码限制在一定的数据量,以便有效地流式传输它?)

我建议你去一个很好的论坛,了解视频编码/转码的更多细节。此其他链接具有其他ffmpeg配置,您可能会发现这些配置很有用

另外一个可供您使用的GUI是(handbrake),它实际上是一个ffmpeg包装器

手刹与它的安装捆绑在一起,所以我可以从那里得到它。请注意ffmpeg/handbrake上的许可,因为它们是在法国分发的,我不确定您是否可以将其与应用程序一起分发,但您可以在服务器端使用它。我对这些东西的合法性总是模糊不清


我希望这至少为您指明了正确的方向。

大卫,我可以建议您的服务器进行代码转换吗?在手机上进行代码转换既复杂又乏味。然而,iPhone已经使用h.264和AAC编码,所以你确定你需要做什么吗。mov和m4v对您来说可能并不重要,所有扩展都表明容器支持什么。我发现90%的视频都是非常基本的,并且使用容器格式的最小功能集。要进行比较,请查看wiki页面:

您可以使用Atom Box Viewer反复检查文件的结构(有两天的试用下载期,这对调查视频文件结构很有用)。不幸的是,它不是很直观,因为它假设您了解视频容器,但是,您可以非常快速地判断您的目标容器是否与您从iPhone获得的容器匹配

如果您确实需要强制执行容器/内容语义,除了编写自己的转码器之外,我建议您考虑使用ffmpeg。ffmpeg为音频和视频支持多种不同的容器和格式。例如,您可以通过如下方式调用它来强制执行您的标准:

ffmpeg.exe -i inputFile.mp4 -vcodec libx264 -s 320x240 -acodec libfaac outputFile.m4v
我给你的例子很简单,把它分解如下:

-i => input file
-vcodec libx264 => video codec set to use h.264 using the x264 encoder. to list more you can do: ffmpeg -formats
-s 320x240 => here I'm just explicitly specifying my size. If you don't set a size it will use whatever the input source size is
-acodec libfaac => use the faac AAC encoding library to transcode the audio
最后输出文件作为最后一个参数

如果您愿意,您也可以更具体地指定需要多少次编码(2次编码将提供更好的压缩,减少伪影)、目标比特率是多少(可能您希望将转码限制在一定的数据量,以便有效地流式传输它?)

我建议你去一个很好的论坛,了解视频编码/转码的更多细节。此其他链接具有其他ffmpeg配置,您可能会发现这些配置很有用

另外一个可供您使用的GUI是(handbrake),它实际上是一个ffmpeg包装器

手刹与它的安装捆绑在一起,所以我可以从那里得到它。请注意ffmpeg/handbrake上的许可,因为它们是在法国分发的,我不确定您是否可以将其与应用程序一起分发,但您可以在服务器端使用它。我对这些东西的合法性总是模糊不清


我希望这至少为您指明了正确的方向。

您是否有能力在服务器上进行代码转换?我认为他需要的不是代码转换,而是容器的更改。例如,编解码器可以,但容器错误(.mov vs m4v)。但我同意在服务器上进行可能更好。另请参见:您有在服务器上进行代码转换的能力吗?我认为他需要的不是代码转换,而是容器的更改。例如,编解码器可以,但容器错误(.mov vs m4v)。但我同意在服务器上执行此操作可能更好。另请参见: