1、虚拟机安装 Ubuntu 14 x86_64 desktop
2、安装vim,openssh-server(应该是自动开启端口)。
3、安装开发环境:点击打开链接,这篇文章的开始有。
4、安装ffmpeg(静态安装),这里是英文源网:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu,按照步骤来就好(在安装的时候建议全部用开源库安装,而不是apt-get,因为我自己是这么做的,没问题)。
安完之后是这样的:
5、切换到这个路径下有一些自带的例程,可以用make来编译:
然后可能会提示如下错误:
在/etc/profile中加入环境变量:
export C_INCLUDE_PATH=/root/ffmpeg_build/include
export LD_LIBRARY_PATH=/root/ffmpeg_huild/lib
export LIBRARY_PATH=/root/ffmpeg_huild/lib
export PKG_CONFIG_PATH=/root/ffmpeg_build/lib/pkgconfig:$PKG_CONFIG_PATH
export PATH=$PATH:/root/bin
然后应该就能make了。
然后就有一些可执行文件了:
当然直接使用ffmpeg的shell命令也是可以的。
6、安装 nginx 服务器,配置rtmp模块:
英文源网:点击打开链接,安装到这一步就行了,因为我们已经安装好了ffmpeg
成功启动的话是这样的:
7、先用推流rtmp工具 FMLE来进行推流测试:
这里为了测试,我们先修改一下 /usr/local/nginx/conf/nginx.conf
在末尾追加:
rtmp {
server {
listen 1935;
application myapp {
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
}
}
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
然后重启一下nginx:
8、这里我们下载一个推流工具 FLME:点击打开链接
安装完之后,可以读到摄像头的内容:
然后在 FMS URL:填写要推流的应用地址,这里我的是:rtmp://192.168.241.151:1935/myapp,这个myapp就是之前在 nginx.conf配置文件中配置的应用名,然后在 Stream写上 test1也就是推流的应用的地址。然后点击start也就是开始推流。当然你可以先测试一下连接,就是Connect这个选项
这样就开始往 nginx 服务器上推流了。
9、这时我们可以用web应用来接收rtmp流数据,这里是项目代码:点击打开链接
解压之后直接放到 主机tomcat 的webapps下就行了,启动tomcat,执行应用:
10、上面是使用FMLE推流软件直接推送读取的摄像头视频,现在我们使用ffmpeg进行转码推流:
ffmpeg -re -i "/opt/1.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:1935/myapp/test1
11、点播功能:在编译nginx的时候,加入对flv的支持:
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master --with-http_flv_module
然后在nginx.conf配置文件的server节点加入一些配置信息:
listen 80;
server_name localhost;
root /usr/local/nginx/html/flv_file/;
index index.html;
charset utf-8;
#charset koi8-r;
#access_log logs/host.access.log main;
limit_rate_after 10m;
limit_rate 512k;
location / {
root html;
index index.html index.htm;
}
location ~ \.flv {
flv;
}
然后,我们把flv格式的文件放在 /usr/local/nginx/html/flv_file/ 这个目录下,最后我们同样使用之前的项目里面的非rtmp流获取的方式播放该http上的文件(第二个html文件),访问地址是http://IP/*.flv,我这里用ffmpeg转码得到的flv文件貌似不用再加时间戳了。如果是其他的flv文件,可能需要加关键帧信息才能实现播放控制,用yamdi这个工具。