Depth Love Blog

计算机硕士,音视频方向。GitHub:https://github.com/depthlove

0%

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>,然后,就可以畅快的高效的对视频流进行硬编码了。

阅读全文 »

协议

流媒体协议:RTSP(Real Time Streaming Protocol),RTMP(Real Time Messaging Protocol),HLS(http live streaming)

会话描述协议:SDP(Session Description Protocol)

实时传输控制协议:RTCP(Real-time Transport Control Protocol或RTP Control Protocol)

实时传输协议:RTP(Real-time Transport Protocol)

流的类型

流的类型:TS流,RTP流

阅读全文 »

时间过的很快,转眼毕业一年了,去年的今天拿到硕士毕业证和庆祝毕业的场景在脑海中清晰可见。可是,时间就这么过去了。

在一个北方的城市,待了七年(2007~2014),自己从奔二的年纪跨越到奔三的年纪,想想觉得时间真的好可怕。在自己渴望成长的年龄段,父母变老了,弟弟妹妹们都已到了读大学的年纪,小外甥都上幼儿园了。现在回忆过去,我的感受是处在最美最纯的场景中的时候,却拼命的渴望摆脱这个单纯的生活,追求复杂而且功利的生活,眼前的美好却不曾珍惜。而今,处在自己曾今刻意追赶的生活中,不过是人生阶段必经的过程,可惜的是以往该放慢脚步体验生活的阶段再也回不去了。

深处在一个以学习就是为了找一份好工作,拿到高薪的大环境中,作为学生深受这种氛围的影响,变得唯利是图,变得焦躁不安,变得对未来恐慌,而不把握当下和珍惜当下最美的时光。对过去的追忆无外乎两种,一种是结合现在的处境反思以前的人生阶段的遗憾,一种是回想过去美好的记忆。是甜蜜是懊悔,只有当事人知道,毕竟个人的经历是独一无二的。

阅读全文 »

2014年7月1日毕业,2014年4月23日第一天正式上班,1个半月就从试用期转正,到今天已经工作1年2个月了。工作了1年多,重新思考以前自己面对的问题,以前对毕业之后究竟要找一个什么样的公司很模糊,听到的是进大公司好,福利好,做颗小螺丝钉,小公司加班多,待遇差,锻炼人。究竟大公司与小公司对初入社会的毕业生今后的职业生涯与生存状态有多大影响?

小公司与大公司的直接明了的区别就是职员人数,几十个人的公司虽在业务经济效益上可能取胜人数上百的大公司,但是整个公司的建制体系跟数百人上千人的公司是无法比的。

阅读全文 »

属于网络研发部的我,职位是播放器开发工程师,主要工作是播放器库的开发与维护。今天,收到老大(网络研发部经理)的工作安排,帮助平台部iOS工程师做重庆的项目,为期十五天左右。

工作就是修项目的bug,好比接手烂尾工程紧急修复在规定的时间段完工。百分之九十的程序员,是不愿意看别人写的代码的,因为代码不规矩,看一句代码要吐槽N句。

阅读全文 »

因为要重构播放器库,所以就需要参考网上的开源项目,在播放器开源项目这块,kxmovie开源项目是值得参考的一个项目。在github下载下来后,运行该工程,发现其用到了cocoapods来管理第三方库,以前我做项目都是将第三方库直接下载然后将源文件导入到工程,这种做法有其好处也存在一定的弊端,好处是便于项目的维护,方便的知道过去使用的第三方库是个什么情况,还可以根据实际需求修改,弊端就是第三方库的更新需要自己下载最新的再将旧的替换(手动更新)。通过cocoapods来管理第三方库,可以获取到最新的第三库将其引用到项目中,而且不需要自己手动去添加该第三方库的依赖库,虽然cocoapods用起来方便,但是也不一定全好,因为项目运行链接第三方库的时候,比如之前自己改过cocoapods引用进来的第三方库,这时就悲剧了,加载的第三方库是重新从网络上获取的,网上一些开发者也提到了,通过cocoapods管理项目中的第三方库不便于项目回滚。所以,是否选择cocoapods要根据实际情况来定。

阅读全文 »

经过前面的学习对FFmpeg的基本流程已经很熟悉了,现在到了掌握其中细节的时候了,用FFmpeg做播放器解码操作中,涉及到了一些结构体,这些结构之间到底有什么关系,它们是怎样协同工作的呢。文章 FFMPEG中最关键的结构体之间的关系 对这些结构间的关系进行了分析,详细内容如下:

FFMPEG中结构体很多。最关键的结构体可以分成以下几类:

阅读全文 »

现在的工作是播放器库的开发,可不是调用iOS系统自带的播放器框架进行一些简单的功能和界面定制,这些没什么含量。涉及iOS开发有3个年头了,现在的工作算是有点含金量了。涉及播放器的开发,FFmpeg的架构和功能是必须清楚的。FFmpeg自带的三个工程:ffplay, ffmpeg, ffprobe。这三个工程的代码量太大,如何切入进去,一窥其中的奥秘为自己所用呢?从核心切入,编码和解码。编码和解码的核心API接口就那十几个,通过这些深入然后剖析源代码,目标就明确了。

就我个人而言,首先要了解FFmpeg整个的运行机制,哪一部分工作需要调用FFmpeg的哪一块,这个必须清楚。播放器库的开发,解码播放这就是核心,我就需要从FFmpeg的解码流程入手了。FFmpeg源代码结构图 - 解码 这篇文章太好了,看得我两眼放光,精华。这篇文章读透了,完全可以把控FFmpeg的使用。我接下来的学习任务,那就是认真研读和敲代码研习,光看是不顶用的,需要动手写。

阅读全文 »

在自己研究生毕业的时候,想着能找上一份做视频编解码的工作,可惜没有如愿,最后到了一家iOS游戏渠道公司去做游戏支付业务的SDK开发,我的iOS正式开发生涯就这么开始了。

在那家iOS游戏渠道没做上一年,就离职了,至于怎么离职的,后续文章会谈一谈,以此来梳理下自己的职业规划。说了这多了,进入正题吧,今年3月份找上了一家做音视频服务的公司,做iOS播放器的开发,职位是播放器开发工程师,就是我现在所在的公司咯。

要开发一套属于自己的播放器库,不利用移动设备上自带的播放器来播放音频、视频,要用到哪些知识点呢,下面以我熟悉公司播放器库的前提下,说一说我的看法。

阅读全文 »