使用smart_rtmpd(流媒体服务器)实现win版和阿里云服务器部署拉流推流
使用smart_rtmpd(流媒体服务器)实现win和阿里云服务器部署拉流推流
·
下载压缩包
下载OBS软件
下载VLC软件
官方下载:VLC media player,最棒的开源播放器 - VideoLAN
配置smart_rtmpd
下载完压缩包进行解压打开文件
根据不同平台进行解压
本次以win进行测试
打开文件夹
启动smart_rtmpd.exe
其他协议进行取消,只使用RTMP协议
打开config.xml文件进行配置
使用rtmpd
查看自己主机的ip地址,默认填1935端口
在第15行添加
在第63行添加ip地址
启动流媒体服务器
配置OBS推流
打开OBS软件
点击设置
点击直播,添加流媒体服务器地址rtmp://IP/live/xxx,如果流媒体服务器端口不是1935,则需要添加端口。rtmp://IP:端口/live/xxx。推流码则是相当于密码,例如服务器地址设置为rtmp://IP/live/,推流码为123456,则拉流地址需要填rtmp://IP/live/123456。
点击应用和确定。
打开VLC软件进行拉流
可以看到VLC可以播放OBS直播了。
配置http
开启http端口
重启smart_rtmpd服务器
在浏览器上输入地址就可以访问了。
阿里云服务器部署smart_rtmpd
修改权限
修改config.xml文件
服务器安全组开放端口
在服务器文件夹下启动smart_rtmpd
./smart_rtmpd
启动成功
修改OBS的推流地址
开启直播
发现无法连接
原因是内网防火墙没有开放端口,需要在服务器linux开放对应端口
开放1935/rtmp端口
sudo firewall-cmd --zone=public --add-port=1935/tcp --permanent
开放9090/http
sudo firewall-cmd --zone=public --add-port=9090/tcp --permanent
重启 防火墙
sudo firewall-cmd --reload
重新启动一下smart_rtmpd和OBS直播
连接成功
VLC测试成功
java代码测试
依赖
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.10</version>
</dependency>
public static void main(String[] args) {
// 设置视频流 URL(RTSP、RTMP )
String url = "rtmp://IP/live/123456"; // 替换为你的流地址
// 初始化视频捕获
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(url);
try {
grabber.start(); // 启动 FFmpegGrabber
// 获取视频流的宽高
int videoWidth = grabber.getImageWidth();
int videoHeight = grabber.getImageHeight();
System.out.println("Video resolution: " + videoWidth + "x" + videoHeight);
// 创建用于显示视频的窗口
CanvasFrame canvas = new CanvasFrame("Video Stream", CanvasFrame.getDefaultGamma() / grabber.getGamma());
canvas.setPreferredSize(new Dimension(videoWidth, videoHeight));
// 拉流并展示
Frame frameGrabbed;
while ((frameGrabbed = grabber.grab()) != null) {
// 将抓取到的视频帧显示到窗口
if (!canvas.isVisible()) {
break;
}
canvas.showImage(frameGrabbed);
}
// 停止视频抓取
grabber.stop();
canvas.dispose();
} catch (Exception e) {
e.printStackTrace();
}
}
测试成功
smart_rtmpd后台启动
nohup ./smart_rtmpd &
查看进程
top
杀死后台
kill ID
kill 19258杀死进程。
更多推荐
所有评论(0)