ffmpeg + m3u8-segmenter 配置
admin
2023-02-10 21:40:16
0

HTML5 + 流媒体文件


目前安装过的服务器版本

ubuntu 1.3

Centos 6.5


下面2个是在Centos上使用的

Centos 准备安装删除已安装包

yum erase ffmpeg x264 x264-devel


Centos 安装各种依赖包

yum install  gcc make nasm pkgconfig wget curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel libtool mhash.x86_64 perl-Digest-SHA1.x86_64  pcre.i386 pcre.x86_64 pcre-devel.i386 pcre-devel.x86_64


整个过程中可能还需要 g++ gcc git svn 等工具 自己随便下下就可以了

centos 的 gcc g++ 安装方法 yum install gcc gcc-c++ 。


该连接可下载下面所有的包  http://pan.baidu.com/s/1eQvHauu

首先安装ffmpeg和他的组件

1.1 安装nasm编译器支持汇编优化(lame库需要)

对安装了apt-get的linux机器,可直接执行以下命令安装nasm。

# sudo apt-get install nasm

        也可以用源代码编译并安装。先在网上获取nasm-2.10.05.tar.bz2

解压:

tar xvf nasm-2.10.05.tar.bz2

cd nasm-2.10.05

配置安装目录为/usr/bin:

./configure --prefix=/usr

编译并安装:

make && make install


1.2 安装yasm编译器支持汇编优化(ffmpeg库需要)

wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz

解压:

tar xvf yasm-1.2.0.tar.gz

cd yasm-1.2.0

配置安装目录为/usr/bin:

./configure --prefix=/usr

编译并安装:

make && make install


1.3 安装lame库支持mp3音频

wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz

tar xvf lame-3.99.5.tar.gz

 cd lame-3.99.5

 ./configure --enable-nasm

make && make install


1.4 安装faac库支持mpeg4 aac音频

wget http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz

tar xvf faac-1.28.tar.gz

cd faac-1.28

./configure --with-mp4v2

这里需要修改:

vim 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

make && make install


1.5 安装libogg库支持ogg音频

wget http://downloads.xiph.org/releases/ogg/libogg-1.3.1.tar.gz

tar xvf libogg-1.3.1.tar.gz

cd libogg-1.3.1

./configure

make && make install


1.6 安装theora

wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz

tar xvf libtheora-1.1.1.tar.gz

cd libtheora-1.1.1

./configure

make && make install


1.7 安装x264库支持h.264视频转码

执行以下命令获取x264的最新源代码

git clone git://git.videolan.org/x264.git

cd x264

./configure --enable-shared

make && make install


1.8 安装xvid库支持mpeg4视频转码

wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz

        获取最新的xvid mpeg4编×××源代码

tar xvf xvidcore-1.3.2.tar.gz

cd xvidcore/build/generic

./configure

make && make install


1.9 安装libnut

该软件需要用svn获取源代码,svn可以直接用yum install svn来装。

先下载:

svn co svn://svn.mplayerhq.hu/nut/src/trunk libnut

下载后代码保存在新建立的libnut目录下,对于64位Linux需要修改配置文件:

cd libnut

vim config.mak

在最后一个CFLAGS下一行增加:

CFLAGS += -fPIC

然后编译安装:

make && make install


1.10 libvpx

git clone http://git.chromium.org/webm/libvpx.git

cd libvpx

./configure  --enable-shared

make && make install


1.11 FAAD2

wget http://downloads.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz

tar zxvf faad2-2.7.tar.gz

cd faad2-2.7

./configure

make && make install


1.12 安装vorbis

wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.gz

tar xvf libvorbis-1.3.4.tar.gz

cd libvorbis-1.3.4

./configure

make && make install


1.13 修改链接环境变量

上面的媒体支持库安装完后,可以设置下环境准备编译ffmpeg了。不过在此之前必须修改环境变量

vim /etc/ld.so.conf

在文件末增加一行:

/usr/local/lib

       然后生效之:

ldconfig -v


2 编译ffmpeg

执行以下命令获取ffmpeg源代码

git clone git://source.ffmpeg.org/ffmpeg.git

cd ffmpeg

./configure  --enable-version3  --enable-libvpx --enable-libfaac --enable-libmp3lame  --enable-libvorbis --enable-libx264 --enable-libxvid --enable-shared --enable-gpl --enable-postproc --enable-nonfree --enable-avfilter --enable-pthreads --enable-libnut --enable-libtheora

***需要保证 --enable-libx264能执行

make && make install

ldconfig -v


分割器分2种

3.  TS流分割器segmenter的安装与使用

第一个 m3u8-segmenter

        git clone https://github.com/johnf/m3u8-segmenter

        下载m3u8-segmenter 下载后不要用它的反复编译,直接取m3u8-segmenter.c文件。

执行

gcc -Wall -g m3u8-segmenter.c -o segmenter -lavformat -lavcodec -lavutil


第二个 segmenter

svn co http://httpsegmenter.googlecode.com/svn/trunk segmenter

cd  segmenter

gcc -Wall -g segmenter.c -o segmenter -lavformat -lavcodec -lavutil -std=c99


安装好其中一个后

cp segmenter /usr/bin/

把执行文件拷贝过去。



下面给2个超简单的执行例子

直接转成ts

ffmpeg -i vp5.flv -acodec copy -vcodec libx264 vp5.ts

分割转成ts 一秒为单位

ffmpeg -ss 0 -t 30 -i vp5.flv -acodec copy -vcodec libx264 1.ts

ffmpeg -ss 30 -t 60 -i vp5.flv -acodec copy -vcodec libx264 2.ts

合并

ffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4

切割

m3u8-segmenter -i test.ts -d 10 -p segmenter_test -m test.m3u8 -u http://127.0.0.1:8080/Video/


这样就可以切片出m3u8文件  直接使用hls



相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...