傲瑞组件开发手册(07) -- 拉流组件 NPuller
在《傲瑞组件开发手册(06) -- 推流组件 NPusher》一文中,我们可以使用NPusher将视频(摄像头、桌面)、声音(麦克风、声卡)推到流服务器上,而本文介绍的NPuller则可以从流服务器拉流并播放。
NPuller 是傲瑞科技推出的实用组件之一,它可从rtmp流服务器拉取流,并将rtmp流中的视频帧和音频帧分别独立解析出来,直接得到图片和音频数据供我们播放使用。
一.NPuller 简介
当前版本的NPuller组件支持:
1. 输出音频数据格式:PCM原始数据。(采样率:16000,位数:16bit,声道数:1或2)
2. 输出视频数据格式:RGB24原始图像数据。
二.NPuller 结构
1. IStreamPuller 是拉流器接口。我们可以通过调用PullerFactory的CreatePuller来创建拉流器实例。
2. 得到拉流器实例后,我们需调用其Initialize方法将其初始化。
3. 初始化成功将触发AudioParasGot事件,从而可得到到声音数据的位宽、声道数和采样率等参数信息。
4. 拉流过程中,将连续触发PcmFrameGot事件和RgbFrameGot事件,从这两个事件我们分别可以拿到声音PCM数据;和视频图像RGB24位图。
5. 若停止拉流则调用Close方法即可。
三. 使用接口详细定义
public interface IStreamPuller { /// <summary> /// 与流媒体服务器的连接断开时,触发此事件。 /// </summary> event CbSimple Disconnected;
/// <summary> /// 当获取到声音数据的位宽、声道数和采样率时,触发此事件。参数:位宽 - 声道数 - 采样率。 /// </summary> event CbGeneric<int, int, int> AudioParasGot;
/// <summary> /// 当拉取到一帧音频数据并解码为PCM输出时,触发此事件。 /// </summary> event CbGeneric<byte[]> PcmFrameGot;
/// <summary> /// 当拉取到一帧视频数据并解码为RGB24位图输出时,触发此事件。 /// </summary> event CbGeneric<Bitmap> RgbFrameGot;
/// <summary> /// 与流服务器连接正常? /// </summary> bool Connected { get; }
/// <summary> /// 初始化。与流服务器建立连接,并启动拉流。 /// </summary> /// <param name="streamUrl">要拉取的流地址</param> void Initialize(string streamUrl);
/// <summary> /// 关闭并释放拉流器。 /// </summary> void Close(); }
1. Initialize 方法用于将拉取指定的rtmp流数据。
2. RgbFrameGot事件等到的图像数据是上下颠倒的。
四.NPuller Demo下载
下载本Demo源码:Oraycn.NPullerDemo.rar
Demo 中使用 NPuller去拉取指定地址流中的视频数据和音频数据,并用 MPlayer 来播放音频数据,用PictureBox控件显示图像数据。
Q Q:168757008