使用nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器笔记

小石头吼吼的博客之网络视频

启动nginx后用ffmpeg推流到nginx-myapp上

一、推流
{
	1、从usb摄像头直接推流
	ffmpeg -f v4l2 -i /dev/video0  -s 640x480 -f flv rtmp://192.168.126.128/myapp/test1
	
	2、从网络摄像头通过rtsp推流
	ffplay -i rtsp://localhost:8554/live1.h264	-s 640*480 -f flv rtmp://172.27.35.2:1935/myapp/test1

	3、obs推流
}

二、拉流/点播/http播放
{
	1、vlc拉流:	rtmp://192.168.126.128/myapp/test1    ubuntu上ffmpeg推流->pc上vlc播放   延迟10秒?
													ubuntu上ffmpeg推流->ubuntu上vlc播放   延迟1秒?

	2、点播需要添加一个rtmp节点
	rtmp{
	    server{
	        listen 1935;
	        chunk_size 4096;
	        application vod{ //点播节点
	        play /opt/video/vod;//被点播的文件存放地址
	    }
	}
	点播时所用url为rtmp://xx.xx.xx.xx/vod/name.mp4
	
	3、客户端根据hls协议使用http在网页进行观看(推送的仍然是rtmp视频流)
}

三、录播
application live{
  live on;
    allow play all;
    record all;
    record_path /opt/video/record;
    record_unique on;
}
其中record_path是录制视频的存放路径(记得开启写权限)。添加后重新启动nginx后重新推流,
查看/opt/video/record路径下的文件->可以看到多了一个test+时间戳命名的flv文件,这就是录制的视频了。



ffmpeg推流指令参考

HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。

发布了81 篇原创文章 · 获赞 1 · 访问量 2920

猜你喜欢

转载自blog.csdn.net/qq_42024067/article/details/103909233