Pages

Sunday, 26 May 2013

iOS视频自动旋转

ios平台拍摄视频是有方向信息的,当手持设备在朝向非正常的方向拍摄时,会造成视频上传后处于颠倒的状态。(默认的正确方向是横向,home键在右侧)
做到自动旋转,需要两步:
1. 获取视频文件的方向信息;
2. 根据方向信息旋转;
解决这两个问题可以通过两个开源软件完成:mediainfo(http://mediainfo.sourceforge.net)和ffmpeg(http://www.ffmpeg.org)
一、安装mediainfo
下载libzen0,libmediainfo0和mediainfo三个文件,注意选择redhat的操作系统版本。
1. 安装libzen0: rpm -i libzen0-0.4.20-1.x86_64.RHEL_5.rpm
2. 安装libmediainfo0: rpm -i libmediainfo0-0.7.48-1.x86_64.RHEL_5.rpm
3. 安装mediainfo: rpm -i mediainfo-0.7.48-1.x86_64.RHEL_5.rpm
查看已安装的信息可以通过rpm -q libzen0来查看。
此时可以通过mediainfo来查看视频文件的扩展信息:
例如:mediainfo -f iphone_mov.MOV |grep Rotation
Rotation : 90.000
Rotation : 90?
这里就获取到了视频的偏转信息;
二、安装ffmpeg
可以通过svn方式直接下载源码:
svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
然后切换到ffmpeg目录下:执行./configure –enable-gpl –enable-shared –disable-ffserver –disable-yasm 进行安装
再执行make
make install
最后运行ffmpeg,此时可能会有error信息:
ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No
这个是因为lib未加入默认目录。
切换到目录:
# cd /etc/ld.so.conf.d
# vi ffmpeg.conf
加入目录/usr/local/lib
执行ldconfig
再次执行ffmpeg,运行OK。
执行命令旋转:ffmpeg -vf “transpose=1″ -i iphone_mov.MOV ouptup.MOV
下载到电脑运行,OK,视频已经旋转.