发布时间:2018年6月12日 更新时间:2018年9月10日 贡献者:xxianghe

指导文档

云端的录制和旁路直播,每条视频流都是独立的,通过调用混流接口,录制和旁路直播可以看到多路视频流。
具体如何混流,参看混流文档,里面有详细介绍和混流demo

常见问题

混流的前提条件什么?

  已经打开了旁路直播,可以在实时音视频控制台设置自动旁路直播,或者进房后调SDK接口开始旁路直播,如何设置参考旁路直播文档

旁路直播是什么?

  旁路直播是实时音视频后台,将主/副播画面转推一路标准流(rtmp,hls,flv)出来,然后调混流API,并将混流后的画面推流给腾讯云直播系统的工作方式。因为实时音视频走的私有UDP协议,旁路直播其实是将私有UDP协议流转成标准协议流。

实时音视频/互动直播是否支持自动混流?

不支持,如果是使用移动直播的TXLiteAVSDK或者第三方推流软件(比如:OBS),推rtmp流直播时可以,详见自动混流

是否支持纯音频混流/纯音频录制?


支持,input_type设置为4就可以;
支持,需要后台开启AAC录制。

[注意]目前不支持同时纯音频混流和音视频混流,或者中途切换混流的类型,切换了就会触发RTMP重置的,会导致生成多个小文件问题,建议中途不要切换混流的类型。

混流正确时机是?

(1)自动旁路直播的情况下,业务侧服务器也可以通过直播的"事件通知服务"监听到流的状态,同一房间内的用户开始推流就可以混流了,参考直播事件通知回调

(2)手动旁路直播的情况下,进入音视频房间开启摄像头或者启动屏幕分享成功并且旁路直播接口成功回调,等5s之后再混流

[注意]考虑到外网接入网络可能存在丢包,延迟等情况,开发者需要有重试的机制,重试间隔建议是 3s 以上。

怎么才能录制下来混流后的画面?

开启旁路直播(自动和手动都可以)+ 开启自动录制(见前面“开启旁路直播”文档) + 混流成功。

input_stream_id和output_stream_id是什么?怎么获取?

混流接口使用流 id 来标示每条视频流。对实时音视频来说,输入流 id 就是直播码,直播码通过下面这种规则产生的,

直播码=BIZID_MD5(房间号_用户名_数据类型)。

摄像头数据类型是main,屏幕分享的数据类型是aux (Web端的屏幕分享为main) 。而BIZID是一个固定的参数,可以在直播控制台的顶部找到它。

假如BIZID=8888,用户名=14y2l2c,房间号=293710,使用了摄像头,
则MD5(293710_14y2l2c_main)=81265058829fd2e50c8ec2ac78d55127。那么直播码就是8888_81265058829fd2e50c8ec2ac78d55127。

旁路直播的观看地址为
rtmp://8888.liveplay.myqcloud.com/live/8888_81265058829fd2e50c8ec2ac78d55127
http://8888.liveplay.myqcloud.com/live/8888_81265058829fd2e50c8ec2ac78d55127.flv
http://8888.liveplay.myqcloud.com/live/8888_81265058829fd2e50c8ec2ac78d55127.m3u8

摄像头数据类型是main,屏幕分享的数据类型是aux (Web端的屏幕分享为main) 。

而输出流 id 可以是输入流id,也可以自己定义,自定义规则是:[BIZID]MIX[底流id][混流数量][时间戳] 说明:

  • BIZID: 业务 id (可以腾讯云后台 直播管理 查看)。
  • MIX:固定前缀,表明该流为混流产生。
  • 底流 id:作为混流底流(背景主流)的流 id(如果超过 80 字节,取前 80 字节)。
  • 混流数量:若该视频流为两路视频流混合产生则为 2,以此类推。
  • 时间戳:1970 年 1 月 1 日以来的秒数。

为什么有时同一条流,业务侧服务器会收到多次推流事件回调?

  这种情况是重试导致的,属于正常现象,为了保证推流事件及时下发给业务侧服务器,腾讯云后台目前的消息可靠性保证机制是基于简单重传实现的,即如果一条通知消息没有成功发送到您指定的回调 URL,腾讯云会反复重试 3 次,第一次失败会快速重试,再失败了会每1分钟重试一次。 业务侧服务器可以在收到推流事件回调后,请回复:

json
// 在收到消息通知的http请求里返回错误码 0 以代表您已经成功收到了消息,从而避免腾讯云反复重复通知
{ "code":0 }
代表:“嗯,我(客户服务器)已经接收到通知了,请(腾讯云)不要再不断地发消息给我”。

为什么一场直播会生成很多个小录制文件?有办法合并为一个视频文件吗?

  输入流不稳定/断流时会导致一场直播录制产生多个文件,对于“直播录制断流产生多个分片”这一场景,强烈推荐使用“HLS录制自动拼接”方案。具体接入参见HLS录制自动拼接

主播摄像头和播放本地视频,混流录制的视频,回看的时候为什么会有两个声音?

  这是因为本就有两个音频流,在混流的时候,把其中一条流的 input_type参数 设置为 5(表示输入源为纯视频)即可。

常见错误码及排查建议

错误码 原因 排查建议
-1 解析输入参数错误 检查请求体body json格式是否正确
检查interface name是否为mix_streamv2.start_mix_stream_advanced
检查input_stream_list是否为空
-2 输入参数错误 检查appid、eventid是否为0
未设置模板,检查画面参数是否溢出
-3 流数目错误 检查输入流数目是否在[1,16]范围内
-4 流参数错误 检查输入输出长宽在(0,3000)范围内
检查输入流数目是否在(0,16]范围内
检查输入流是否携带layout_params
检查input_type是否支持(合法数值:0,2,3,4,5)
检查流id长度是否满足(1,80)
-11 图层错误 检查图层个数与输入流个数是否一致
检查图层id是否重复
检查图层id是否在(0,16]之间
-20 输入参数与接口不匹配 检查输入流条数是否匹配模板id
检查颜色参数是否正确
-21 混流输入流条数错误 检查输入流的条数是否至少为两条
-28 获取背景长宽失败 如果设置画布,检查画布的长宽是否设置
检查背景流是否存在(推流后需等待5s再混流)
-29 裁剪参数错误 检查裁剪位置是否超出流的长宽
-33 水印图片id错误 检查输入图片id是否设置
-34 获取水印图片url失败 检查图片是否上传成功,是否已经生成url
-300 输出流id已经被使用 检查当前输出流是否已经是另一个混流的输出流
-505 输入流无法在upload查到 重新推流后再试
-507 流长宽参数查询失败 检查画布宽、高是否设置
检查推流是否已经成功,建议推流后5s再开始混流,一般为还没推流成功就开始混流
-508 输出流id错误 检查是否存在同样sessionid使用不同输出流id的情况
-10031 触发混流失败 建议推流后等待5s再混流
-30300
-31001
-31002
取消混流时sessionid不存在 检查输入流是否都已断开
-31003 取消混流时输出流id与session中输出流id不匹配 检查取消混流时填入的输出流id
-31004 输出流码率不合法 检查输出流码率是否在[1,50000]

results matching ""

    No results matching ""