java 直播rtmp推流_视频点播RTMP推流直播流媒体服务二次开发集成接口

本文介绍了如何使用Java进行RTMP推流,以及如何与LiveQing流媒体服务器进行二次开发集成。通过登录接口获取sid或token,实现视频直播流媒体服务的接口调用,包括cookie方式和token方式的详细步骤。
摘要由CSDN通过智能技术生成

LiveQing流媒体服务器软件,包含云平台服务,云直播服务等,支持与LiveGBS的对接,支持设备RTMP推流,视频文件转码等功能

集成二次开发

二次开发中,方式是在自己业务系统后端登录接口中,调用流媒体的登录接口,获取所需的sid或是token

1. 封闭内网使用

在业务使用,提供视频分发能力时,且不会对外公开接口端口10080(默认端口),可以直接将接口鉴权关闭,具体服务器登录 http://localhost:10080 默认用户名/密码 admin/admin, 在 基础配置 页面,【接口鉴权】开关。

4f57097444a27f94e9f6f238bf34b5ef.png

2. 业务系统对接(两种方式)

2.1 cookie方式

注: HttpOnly = true 客户端API(例如JavaScript)无法访问仅限http的cookie。 此限制通过跨站点脚本(XSS)消除了cookie被盗的威胁。

在后端业务代码中对接,如Java/PHP/Node.js 等

调用LiveDSS登录接口,接口调用成功后会在请求Headers的cookie中写入sid

取出cookie里的sid

其它接口调用时在请求头cookies中传递sid

Content-Type:application/x-www-form-urlencoded

代码示例:Java

2.1.1 获取sid

import java.io.DataOutputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

public class GetLoginSid {

public static void main(String[] args) throws Exception {

URL url = new URL("http://dss.liveqing.com:10080/login");

//发起POST请求,并传递username,password参数(需要md5加密)

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setRequestMethod("POST");

conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

DataOutputStream out = new DataOutputStream(conn.getOutputStream());

String content = "username=admin&password=21232f297a57a5a743894a0e4a801fc3";

out.writeBytes(content);

out.flush();

out.close();

Map> headerFields = conn.getHeaderFields();

Set headerFieldsSet = headerFields.keySet();

Iterator hearerFieldsIter = headerFieldsSet.iterator();

while (hearerFieldsIter.hasNext()) {

String headerFieldKey = hearerFieldsIter.next();

if ("Set-Cookie".equalsIgnoreCase(headerFieldKey)) {

List headerFieldValue = headerFields.get(headerFieldKey);

for (String headerValue : headerFieldValue) {

String[] fields = headerValue.split(";\\s*");

for (int j = 0; j < fields.length; j++) {

if (fields[j].indexOf('=') > 0) {

String[] f = fields[j].split("=");

if ("Expires".equalsIgnoreCase(f[0])) {

System.out.println("Expires:" + f[1]);

}

else if ("Max-Age".equalsIgnoreCase(f[0])) {

System.out.println("Max-Age:" + f[1]);

}else if ("sid".equalsIgnoreCase(f[0])) { //获取sid

System.out.println("sid:" + f[1]);

}

}

}

}

}

}

}

}

运行如下

edd9d9d1587a8e03b12df9776ec16b84.png

2.1.2 携带sid调用其它接口

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

public class RequestOtherAPI {

public static void main(String[] args) throws Exception {

URL url = new URL("http://dss.liveqing.com:10080/live/list");

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setRequestMethod("POST");

conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

//这里传递上一步获得sid

conn.setRequestProperty("Cookie","sid=s%3Ark-TEuVtm.WnWoXuDY%2FldJuEc64I6TXjd0Fq1eqByEd4ng1UwNb2I;");

DataOutputStream out = new DataOutputStream(conn.getOutputStream());

String content = "start=0&limit=10";

out.writeBytes(content);

out.flush();

out.close();

conn.connect();

StringBuffer sbf = new StringBuffer();

InputStream is = conn.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));

String strRead = null;

while ((strRead = reader.readLine()) != null) {

sbf.append(strRead);

sbf.append("\r\n");

}

reader.close();

System.out.println(sbf.toString());

}

}

运行如下

2be56cb4d6648f1e1bed11cea0bfa52f.png

2.2 token方式

Content-Type:application/x-www-form-urlencoded

其它接口调用时传递附加token入参

代码示例:Java

2.2.1 获取token

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

public class GetLoginToken {

public static void main(String[] args) throws Exception {

URL url = new URL("http://localhost:10080/login");

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setRequestMethod("POST");

conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

DataOutputStream out = new DataOutputStream(conn.getOutputStream());

String content = "username=admin&password=21232f297a57a5a743894a0e4a801fc3";

out.writeBytes(content);

out.flush();

out.close();

conn.connect();

StringBuffer sbf = new StringBuffer();

InputStream is = conn.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));

String strRead = null;

while ((strRead = reader.readLine()) != null) {

sbf.append(strRead);

sbf.append("\r\n");

}

reader.close();

System.out.println(sbf.toString());

}

}

运行如下

bf45cc7dbd66701a6750612d746c73a6.png

2.2.2 携带token调用其它接口

其他接口调用时,附加token入参

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

public class RequestOtherAPIByToken {

public static void main(String[] args) throws Exception {

URL url = new URL("http://localhost:10080/live/list");

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setRequestMethod("POST");

conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

DataOutputStream out = new DataOutputStream(conn.getOutputStream());

String content = "start=0&limit=10&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1Mzc3NzExNTAsInB3IjoiMjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzMiLCJ0bSI6MTUzNzY4NDc1MCwidW4iOiJhZG1pbiJ9.b1U-R-_HVKV9reWRD50327B1ztUqs3gowUGi_lDzlmU";

out.writeBytes(content);

out.flush();

out.close();

conn.connect();

StringBuffer sbf = new StringBuffer();

InputStream is = conn.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));

String strRead = null;

while ((strRead = reader.readLine()) != null) {

sbf.append(strRead);

sbf.append("\r\n");

}

reader.close();

System.out.println(sbf.toString());

}

}

运行如下

7b6cb0e082c8d03e2cf873a1bc2c6481.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值