源地址:http://lukasz.cepowski.com/devlog/30,iphone-m3u8-segmenter-from-ffmpeg-for-video-streaming

Recent versions of ffmpeg contains a m3u8 segmenter feature which can be used for remuxing video files for streaming over http and watching video on iphone. 

Segmenter feature usage for iphone

Let's say that there is some .ts media file encoded with mpegts codec and we want to segment it for streaming over http. Segmenting is a process where one media container is being converted into set of smaller files with different quality to adjust the current quality to the bandwidth between streaming server and the display, iphone in this case. Segmenter will produce a set of smaller .ts files and a "playlist" .m3u8 which contains urls of the .ts files.

To process media by ffmpeg builtin segmenter run:

 
ffmpeg -re -i source.ts -codec copy -map 0 -f segment -segment_list foo.m3u8 -segment_list_flags +live -segment_time 10 out%03d.ts
 

It will produce .m3u8 playlist and .ts files with segments.
Note that this command will not transcode the video, it will just split data. Source .ts file should be encoded with mpegts codec in order to play it on iphone.

Compile static version of ffmpeg

Following steps are required to build stable static version of ffmpeg-1.0. Tested on debian i386 and amd64.
Based on https://github.com/stvs/ffmpeg-static

Install compiler and essential packages

 
apt-get -y install build-essential pkg-config bzip2
 

Create build and target directories

 
BUILD_DIR="/home/user/build"; export BUILD_DIR
TARGET_DIR="/home/user/target"; export TARGET_DIR
mkdir -p $BUILD_DIR
mkdir -p $TARGET_DIR
 

yasm

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/yasm/yasm-1.2.0.tar.gz"
tar zxvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure --prefix=$TARGET_DIR
make -j 4
make install
 

zlib

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/zlib/zlib-1.2.7.tar.bz2"
tar jxvf zlib-1.2.7.tar.bz2
cd zlib-1.2.7
./configure --prefix=$TARGET_DIR
make -j 4
make install
 

bzip2

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/bzip2/bzip2-1.0.6.tar.gz"
tar zxvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make
make install PREFIX=$TARGET_DIR
 

libpng

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/libpng/libpng-1.2.50.tar.gz"
tar zxvf libpng-1.2.50.tar.gz
cd libpng-1.2.50
CFLAGS="-I$TARGET_DIR/include" LDFLAGS="-L$TARGET_DIR/lib -lm" ./configure --prefix=$TARGET_DIR --enable-static --disable-shared
make -j 4
make install
 

make -j 4
make install

libogg

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/libogg/libogg-1.3.0.tar.gz"
tar zxvf libogg-1.3.0.tar.gz
cd libogg-1.3.0
CFLAGS="-I$TARGET_DIR/include" LDFLAGS="-L$TARGET_DIR/lib -lm" ./configure --prefix=$TARGET_DIR --enable-static --disable-shared
make -j 4
make install
 

libvorbis

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/libvorbis/libvorbis-1.3.3.tar.gz"
tar zxvf libvorbis-1.3.3.tar.gz
cd libvorbis-1.3.3
CFLAGS="-I$TARGET_DIR/include" LDFLAGS="-L$TARGET_DIR/lib -lm" ./configure --prefix=$TARGET_DIR --enable-static --disable-shared
make -j 4
make install
 

libtheora

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/libtheora/libtheora-1.1.1.tar.bz2"
tar jxvf libtheora-1.1.1.tar.bz2
cd libtheora-1.1.1
CFLAGS="-I$TARGET_DIR/include" LDFLAGS="-L$TARGET_DIR/lib -lm" ./configure --prefix=$TARGET_DIR --enable-static --disable-shared
make -j 4
make install
 

libvpx

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/libvpx/libvpx-v1.0.0.tar.bz2"
tar jxvf libvpx-v1.0.0.tar.bz2
cd libvpx-v1.0.0
PATH="$TARGET_DIR/bin:$PATH" CFLAGS="-I$TARGET_DIR/include" LDFLAGS="-L$TARGET_DIR/lib -lm" ./configure --prefix=$TARGET_DIR --enable-static --disable-shared
PATH="$TARGET_DIR/bin:$PATH" make -j 4
PATH="$TARGET_DIR/bin:$PATH" make install
 

