推流
介绍跟推流相关的方法和回调。
SetDirectCdnStreamingAudioConfiguration
设置主播端直接向 CDN 推流时的音频编码属性。
public abstract int SetDirectCdnStreamingAudioConfiguration(AUDIO_PROFILE_TYPE profile);
参数
- profile
-
音频编码属性,包含采样率、码率、编码模式和声道数。详见 AUDIO_PROFILE_TYPE。
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
SetDirectCdnStreamingVideoConfiguration
设置主播端直接向 CDN 推流时的视频编码属性。
public abstract int SetDirectCdnStreamingVideoConfiguration(VideoEncoderConfiguration config);
详情
该方法仅对摄像头采集、屏幕共享或自采集的视频有效。即对在 DirectCdnStreamingMediaOptions 中设置 publishCameraTrack 或 publishCustomVideoTrack 为 true
时所采集的视频有效。
如果你设置的视频分辨率超出你的摄像头设备支持的范围,SDK 会根据你的设置进行自适应,取最接近、且长宽比与你设置的分辨率一致的值进行采集、编码、推流。你可以通过 OnDirectCdnStreamingStats 回调了解推送的视频流的实际分辨率。
参数
- config
- 视频编码参数配置。详见 VideoEncoderConfiguration。
注: 在直接向 CDN 推流时,SDK 目前仅支持将 ORIENTATION_MODE 设为横屏模式(ORIENTATION_MODE_FIXED_LANDSCAPE)或竖屏模式(ORIENTATION_MODE_FIXED_PORTRAIT)。
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
StartDirectCdnStreaming
设置主播端开始直接向 CDN 推流。
public abstract int StartDirectCdnStreaming(string publishUrl, DirectCdnStreamingMediaOptions options);
详情
SDK 不支持同一时间向同一个 URL 重复推流。
媒体选项说明
SDK 不支持 publishCameraTrack 和 publishCustomVideoTrack 同时为 true
,也不支持 publishMicrophoneTrack 和 publishCustomAudioTrack 同时为 true
。你可以根据场景需求设置媒体选项 (DirectCdnStreamingMediaOptions)。示例如下:
如果你想推送主播端采集的音视频流,请将媒体选项进行如下设置:
- publishCustomAudioTrack 设为
true
并调用 PushAudioFrame - publishCustomVideoTrack 设为
true
并调用 PushVideoFrame - 确保 publishCameraTrack 为
false
(默认值) - 确保 publishMicrophoneTrack 为
false
(默认值)
true
,并调用 PushAudioFrame 即可推送纯音频流。
参数
- publishUrl
- CDN 推流 URL。
- options
- 主播端的媒体选项。详见 DirectCdnStreamingMediaOptions。
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
StartRtmpStreamWithoutTranscoding
开始非转码推流。
public abstract int StartRtmpStreamWithoutTranscoding(string url);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
调用该方法,你可以向指定的旁路推流地址推送直播音视频流。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址转码推流,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 OnRtmpStreamingStateChanged 回调,报告推流的状态。
- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后,如果你想要重新推流,那么请你务必先调用 StopRtmpStream,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
- -2:url 为空或为长度为 0 的字符串。
- -7:调用该方法前,未初始化 SDK。
- -19:该旁路推流 URL 已在使用中,请使用其他旁路推流 URL。
StartRtmpStreamWithTranscoding
开始旁路推流并设置转码属性。
public abstract int StartRtmpStreamWithTranscoding(string url, LiveTranscoding transcoding);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
调用该方法,你可以向指定的旁路推流地址推送直播音视频流并设置转码属性。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址转码推流,则需多次调用该方法。
一次推流代表一个推流任务,最大并发任务数默认为 200,表示你在一个声网项目下最多同时运行 200 个推流任务,如需更高配额,请联系技术支持。
调用该方法后,SDK 会在本地触发 OnRtmpStreamingStateChanged 回调,报告推流的状态。
- 请在加入频道后调用该方法。
- 只有直播场景下的主播才能调用该方法。
- 调用该方法推流失败后,如果你想要重新推流,那么请你务必先调用 StopRtmpStream,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
- transcoding
-
旁路推流的转码属性,详见 LiveTranscoding 类。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
- -2:url 为空或为长度为 0 的字符串。
- -7:调用该方法前,未初始化 SDK。
- -19:该旁路推流 URL 已在使用中,请使用其他旁路推流 URL。
StopDirectCdnStreaming
设置主播端停止直接向 CDN 推流。
public abstract int StopDirectCdnStreaming();
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
StopRtmpStream
结束旁路推流。
public abstract int StopRtmpStream(string url);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
调用该方法,你可以结束指定的旁路推流地址上的直播。该方法每次只能结束一个推流地址上的直播,如果你需要结束多个推流地址的直播,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 OnRtmpStreamingStateChanged 回调,报告推流的状态。
参数
- url
- 旁路推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
UpdateLocalTranscoderConfiguration
更新本地合图配置。
public abstract int UpdateLocalTranscoderConfiguration(LocalTranscoderConfiguration config);
详情
调用 StartLocalVideoTranscoder 后,如果你希望更新本地合图配置,请调用该方法。
参数
- config
- 本地合图的配置,详见 LocalTranscoderConfiguration。
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
UpdateRtmpTranscoding
更新旁路推流转码属性。
public abstract int UpdateRtmpTranscoding(LiveTranscoding transcoding);
详情
声网推荐你使用更加完善的服务端推流功能,详见实现服务端旁路推流。
开启转码推流后,你可以根据场景需求,动态更新转码属性。转码属性更新后,SDK 会触发 OnTranscodingUpdated 回调。
参数
- transcoding
-
旁路推流的转码属性,详见 LiveTranscoding 类。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。
OnDirectCdnStreamingStateChanged
CDN 推流状态改变回调。
public virtual void OnDirectCdnStreamingStateChanged(DIRECT_CDN_STREAMING_STATE state, DIRECT_CDN_STREAMING_ERROR error, string message) { }
主播端直接向 CDN 推流后,当推流状态改变时,SDK 会触发该回调向你报告新的状态、错误码和信息。你可以据此排查问题。
参数
- state
- 当前推流状态。详见 DIRECT_CDN_STREAMING_STATE。
- error
- 推流出错的原因。详见 DIRECT_CDN_STREAMING_ERROR。
- message
- 状态改变对应的信息。
OnDirectCdnStreamingStats
CDN 推流统计数据回调。
public virtual void OnDirectCdnStreamingStats(DirectCdnStreamingStats stats) { }
在主播直接向 CDN 推流的过程中,SDK 每隔 1 秒触发一次该回调。
参数
- stats
- 当前推流的统计数据。详见 DirectCdnStreamingStats。
OnRtmpStreamingEvent
旁路推流事件回调。
public virtual void OnRtmpStreamingEvent(string url, RTMP_STREAMING_EVENT eventCode)
参数
- url
- 旁路推流 URL。
- eventCode
- 旁路推流事件码。详见 RTMP_STREAMING_EVENT。
OnRtmpStreamingStateChanged
旁路推流状态发生改变回调。
public virtual void OnRtmpStreamingStateChanged(string url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR_TYPE errCode) { }
旁路推流状态发生改变时,SDK会触发该回调,并在回调中明确状态发生改变的 URL 地址及当前推流状态。该回调方便推流用户了解当前的推流状态;推流出错时,你可以通过返回的错误码了解出错的原因,方便排查问题。
参数
- url
-
推流状态发生改变的 URL 地址。
- state
- 当前的推流状态,详见 RTMP_STREAM_PUBLISH_STATE。
- errCode
- 推流错误信息,详见 RTMP_STREAM_PUBLISH_ERROR_TYPE。
OnTranscodingUpdated
旁路推流转码设置已被更新回调。
public virtual void OnTranscodingUpdated()
方法中的直播参数 LiveTranscoding 更新时,OnTranscodingUpdated 回调会被触发并向主播报告更新信息。