技术背景
在这篇blog之前,我提到了wpf下播放RTMP和RTSP渲染的两种方式,一种是通过控件模式,另外一种是直接原生RTSP、RTMP播放模块,回调rgb,然后在wpf下渲染,本文就两种方式做个说明。
技术实现
以大牛直播SDK的Windows平台SmartPlayer为例,我们先说第一种通过控件模式,控件模式,非常简单:可以用picturebox,在MainWindow.xaml 做以下设置:
ini
复制代码
<WindowsFormsHost HorizontalAlignment="Left" Height="338" Margin="10,10,0,0" VerticalAlignment="Top" Width="480" Background="Black"> <wf:PictureBox x:Name="RealPlayWnd"></wf:PictureBox> </WindowsFormsHost>
StartPlayer的时候,调NT_SP_SetRenderWindow,把handler设置下去即可,如果需要硬解码,可以先做硬解码检测,检测支持的话,设置硬解码模式。
csharp
复制代码
/* * nt_player_wrapper.cs * Author: daniusdk.com */ public bool StartPlay(String url, bool is_rtsp_tcp_mode, bool is_mute, bool is_hardware_decorder) { if ( is_playing_ ) return false; if (!OpenPlayerHandle(url, is_rtsp_tcp_mode, is_mute, is_hardware_decorder)) return false; //video resolution callback video_size_call_back_ = new SP_SDKVideoSizeCallBack(SP_SDKVideoSizeHandle); NTSmartPlayerSDK.NT_SP_SetVideoSizeCallBack(player_handle_, IntPtr.Zero, video_size_call_back_); if (render_wnd_ != null) { NTSmartPlayerSDK.NT_SP_SetRenderWindow(player_handle_, render_wnd_.Handle); NTSmartPlayerSDK.NT_SP_SetRenderScaleMode(player_handle_, 1); } else if(image_wnd_ != null) { //video frame callback (YUV/RGB) //format请参见 NT_SP_E_VIDEO_FRAME_FORMAT,如需回调

最低0.47元/天 解锁文章

3813

被折叠的 条评论
为什么被折叠?