faac

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/faac/faac-1.28.tar.bz2"
tar jxvf faac-1.28.tar.bz2
cd faac-1.28
CFLAGS="-I$TARGET_DIR/include" LDFLAGS="-L$TARGET_DIR/lib -lm" ./configure --prefix=$TARGET_DIR --enable-static --disable-shared
sed -i -e "s|^char \*strcasestr.*|//\0|" common/mp4v2/mpeg4ip.h
make -j 4
make install
 

x264

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/x264/x264-snapshot-20120425-2245.tar.bz2"
tar jxvf x264-snapshot-20120425-2245.tar.bz2
cd x264-snapshot-20120425-2245
PATH="$TARGET_DIR/bin:$PATH" CFLAGS="-I$TARGET_DIR/include" LDFLAGS="-L$TARGET_DIR/lib -lm" ./configure --prefix=$TARGET_DIR --enable-static
PATH="$TARGET_DIR/bin:$PATH" make -j 4
PATH="$TARGET_DIR/bin:$PATH" make install
 

xvidcore

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/xvidcore/xvidcore-1.3.2.tar.gz"
tar zxvf xvidcore-1.3.2.tar.gz
cd xvidcore/build/generic
CFLAGS="-I$TARGET_DIR/include" LDFLAGS="-L$TARGET_DIR/lib -lm" ./configure --prefix=$TARGET_DIR --enable-static --disable-shared
make -j 4
make install
 

lame

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/lame/lame-3.99.5.tar.gz"
tar zxvf lame-3.99.5.tar.gz
cd lame-3.99.5
CFLAGS="-I$TARGET_DIR/include" LDFLAGS="-L$TARGET_DIR/lib -lm" ./configure --prefix=$TARGET_DIR --enable-static --disable-shared
make -j 4
make install
 

remove shared objects

 
cd $TARGET_DIR/lib
rm -f *.dylib*
rm -f *.so*
 

ffmpeg

 
cd $BUILD_DIR
wget "http://mirror.hellworx.com/ffmpeg/ffmpeg-1.0.tar.gz"
tar zxvf ffmpeg-1.0.tar.gz
cd ffmpeg-1.0
PATH="$TARGET_DIR/bin:$PATH" CFLAGS="-I$TARGET_DIR/include" LDFLAGS="-L$TARGET_DIR/lib -lm" ./configure --prefix=$TARGET_DIR --extra-version=static --disable-debug --disable-shared --enable-static --extra-cflags=--static --disable-ffplay --disable-ffserver --disable-doc --enable-gpl --enable-pthreads --enable-postproc --enable-gray --enable-runtime-cpudetect --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-bzlib --enable-zlib --enable-nonfree --enable-version3 --enable-libvpx --disable-devices
PATH="$TARGET_DIR/bin:$PATH" make -j 4
PATH="$TARGET_DIR/bin:$PATH" make install
 

Download static ffmpeg

You can download static builds of ffmpeg from here:
debian6-i386: http://mirror.hellworx.com/ffmpeg/ffmpeg-static/i386/ffmpeg.bin
debian6-amd64: http://mirror.hellworx.com/ffmpeg/ffmpeg-static/amd64/ffmpeg.bin

