停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 https://webapi.zego.im/cgi/stop-mix? access_token=access_token (https://webapi.zego.im/cgi/stop-mix? access_token=access_token) 测试环境地址 https://testwebapi.zego.im/cgi/stop-mix? access_token=access_token (https://testwebapi.zego.im/cgi/stop-mix? access_token=access_token) 2 参数说明 是 否 必 数据类 参数名 须 型 说明 access_token 是 string 调用接口凭证 signature 是 string 签名摘要
id_name 是 string 用户标识 live_channel 是 string 直播频道 mixurl 是 string 需要停止混流的地址 stream_id 是 string 需要停止混流的流名 seq 否 int 请求序号 task_id 否 string 混流任务 id, 多路混流输出必须填写 ( 客户自定义, 务必保证唯一 ) 3 数据示例 { "signature": "",// md5(appid+timestamp+secret) "id_name": '', // 用户标识 "live_channel": '', // 用户标识 "mixurl":"rtmp://rtmp.dndemo.zego.im/zego/mix_stream", // 如果混流开始接口 MixOutput 传的是 mixurl, 这里就不能为空, 否则为空字符串 "stream_id":"",// 需要停止混流的流名 "task_id":"mult_output_task_id" // 混流任务 id, 多路混流输出必须填写 ( 客户自定义, 务必保证唯一 ) 4 返回说明
{ code : 0 5 示例代码 5.1 Java 示例代码 import java.io.*; import java.net.*; import java.util.*; import java.security.*; import com.alibaba.fastjson.*; public class StopMixStream { // 发送 post 请求 public static String sendpost(string url, String param) { String result = ""; try { URL realurl = new URL(url); URLConnection conn = realurl.openconnection(); conn.setdooutput(true); conn.setdoinput(true); try ( PrintWriter out = new PrintWriter(conn.getOutputStre am()) ){ out.print(param); out.flush(); try ( BufferedReader in = new BufferedReader(new InputStre amreader(conn.getinputstream(), "utf-8"))
){ String line; while ((line = in.readline())!= null) { result += "\n" + line; catch (Exception e) { System.out.println(e); e.printstacktrace(); return result; // 生成 md5 串 public static String getmd5str(string appid, String timestamp, Strin g serversecret) { String plaintext = appid + timestamp + serversecret; String md5str = ""; StringBuffer hexstr = new StringBuffer(); try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] plaintextbyte = plaintext.getbytes("utf-8"); byte[] md5_byte = md.digest(plaintextbyte); int num; for (int i = 0; i < md5_byte.length; i++) { num = md5_byte[i]; if(num < 0) { num += 256; if(num < 16){ hexstr.append("0"); hexstr.append(integer.tohexstring(num)); catch (Exception e) { System.out.println("erro md5 creat!!!!"); e.printstacktrace(); md5str = hexstr.tostring(); return md5str;
public static void main(string args[]) throws UnsupportedEncodingExc eption{ // zego 分配的 appid String appid = "123456789"; // 从 zego 获取的 serversecret String serversecret = "00000000000000000000000000000000"; // 发起混流的 id_name String id_name = "xxx"; // 混流的 roomid String live_channel = "xxxx"; // 混流输出的流 id String outputstreamid = "os"; // 混流输出的 cdn 地址 String cdnurl = "rtmp://127.0.0.1/xxx/"; // md5 加密所需的时间戳 String timestamp = Long.toString(System.currentTimeMillis()/1000 ); // 请求结束混流的 url, 注意正式环境与测试环境的区别, url 中包含的 ac cess_token 参考 " 获取 Access Token" String stopmixstream_url = "xxxxxx"; // 获取 md5 字符串 String md5str = getmd5str(appid, timestamp, serversecret); // 生成请求结束混流的表单数据 String post_form_str = "appid=%s&" + "id_name=%s&" + "signature=%s&" + "live_channel=%s&" + "stream_id=%s&" + "mixurl=%s"; post_form_str= String.format(post_form_str, appid, id_name, md5str, live_channel, outputstreamid, cdnurl + outputstreamid); // 发送开始请求结束混流的 url 请求
String ret = StopMixStream.sendPost(stopMixStream_url + access_t oken, post_form_str); 5.2 php 示例代码 <?php $token = "xxxxx"; $url = "https://webapi.zego.im/cgi/start-mix?access_token=". $token; // 生成请求数据 $formdata = [ "appid" => 123456789, "id_name" => "xxx", "signature" => "xxxxxx", // appid 时间戳 和 secret 生成 md5 码 "live_channel" => "xxxx", "stream_id" => "xxxxx", "mixurl" => "xxxx" // 混流推流地址 ]; // 请求结束混流接口 $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($formdata)); $result = curl_exec($curl); curl_close($curl); $result = json_decode($result, true); print_r($result);
5.3 python 示例代码 from urllib import request, parse import json import time import hashlib # 初始化所需的字段, 以下是业务测试时需要修改的部分 # 混流输出的流 id, 业务自定义 outputstreamid = "xxxx" # 混流输出的 cdn 地址 cdnurl = "rtmp://127.0.0.1/xxx/" # 请求停止推流的 url, 注意正式环境和测试环境的区别, url 中包含的 access_tok en 参考 " 获取 Access Token" request_mixstreamstop_url = "xxxxxxxxx" # appid + str(int(time.time())) + serversecret 的 md5 加密 signature_md5 = "zzzzz" # 构造 post 请求结束混流所需的表单数据 form_data = parse.urlencode({ 'appid': "123456789", # zego 给业务分配的 appid 'id_name': "ppppp", # 发起混流的 userid 'signature': signature_md5, 'live_channel': "qqqqq", # 指定混流的 roomid 'mixurl': cdnurl+outputstreamid, 'streamid': outputstreamid ) # 请求结束混流 with request.urlopen(request.request(request_mixstreamstop_url),data=for m_data.encode('utf-8')) as f: respond_str = f.read().decode("utf-8")