蓝盾娱乐场:苹果http视频点播技术
来源:百度文库 编辑:九乡新闻网 时间:2024/05/15 10:52:26
引用作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://rainbird.blog.51cto.com/211214/507958
在写一个基于iphone的应用,主要是用来播放视频的.但是提交给苹果审核的时候却遭到百般刁难.尤其是关于在3G网络上播放视频流的限制:
9.4 Video streaming content over a cellular network longer than 10 minutes must use HTTP Live and include a baseline 64 kbps audio-only HTTP Live stream
也罢,想想也是,在移动互联网直接播放一个几十M上百M的文件也确实是太浪费有限的流量了.难道说在互联网上直接下载整个文件,而不管会不会看完就不浪费流量了吗?觉得确实有必要研究一下这项技术了. apple http live streaming.基于http的视频流播放,笔者称它为视频切片技术,先是将视频文件通过mpegts编码,然后通过apple提供的小工具segmenter将视频文件切割成很多小文件并维护一个时间列表.这些文件可以直接放在网站目录下面通过http协议被下载播放.不幸的是苹果提供的segmenter只能工作在mac下,我们需要一个基于linux的开源解决方案. 几经搜索和尝试最后找到Carson McDonald的<
1.编译安装ffmpeg 删除不用的已安装文件,升级apt-get缓存,安装必要的开发工具及库文件 apt-get remove ffmpeg x264 libx264-dev libmp3lame-dev apt-get update apt-get install build-essential subversion git-core checkinstall yasm texi2html \ libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev \ libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev nasm yasm libbz2-dev 需要用到的库及下载地址 faad2-2.7.tar.gz faac-1.28.tar.gz lame-3.98.4.tar.gz ffmpeg-0.6.1.tar.gz 1).faad2的安装最简单,直接解压然后
./configure &&make&&make install就ok了. 2).faac需要修改一个文件 vi +123 ./common/mp4v2/mpeg4ip.h 从123行开始修改此文件mpeg4ip.h,到129行结束。 修改前: #ifdef __cplusplus extern "C" { #endif char *strcasestr(const char *haystack, const char *needle); #ifdef __cplusplus } #endif 修改后: #ifdef __cplusplus extern "C++" { #endif const char *strcasestr(const char *haystack, const char *needle); #ifdef __cplusplus } #endif 然后默认安装:
./configure &&make&&make install
3).lame这样编译:
./configure --enable-nasm --disable-shared&&make&&make install 4).x264则是取的最新的代码,然后默认安装 git clone git://git.videolan.org/x264.git ./configure &&make &&make install&&cd .. 5).ffmpeg的编译参数
./configure --enable-gpl --enable-nonfree --enable-pthreads \
--enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libx264
为什么要选择ffmpeg-0.6.1呢?因为较早的版本编译完以后不能正常使用而从svn取的最新的代码则会好端端的出现Unknown option "--enable-libfaad"错误.
2.安装segmenter 如果您有一定的linux使用经验,ffmpeg编译自然不在话下,也比较简单的,最难的就是这部分的segmenter的编译安装了.
先取出源代码: svn checkout http://svn.assembla.com/svn/legend/segmenter/ segmenter 修改一个小地方: vi +242 segmenter.c 把guess_format修改成av_guess_format 不然segmenter会在编译的时候提示: segmenter.c:242: warning: 'guess_format' is deprecated (declared at /usr/local/include/libavformat/avformat.h:764) 接下来选择一种编译方式: gcc -Wall -g segmenter.c -o segmenter -L/usr/include/ffmpeg/libavformat -lavformat -L/usr/include/ffmpeg/libavcodec -lavcodec -L/usr/include/ffmpeg/libavutil -lavutil -I/usr/include/ffmpeg/ -lbz2 -lm -lmp3lame -lxvidcore -lx264 -lfaad -lfaac -lpthread -lz 或者 gcc -Wall -g segmenter.c -o segmenter -L/usr/local/src/ffmpeg/ffmpeg-0.6.1/libavformat -lavformat -L/usr/local/src/ffmpeg/ffmpeg-0.6.1/libavcodec -lavcodec -L/usr/local/src/ffmpeg/ffmpeg-0.6.1/libavutil -lavutil -I/usr/local/src/ffmpeg/ffmpeg-0.6.1/ -lbz2 -lm -lmp3lame -lxvidcore -lx264 -lfaad -lfaac -lpthread -lz 其实无论哪种编译方式都是手动指定了库文件的位置,不然的话编译不过,这个地方最坑人,费了很多很多时间!
3.编码视频文件并切割
这之前的地方如果你遵循笔者的安装文档和提示应该很容易就通过了(虽然笔者花费了大量的时间摸索).但是正确编译以后,你并不知道正确切割文件以后的效果是什么样的,所以笔者在这里花费了超级大量的时间,这也是笔者为什么坚持要写出这篇文章的原因.
先列出笔者犯的几个致命错误吧: 1).不按apple文档格式转码 因为笔者使用的输入文件在编码的时候是针对apple的设备优化过的,可以直接在apple设备上播放并获得良好的观看效果.而在使用原作者的编码参数: ffmpeg -i
苹果http视频点播技术
苹果春季修剪技术
防治苹果腐烂病技术
苹果郁闭园改造技术
《生财有道》视频点播
《生财有道》视频点播
《生财有道》视频点播
苹果花芽分化期管理技术(转)
苹果重茬病及其防治技术
苹果秋施基肥技术要点
架设视频点播服务器
内科视频点播列表页
cctv2《生财有道》视频点播
《生财有道》养殖视频点播
《生财有道》视频点播hhh
cctv2《生财有道》视频点播
Comet:基于 HTTP 长连接的“服务器推”技术
Comet:基于 HTTP 长连接的“服务器推”技术
Comet:基于 HTTP 长连接的“服务器推”技术 a
十里香卤烤王卤菜加工技术 http://www.lxtxrj.tk/
白苹果修复手册(http://benyouhui.it168.com/thread-1319954-1-1.html)
苹果花后需要规范的五项技术
红富士苹果除袋后到采收前的管理技术
新浪2010网络盛典视频点播