• TSINGSEE青犀视频云边端H265播放器EasyPlayer-RTSP在C#版本增加OSD功能说明


    EasyPlayer播放器项目是TSINGSEE青犀视频研发团队开发的H265编码视频播放器,经过多年的技术积累与实践打造,EasyPlayer播放器项目系列无论是在对接设备型号种类,还是在对接编码的兼容性上,都具备较高的可用性。

    最近有用户在使用EasyPlayer-RTSP播放器的时候,提出C++版本有OSD叠加的功能,但是C#版本没有这个功能,下面描述下如何增加这个功能。

    EasyPlayer-RTSP C#版本的功能是继承于libEasyPlayer-RTSP.dll这个库,在C#版本中我们通过EasyPlayer-RTSP.NetSDK类重新封装了这个库的内容,现在需要在EasyPlayer-RTSP.NetSDK类中把OSD功能也封装进去。

    1、增加接口函数定义如下:

    [DllImport(@"LiblibEasyPlayer-RTSP.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?EasyPlayer_ShowOSD@@YAHHHUtagEASY_PALYER_OSD@@@Z")] public static extern int EasyPlayer_ShowOSD(int channelId, int show, tagEASY_PALYER_OSD osd);
    
    

    2、增加相关结构体定义如下

    [StructLayoutAttribute(LayoutKind.Sequential)]
             public struct RECT
             {
                 public System.Int32 left;
                 public System.Int32 top;
                 public System.Int32 right;
                 public System.Int32 bottom;
             };
      [StructLayoutAttribute(LayoutKind.Sequential)]
             public  struct tagEASY_PALYER_OSD
             {
                 [MarshalAs(UnmanagedType.ByValTStr,SizeConst = 1024)] public string stOSD;
                 public System.UInt32 alpha;		//0-255
                 public System.UInt32 color;		//RGB(0xf9,0xf9,0xf9)
                 public System.UInt32 shadowcolor;//RGB(0x4d,0x4d,0x4d) 全为0背景透明
                 public RECT rect;		//OSD基于图像右上角显示区域
                 public int size;		//just D3D Support
             };
    [StructLayoutAttribute(LayoutKind.Sequential)]
             public struct tagRECT
             {
                 public int left;
                 public int top;
                 public int right;
                 public int bottom;
             }
    
    

    3、接口调用示例如下:

    //OSD显示
     PlayerSdk.tagEASY_PALYER_OSD osd;
     osd.alpha = 255;
     osd.size = 35;
     Color color = Color.FromArgb(255, 0, 255);
     int colorInt = ParseRGB(color);
     osd.color = (uint)colorInt;
     osd.rect.left = 10;
     osd.rect.right = 5000;
     osd.rect.top = 100;
     osd.rect.bottom = 800;
     Color color_shadowcolor = Color.FromArgb(0, 0, 0);
     int colorInt_shadowcolor = ParseRGB(color_shadowcolor);
     osd.shadowcolor = (uint)colorInt_shadowcolor;
    string  ss = "这是EasyPlayer-RTSP-Win播放器 
    的字幕叠加接口的效果!!!
    以"\r\n"为换行结束符号
    注意:每行的长度不能超过128个字节
    总的OSD长度不能超过1024个字节";
    osd.stOSD = ss;
     PlayerSdk.EasyPlayer_ShowOSD(channelID, 1, osd);
    

    其中channelID为EasyPlayer_OpenStream()返回值。

    EasyPlayer播放器系列项目依赖其灵活控制、低延时、高稳定的特点,已经成熟运用于多个项目场景当中,其中包括手机直播、桌面直播、远程教育课堂直播等,同时在城市安防或者社区安防监控的视频播放当中也具备很好的兼容性。

    如果大家还想了解更多相关内容,欢迎咨询我们或着访问TSINGSEE青犀视频官方网站了解。

  • 相关阅读:
    史上最详细 Linux 用户与用户组知识
    MySQL -2- 体系结构--随笔小记
    MySQL -2- 体系结构
    MySQL -1- 简介及安装
    MySQL -0- 课程大纲及课程链接
    探索Windows命令行系列(4):通过命令操作文件和文件夹
    探索Windows命令行系列(3):命令行脚本基础
    探索Windows命令行系列(2):命令行工具入门
    探索Windows命令行系列(1):导航目录
    Oracle 分页方法研究
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14081420.html
Copyright © 2020-2023  润新知