ffmpeg功能强大,可以通过命令行来对音视频进行处理。为了使用其功能,我在Mac上对其进行了安装。
我的Mac OS X 系统版本:OS X Yosemite, 10.10.14
通过文章利用x264将iOS摄像头实时视频流编码为h264文件 和 利用FFmpeg+x264将iOS摄像头实时视频流编码为h264文件,实现了如何采集实时视频流并压缩为h264编码格式的文件。对于采集到h264文件,里面究竟有些什么,下面就通过工具软件来一探究竟。
采用文章利用x264将iOS摄像头实时视频流编码为h264文件配套工程X264-Encode-for-iOS中的h264文件,该文件地址为2015-09-17 18:05:20.h264
工具软件 UITraEdit
如何编译x264源码获取支持iOS平台的静态库,可参考我的文章《编译iOS平台上使用的X264库》
如何编译FFmpeg源码获取支持iOS平台的静态库,可参考我的博客园上的文章《实战FFmpeg--编译iOS平台使用的FFmpeg库(支持arm64的FFmpeg2.6.2)》
通过步骤二,知道了如何编译FFmpeg库,但是要在FFmpeg中使用x264进行h264编码,还需要修改步骤二中的脚本。
步骤二中,使用的脚本的下载地址为:build-ffmpeg.sh
现在,FFmpeg的最新版本是 2.8,iOS系统的最新版本是 iOS 9.0.2,Xcode 最新版本是 Xcode 7.0.1,从 Xcode 7.0 开始支持 bitcode 选项了,bitcode 是什么,在百度上搜一搜就知道了。
代码见我的Github代码托管区域:X264-Encode-for-iOS
x264是一种免费的、具有更优秀算法的符合H.264/MPEG-4 AVC视频压缩编码标准格式的编码库。它同xvid一样都是开源项目,但x264是采用H.264标准的,而xvid是采用MPEG-4早期标准的。由于H.264是2003年正式发布的最新的视频编码标准,因此,在通常情况下,x264压缩出的视频文件在相同质量下要比xvid压缩出的文件要小,或者也可以说,在相同体积下比xvid压缩出的文件质量要好。它符合GPL许可证。
从iOS8开始,苹果开放了硬解码和硬编码API,框架为 VideoToolbox.framework, 此框架需要在iOS8及以上的系统上才能使用。此框架中的硬解码API是几个纯C函数,在任何OC或者 C++代码里都可以使用。使用的时候,首先,要把 VideoToolbox.framework 添加到工程里,并且在要使用该API的文件中包含头文件 #include <VideoToolbox/VideoToolbox.h>,然后,就可以畅快的高效的对视频流进行硬编码了。
2014年7月1日毕业,2014年4月23日第一天正式上班,1个半月就从试用期转正,到今天已经工作1年2个月了。工作了1年多,重新思考以前自己面对的问题,以前对毕业之后究竟要找一个什么样的公司很模糊,听到的是进大公司好,福利好,做颗小螺丝钉,小公司加班多,待遇差,锻炼人。究竟大公司与小公司对初入社会的毕业生今后的职业生涯与生存状态有多大影响?
小公司与大公司的直接明了的区别就是职员人数,几十个人的公司虽在业务经济效益上可能取胜人数上百的大公司,但是整个公司的建制体系跟数百人上千人的公司是无法比的。
属于网络研发部的我,职位是播放器开发工程师,主要工作是播放器库的开发与维护。今天,收到老大(网络研发部经理)的工作安排,帮助平台部iOS工程师做重庆的项目,为期十五天左右。
工作就是修项目的bug,好比接手烂尾工程紧急修复在规定的时间段完工。百分之九十的程序员,是不愿意看别人写的代码的,因为代码不规矩,看一句代码要吐槽N句。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git因为要重构播放器库,所以就需要参考网上的开源项目,在播放器开源项目这块,kxmovie开源项目是值得参考的一个项目。在github下载下来后,运行该工程,发现其用到了cocoapods来管理第三方库,以前我做项目都是将第三方库直接下载然后将源文件导入到工程,这种做法有其好处也存在一定的弊端,好处是便于项目的维护,方便的知道过去使用的第三方库是个什么情况,还可以根据实际需求修改,弊端就是第三方库的更新需要自己下载最新的再将旧的替换(手动更新)。通过cocoapods来管理第三方库,可以获取到最新的第三库将其引用到项目中,而且不需要自己手动去添加该第三方库的依赖库,虽然cocoapods用起来方便,但是也不一定全好,因为项目运行链接第三方库的时候,比如之前自己改过cocoapods引用进来的第三方库,这时就悲剧了,加载的第三方库是重新从网络上获取的,网上一些开发者也提到了,通过cocoapods管理项目中的第三方库不便于项目回滚。所以,是否选择cocoapods要根据实际情况来定。