安装ffmpeg:
下载FFmpeg和libx264的包ffmpeg-2.4.1.tar.bz2 last_x264.tar.bz2libx264需要yasm,所以先安装yasm
- apt-get install yasm
- aptitude install libx264-dev
- tar -xjvf last_x264.tar.bz2
./configure --enable-shared --enable-pic然后安装ffmpeg,ffmpeg有许多依赖包,需要一个一个先安装1. libfaac
make
make install
aptitude install libfaac-dev依赖包安装完后,安装ffmpeg先解压缩ffmpeg
2. libmp3lame
aptitude install libmp3lame-dev
3. libtheora
aptitude install libtheora-dev
4. libvorbis
aptitude install libvorbis-dev
5. libxvid
aptitude install libxvidcore-dev
6. libxext
aptitude install libxext-dev
7. libxfixes
aptitude install libxfixes-dev
- tar -xjvf ffmpeg-2.4.1.tar.bz2
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbisNginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器:
make
make install
Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功能相对比较完善的流媒体服务器.
这个流媒体服务器可以支持RTMP和HLS(Live Http Stream)
从安装开始
Nginx的安装参照我之前的这个:
http://blog.csdn.net/redstarofsleep/article/details/45092127
不同的是在configure的时候需要增加nginx-rtmp-module的支持,下载好nginx-rtmp-module后解压,然后nginx安装时增加这个模块(--add-module),其它都是一样的.
./configure --prefix=/usr/local/nginx --with-pcre=/home/user/pcre/pcre-8.32 --with-zlib=/home/user/zlib/zlib-1.2.8 --with-openssl=/home/user/openssl/openssl-1.0.1i --add-module=/home/user/nginx-rtmp-moduleFFMPEG的安装参照上一篇:
http://blog.csdn.net/redstarofsleep/article/details/45092145
nginx配合ffmpeg做流媒体服务器的原理是: nginx通过rtmp模块提供rtmp服务, ffmpeg推送一个rtmp流到nginx, 然后客户端通过访问nginx来收看实时视频流. HLS也是差不多的原理,只是最终客户端是通过HTTP协议来访问的,但是ffmpeg推送流仍然是rtmp的.
文章插图
安装完成后,打开Nginx的配置文件nginx.conf进行配置
首先在里面加入rtmp的配置
rtmp {然后,针对hls,还需要在http里面增加一个location配置
server {
listen 1935;
Application myapp {
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
}
}
location /hls {这是一个最简单,最基础的配置, rtmp监听1935端口,如果是hls的话用hls on开启hls,并且为hls设置一个临时文件目录hls_path /tmp/hls; 其它更高级的配置可以参看nginx-rtmp-module的readme,里面有比较详细的介绍其它的配置,并且它还提供了一个通过JWPlayer在网页上播放的例子.
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
保存完配置文件后,启动nginx,通过netstat -ltn命令可以看到增加了一个1935端口的监听.8080是nginx默认的http监听端口.
[JAVA] view plaincopy然后用ffmpeg推流到nginx:
# netstat -ltn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1935 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
第一个是推到了上面配置的myapp上:
[java] view plaincopy【一篇文章带你FFmpeg到流媒体服务器开发】第二个推送到hls上:
ffmpeg -re -i "D:downloadfilmaqgy2.mp4" -vcodec libx264 -vprofile baseline -acodec aac
-ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://server:1935/
myapp/test1
推荐阅读
- 绿萝花茶哪种人不能喝,玫瑰花哪些人不能喝
- 枸杞菊花茶的功效与作用,枸杞菊花茶用量
- 桂花茶的功效与禁忌,玫瑰花茶的功效与禁忌有哪些
- 使用 FreeBSD 作为桌面操作系统
- 玫瑰花茶的保存方法,玫瑰花茶的作用哪些
- 花草茶发展历程,品饮花草茶
- 天天喝玫瑰花茶好不好,孕妇喝菊花茶好不好
- 求职|27岁宝妈线上求职文员,却被HR嫌弃“年纪有点大”,后续来了
- 菊花茶喝了下火吗,枸杞菊花茶用量
- 雪菊茶的功效与作用,茉莉花的功效与作用