centos+ffmpeg安裝配置+切片

在虛擬機vmware6(版本比較舊了)中,安裝centos6,很少說了。html

vmware虛擬工具安裝前,須要安裝以下內容nginx

yum -y install kernel-develc++

yum -y install kernet-headersgit

yum -y install gccgithub

yum -y upgrade kernel kernel-develweb


下面2個是在Centos上使用的vim

Centos 準備安裝刪除已安裝包windows

yum erase ffmpeg x264 x264-develcentos


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庫須要)

防止由於時間不對,修改一下爲北京時間


1.若是提示command not found,那說明ntp沒有安裝,使用以下命令進行安裝 

  yum -y install ntpdate ntp 


二、ntpdate us.pool.ntp.org 


三、設置硬件時間和軟件時間的一致並校準 

 /sbin/hwclock --systoh


wget http://www.nasm.us/pub/nasm/releasebuilds/2.11.05/nasm-2.11.05.tar.bz2

tar xvf nasm-2.11.05.tar.bz2

cd  nasm-2.11.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


(或者修改CFLAGS += -Os -fomit-frame-pointer -g -Wall -fPIC 

make libnut

make prefix=/usr install-libnut)


而後編譯安裝:

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


編譯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種(本人選第一種m3u8-segmenter)

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

cp segmenter /usr/bin/


第二個 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/


nginx的安裝

wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz


tar zxvf nginx_mod_h264_streaming-2.2.7.tar.gz


git clone git://github.com/arut/nginx-rtmp-module.git


wget http://sourceforge.net/projects/pcre/files/pcre/8.32/pcre-8.32.tar.gz


tar zxvf pcre-8.32.tar.gz

cd pcre-8.32

./configure --prefix=/usr/local/pcre

make && make install


下載nginx-1.5.3安裝包

wget http://nginx.org  wget http://nginx.org/download/nginx-1.6.2.tar.gz


tar zxvf nginx-1.6.2.tar.gz

cd nginx-1.6.2

groupadd www

useradd -g www www

cd ..

cd nginx_mod_h264_streaming-2.2.7/src

vi ngx_http_streaming_module.c

將如下內容註釋掉或刪掉

/* TODO: Win32 */

if (r->zero_in_uri)

{

return NGX_DECLINED;

}


安裝zlib

wget http://www.zlib.net/ zlib-1.2.8.tar.gz  下載到/usr/local/


tar xzvf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure --prefix=/usr/local/zlib

make && make install


編譯nginx

./configure --prefix=/usr/local/nginx --add-module=../nginx_mod_h264_streaming-2.2.7 --with-http_ssl_module --with-pcre=../pcre-8.32 --with-zlib=../zlib-1.2.8 --user=www --group=www  --with-http_flv_module --with-http_stub_status_module --add-module=../nginx-rtmp-module

make && make install

初頻配置nginx

vi /usr/local/nginx/conf/nginx.conf


默認配置

  • server {

  •         listen       80;

  •         server_name 10.65.160.102;

  •  

  •         #charset koi8-r;

  •  

  •         #access_log  logs/host.access.log  main;

  •  

  •         location / {

  •             root   html;

  •             index  index.html index.htm;

  •         }

  •  

  • }

  •  



     

     

     

    啓動nginx:  /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

     

    客戶端vlc打開網絡串流中訪問:http://10.65.160.102/文件名.m3u8

     

    在windows上能夠用vlc播放。



下面給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/


實際中,我下面命令作切片,沒有任何報錯。


點播切片:

ffmpeg -i cctv.ts -c copy -map 0 -f segment -segment_list /home/sunrc/cctv/cctv.m3u8 -segment_time 10 /home/sunrc/cctv/cctv%03d.ts


直播切片:(udp的暫且沒試)vlc架設直播服務器,

客戶端用vlc輸入http://10.65.160.102/src.m3u8觀看

ffmpeg -i rtsp://10.65.160.111:8554/1 -c copy -map 0 -f segment -segment_list /home/sunrc/zhibo/src.m3u8 -segment_time 10 /home/sunrc/zhibo/src%03d.ts







這樣就能夠切片出m3u8文件  直接使用hls



安裝mpayer播放器(以此文無關,裝着玩)

wget http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm


wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

yum install rpmfusion-free-release-6-1.noarch.rpm  epel-release-6-8.noarch.rpm


yum -y install mplayer*

wget http://www1.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2

tar -xjvf essential-20071007.tar.bz2 

cd /usr/local/lib/

mkdir codecs

cd /home/sunrc/

mv essential-20071007/* /usr/local/lib/codecs/

yum install mplayer-gui

gmplayer 運行



如下是網上查的命令,沒測試明白,我裝的hls有問題,之後慢慢查問題所在

點播:

 

生成hls分片:

 

ffmpeg -i <媒體文件> -c:v libx264 -c:a -f hls /usr/local/nginx/html/test.m3u8

 

 

 

直播:

 

ffmpeg -i udp://@:1234 -c:v libx264 -c:a -f hls  /usr/local/nginx/html/test.m3u8

相關文章
相關標籤/搜索