[转]Iphone m3u8 segmenter from ffmpeg for video streaming的更多相关文章

  1. 使用OpenCV和imagezmq通过网络实时传输视频流 | live video streaming over network with opencv and imagezmq

    本文首发于个人博客https://kezunlin.me/post/b8847d9f/,欢迎阅读最新内容! live video streaming over network with opencv ...

  2. ffmpeg+nginx+video实现rtsp流转hls流,通过H5查看监控视频

    一.FFmpeg下载:http://ffmpeg.zeranoe.com/builds/ 下载并解压FFmpeg文件夹,配置环境变量:在“Path”变量原有变量值内容上加上d:\ffmpeg\bin, ...

  3. MRPT笔记——MRPT在VS2013中的配置

    Mobile Robot Programming Toolkit (MRPT)是一个跨平台的.开源的C++库,旨在帮助机器人研究员设计和实现SLAM.机器视觉和运动规划(避障)的算法. MRPT为移动 ...

  4. ffmpeg 频中分离 video audio 截取片断

    1.获取视频的信息    ffmpeg -i video.avi 2,将图片序列分解合成视频    ffmpeg -i src.mpg image%d.jpg ffmpeg -f image2 -i ...

  5. ffmpeg把ts文件转m3u8并切片

    Linux_x86_64流媒体环境:nginx + EasyDarwin-master 客户端播放器:VLC media player 下载windows下的ffmepg二进制版本,请进网站http: ...

  6. ffmpeg下载m3u8流媒体

    安装 编译好的windows可用版本的下载地址(官网中可以连接到这个网站,和官方网站保持同步): http://ffmpeg.zeranoe.com/builds/ 该版本为FFMPEG的Static ...

  7. Linux 下使用 ffmpeg 大批量合并 ts 文件, mp4切割文件为m3u8

    见范例 ffmpeg -i "concat:file001.ts|file002.ts|file003.ts|file004.ts......n.ts" -acodec copy ...

  8. ffmpeg m3u8生成 剪辑及格式转换

    使用 ffmpeg 工具, 生成 m3u8 文件 ffmpeg -re -i 03.ts -c copy -f hls -hls_base_url /Users/admin/Downloads/dow ...

  9. 网页前端video播放m3u8(HLS)

    网页前端video播放m3u8(HLS) HLS (HTTP Live Streaming)是Apple公司研发的流媒体传输技术,包括一个m3u8的索引文件.多个ts分片文件和key加密串文件.这项技 ...

随机推荐

  1. Contoso 大学 - 使用 EF Code First 创建 MVC 应用,实例演练

    Contoso 大学 Web 示例应用演示了如何使用 EF 技术创建 ASP.NET MVC 应用.示例中的 Contoso 大学是虚构的.应用包括了类似学生注册.课程创建以及教师分配等功能. 这个系 ...

  2. 6最好的之一 HTML5/CSS3 演示(PPT)框架

    HTML 是全世界最流行的网页编程语言.而HTML5是这门语言的升级版本号.越来越多的开发人员和设计师開始使用HTML5.以下介绍几个 HTML5/CSS3 的演示工具和框架,你能够用它们来创建你的网 ...

  3. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  4. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 SharePoint中基于Web开发

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 SharePoint中基于Web开发         之前提到过, ...

  5. pig 的chararry不能用于比较的类型可以comparison operator

    pig 的chararry类型可以是由场,通过现场实地比较. element_id 这是chararray种类. 声明: no_app_category_mapping = filter no_ele ...

  6. SQL2005性能分析一些细节功能你是否有用到?

    原文:SQL2005性能分析一些细节功能你是否有用到? 我相信很多朋友对现在越来越大的数据量而感到苦恼,可是总要面对现实啊,包括本人在内的数据库菜鸟们在开发B/S程序时,往往只会关心自己的数据是否正确 ...

  7. C--运算符,表达式和语句实例

    //第五章 运算符,表达式和语句 #include<stdio.h> //引入头文件 #include<math.h> #define ADJUST 7.64 //定义常量 # ...

  8. UIButton UIImage 用法分析

    一.UIButton和UIImageView的区别 1.显示图片 1> UIImageView只能显示一种图片(图片默认会填充整个UIImageView) image\setImage: 2&g ...

  9. 从用python做zoj1011发生Non-zero Exit Code错误说起

    近期做了浙大oj的第1011道题,遇见一件奇怪的事.这道题我用c++和php做,提交后都正确.可是用全然同样的逻辑改写成python代码提交后却产生了Non-zero Exit Code的判题结果.p ...

  10. web设计师和前端设计师的互动—前端工程师应该具备的三种思维

    如果你是一个天才工程师(马上可以离开),可以独立完成一个很多事情,你可以是一个怪咖,因为我相信没有一个人不会不佩服你.但现实归现实,多数人都不是天才,而我们在职场上也不是单打独斗,我们需要团队合作,需 ...