ffmpeg+nginx建立rtmp服务器,播放摄像头流
来源:互联网 发布:网络词老司机什么意思 编辑:程序博客网 时间:2024/06/07 19:20
好文章,http://blog.fs-Linux.org/?p=137
先转载,然后再动手实践看看
live555可以建立rtsp这个大伙都知道,ffserver+ffmpeg也可以建立一个实时rtsp服务,那么rtmp呢?好多人会首选red5,al'right,这里用的是nginx,下面记录一下使用nginx建立rtmp的全过程
首先下载一份nginx的rtmp的module
git clone https:
//github.com/arut/nginx-rtmp-module.git
下载好nginx-rtmp-module以后,需要将ginx-rtmp编译进nginx
cd nginx
./configure --prefix=/usr/local/nginx/ --add-module=/root/nginx-rtmp-module --with-http_ssl_module
make
make install
这样,就将nginx-rtmp-module编译进nginx里面,并安装到/usr/local/nginx里面了
接下来配置一下nginx的配置文件既可
在nginx-rtmp-module中可以看到nginx配置文件的参考
[root@CM nginx-rtmp-module]
# ls
AUTHORS ngx_rtmp_auto_push_module.c ngx_rtmp_control_module.c ngx_rtmp_handler.c ngx_rtmp_netcall_module.c ngx_rtmp_relay_module.c
test
config ngx_rtmp_bandwidth.c ngx_rtmp_core_module.c ngx_rtmp_handshake.c ngx_rtmp_netcall_module.h ngx_rtmp_relay_module.h TODO
doc ngx_rtmp_bandwidth.h ngx_rtmp_enotify_module.c ngx_rtmp_init.c ngx_rtmp_notify_module.c ngx_rtmp_send.c
hls ngx_rtmp.c ngx_rtmp_eval.c ngx_rtmp_limit_module.c ngx_rtmp_play_module.c ngx_rtmp_shared.c
LICENSE ngx_rtmp_cmd_module.c ngx_rtmp_eval.h ngx_rtmp_live_module.c ngx_rtmp_play_module.h ngx_rtmp_stat_module.c
ngx_rtmp_access_module.c ngx_rtmp_cmd_module.h ngx_rtmp_exec_module.c ngx_rtmp_live_module.h ngx_rtmp_receive.c ngx_rtmp_streams.h
ngx_rtmp_amf.c ngx_rtmp_codec_module.c ngx_rtmp_flv_module.c ngx_rtmp_log_module.c ngx_rtmp_record_module.c README.md
ngx_rtmp_amf.h ngx_rtmp_codec_module.h ngx_rtmp.h ngx_rtmp_mp4_module.c ngx_rtmp_record_module.h stat.xsl
[root@CM nginx-rtmp-module]
# ls test/
dump.sh ffstream.sh nginx.conf play.sh README.md rtmp-publisher www
[root@CM nginx-rtmp-module]
# ls test/rtmp-publisher/
player.html publisher.html README.md RtmpPlayer.mxml RtmpPlayer.swf RtmpPublisher.mxml RtmpPublisher.swf swfobject.js
[root@CM nginx-rtmp-module]
# ls test/www
bg
.jpg index.html jwplayer jwplayer_old record.html
[root@CM nginx-rtmp-module]
#
当然,如果只为了测试rtmp,完全可以将test中的rtmp放在/usr/local/nginx/conf/中,记得要备份/usr/local/nginx/conf下的nginx.conf
将nginx.conf中的内容修改如下:
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
application myapp {
live on;
}
}
}
http {
server {
listen 80;
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /usr/local/nginx/html/nginx-rtmp-module/;
}
location /control {
rtmp_control all;
}
location /rtmp-publisher {
root /usr/local/nginx/html/nginx-rtmp-module/test;
}
location / {
root /usr/local/nginx/html/nginx-rtmp-module/test/www;
}
}
}
配置完成之后,可以启动nginx
/usr/local/nginx/sbin/nginx
nginx从此启动完成
接下来试一下
ffmpeg -f video4linux2 -s 1280x720 -i /dev/video0 -vcodec libx264 -preset ultrafast -vprofile baseline -vlevel 1.0 -s 640x480 -b:v 800k -r 25 -pix_fmt yuv420p -f flv rtmp:
//192.168.0.194/myapp/mystream
然后ffmpeg的进程会显示如下
ffmpeg version N-54918-g11cb697 Copyright (c) 2000-2013 the FFmpeg developers
built on Jun 19 2013 08:54:07 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3)
configuration: --disable-yasm --enable-libx264 --enable-gpl
libavutil 52. 40.100 / 52. 40.100
libavcodec 55. 19.100 / 55. 19.100
libavformat 55. 12.102 / 55. 12.102
libavdevice 55. 3.100 / 55. 3.100
libavfilter 3. 81.102 / 3. 81.102
libswscale 2. 4.100 / 2. 4.100
libswresample 0. 17.103 / 0. 17.103
libpostproc 52. 3.100 / 52. 3.100
Input #0, video4linux2,v4l2, from
'/dev/video0'
:
Duration: N/A, start: 686.347441, bitrate: 147456 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 1280x720, 147456 kb/s, 10 fps, 10 tbr, 1000k tbn, 1000k tbc
[libx264 @ 0x2e63660] frame MB size (40x30) > level limit (99)
[libx264 @ 0x2e63660] DPB size (1 frames, 1200 mbs) > level limit (0 frames, 396 mbs)
[libx264 @ 0x2e63660] MB rate (30000) > level limit (1485)
[libx264 @ 0x2e63660]
using
cpu capabilities: none!
[libx264 @ 0x2e63660] profile Constrained Baseline, level 1.0
[libx264 @ 0x2e63660] 264 - core 133 r2334M a3ac64b - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http:
//www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=abr mbtree=0 bitrate=800 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
Output #0, flv, to
'rtmp://192.168.0.194/myapp/mystream'
:
Metadata:
encoder : Lavf55.12.102
Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 640x480, q=-1--1, 800 kb/s, 1k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo -> libx264)
Press [q] to stop, [?]
for
help
frame= 1469 fps=9.7 q=30.0 size= 14868kB time=00:02:31.44 bitrate= 804.3kbits/s
将nginx配置文件中需要的对应的目录放在nginx下面
mkdir /usr/local/nginx/html/nginx-rtmp-module
cp /root/nginx-rtmp-module/test /usr/local/nginx/html/nginx-rtmp-module/
cp /root/nginx-rtmp-module/stat.xsl /usr/local/nginx/html/nginx-rtmp-module/
ls /root/nginx-rtmp-module/test/www/
bg.jpg index.html jwplayer/ jwplayer_old/ record.html
可以看到,在nginx-rtmp-module/test/www/下面使用的是jwplayer,这个player是一个AS建立出来的flash player
然后访问地址http://192.168.0.194/rtmp-publisher/player.html,就可以播放了
http://blog.csdn.net/zangcf/article/details/22935555
- ffmpeg+nginx建立rtmp服务器,播放摄像头流
- ffmpeg+nginx建立rtmp服务器,播放摄像头流
- windows下live555+rtsp+ffmpeg媒体源,nginx+rtmp转发服务器,vlc播放rtmp媒体流
- ffmpeg rtmp推流 nginx搭建的rtmp服务器
- nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器
- nginx+ffmpeg筹建rtmp转播rtsp流的flash服务器
- nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器
- 搭建nginx rtmp直播服务器,ffmpeg模拟推流
- 搭建nginx rtmp直播服务器,ffmpeg模拟推流
- nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器
- nginx+rtmp服务器+ffmeg推流+ffpaly播放
- ffmpeg + nginx + rtmp 搭建本地直播服务器
- nginx+rtmp+ffmpeg推流
- 树莓派+FFmpeg——推送摄像头数据到RTMP服务器
- nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
- nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
- nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
- 使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
- 使用bootstrap引起IE浏览器滚动条变为透明的并且不占用页面宽度的问题以及解决办法
- swift3.0无符号右移(类似Java的>>>)
- MySQL中的 last_day() 函数
- 图像处理之双边滤波效果(Bilateral Filtering for Gray and Color Image)
- 修改ElementUI源码实践
- ffmpeg+nginx建立rtmp服务器,播放摄像头流
- 1016. Phone Bills (25)
- 产品理解与思考
- FtpUtil工具类
- VisualSVN Server仓库迁移到Linux(包含所有版本, 权限,用户信息)
- Spring3.0中@ResponseBody和@ResponseEntity的区别
- nginx+rtmp直播流服务器搭建
- jedis API接口批量处理包装(事务,管道,分布式锁,lua脚本,发布订阅)
- spring 配置数据库连接池