123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392 |
- using System.IO;
- using System.Linq;
- using Vinno.FIS.TRTCClient.Common.Enum;
- namespace Vinno.FIS.TRTCClient.Common.Pipe
- {
- public class TRTCRoomInfo : TransferData
- {
- /// <summary>
- /// trtc appid
- /// </summary>
- public uint AppId { get; set; }
- /// <summary>
- /// 用户签名
- /// </summary>
- public string UserSig { get; set; }
- /// <summary>
- /// 用户ID
- /// </summary>
- public string UserId { get; set; }
- /// <summary>
- /// 房间号
- /// </summary>
- public uint RoomId { get; set; }
- /// <summary>
- /// 输出分辨率宽度
- /// </summary>
- public int OutputWidth { get; set; }
- /// <summary>
- /// 输出分辨率高度
- /// </summary>
- public int DeviceHeight { get; set; }
- /// <summary>
- /// 分辨率宽度
- /// </summary>
- public int DeviceWidth { get; set; }
- /// <summary>
- /// 分辨率高度
- /// </summary>
- public int OutputHeight { get; set; }
- /// <summary>
- /// 分辨率帧率
- /// </summary>
- public uint VideoFps { get; set; }
- public uint VideoBitrate { get; set; }
- public uint MinVideoBitrate { get; set; }
- /// <summary>
- /// Camera id.
- /// </summary>
- public string VideoDeviceId { get; set; }
- /// <summary>
- /// Gets or sets the mic device id.
- /// </summary>
- public string MicDeviceId { get; set; }
- /// <summary>
- /// Gets or sets the speaker device id.
- /// </summary>
- public string SpeakerDeviceId { get; set; }
- /// <summary>
- /// Gets or sets the terminal room id.
- /// </summary>
- public uint TerminalRoomId { get; set; }
- /// <summary>
- /// Gets or sets the terminal id.
- /// </summary>
- public string TerminalId { get; set; }
- /// <summary>
- /// Gets or sets the terminal id.
- /// </summary>
- public string CameraId { get; set; }
- /// <summary>
- /// Gets or sets the terminal is pushing or not.
- /// </summary>
- public bool TerminalIsPushing { get; set; }
- /// <summary>
- /// 设备ID
- /// </summary>
- public string DeviceId { get; set; }
- /// <summary>
- /// 是否是Sonopost
- /// </summary>
- public bool IsSonopost { get; set; }
- /// <summary>
- /// 是否是超声机画面
- /// </summary>
- public bool IsUSMachineImage { get; set; }
- /// <summary>
- /// 是否是直播
- /// </summary>
- public bool IsForLive { get; set; }
- /// <summary>
- /// Channel Category
- /// </summary>
- public EnumLiveChannelCategory Category { get; set; }
- /// <summary>
- /// 是否是多通道
- /// </summary>
- public bool IsMultiChannel { get; set; }
- /// <summary>
- /// 是否静音
- /// </summary>
- public bool IsMute { get; set; }
- /// <summary>
- /// 是否是老版的模式,老版由RTC打开摄像头,新版由Capturer打开
- /// </summary>
- public bool IsOldServerMode { get; set; }
- /// <summary>
- /// 是否是铺满模式
- /// </summary>
- public bool IsFillMode { get; set; }
- public override string ToString()
- {
- return $"aid=\"{AppId}\" sig=\"{UserSig}\" uid=\"{UserId}\" rid=\"{RoomId}\" ow=\"{OutputWidth}\" oh=\"{OutputHeight}\" dw=\"{DeviceWidth}\" dh=\"{DeviceHeight}\" fps=\"{VideoFps}\" vb=\"{VideoBitrate}\" mvb=\"{MinVideoBitrate}\" vdid=\"{VideoDeviceId}\" mdid=\"{MicDeviceId}\" sdid=\"{SpeakerDeviceId}\" tid=\"{TerminalId}\" trid=\"{TerminalRoomId}\" tpush=\"{TerminalIsPushing}\" did=\"{DeviceId}\" iso=\"{IsSonopost}\" ius=\"{IsUSMachineImage}\" ifo=\"{IsForLive}\" cgy=\"{(int)Category}\" imc=\"{IsMultiChannel}\" cid=\"{CameraId}\" imt=\"{IsMute}\" iom=\"{IsOldServerMode}\" ifm=\"{IsFillMode}\"";
- }
- public static TRTCRoomInfo ConvertFromArgs(string[] args)
- {
- var info = new TRTCRoomInfo();
- foreach (var arg in args)
- {
- if (arg.StartsWith("aid"))
- {
- info.AppId = GetArgValue<uint>(arg);
- }
- if (arg.StartsWith("sig"))
- {
- info.UserSig = GetArgValue<string>(arg);
- }
- if (arg.StartsWith("uid"))
- {
- info.UserId = GetArgValue<string>(arg);
- }
- if (arg.StartsWith("rid"))
- {
- info.RoomId = GetArgValue<uint>(arg);
- }
- if (arg.StartsWith("ow"))
- {
- info.OutputWidth = GetArgValue<int>(arg);
- }
- if (arg.StartsWith("oh"))
- {
- info.OutputHeight = GetArgValue<int>(arg);
- }
- if (arg.StartsWith("dw"))
- {
- info.DeviceWidth = GetArgValue<int>(arg);
- }
- if (arg.StartsWith("dh"))
- {
- info.DeviceHeight = GetArgValue<int>(arg);
- }
- if (arg.StartsWith("fps"))
- {
- info.VideoFps = GetArgValue<uint>(arg);
- }
- if (arg.StartsWith("vb"))
- {
- info.VideoBitrate = GetArgValue<uint>(arg);
- }
- if (arg.StartsWith("mvb"))
- {
- info.MinVideoBitrate = GetArgValue<uint>(arg);
- }
- if (arg.StartsWith("vdid"))
- {
- info.VideoDeviceId = GetArgValue<string>(arg);
- }
- if (arg.StartsWith("mdid"))
- {
- info.MicDeviceId = GetArgValue<string>(arg);
- }
- if (arg.StartsWith("sdid"))
- {
- info.SpeakerDeviceId = GetArgValue<string>(arg);
- }
- if (arg.StartsWith("tid"))
- {
- info.TerminalId = GetArgValue<string>(arg);
- }
- if (arg.StartsWith("trid"))
- {
- info.TerminalRoomId = GetArgValue<uint>(arg);
- }
- if (arg.StartsWith("tpush"))
- {
- info.TerminalIsPushing = GetArgValue<bool>(arg);
- }
- if (arg.StartsWith("did"))
- {
- info.DeviceId = GetArgValue<string>(arg);
- }
- if (arg.StartsWith("iso"))
- {
- info.IsSonopost = GetArgValue<bool>(arg);
- }
- if (arg.StartsWith("ius"))
- {
- info.IsUSMachineImage = GetArgValue<bool>(arg);
- }
- if (arg.StartsWith("ifo"))
- {
- info.IsForLive = GetArgValue<bool>(arg);
- }
- if (arg.StartsWith("cgy"))
- {
- info.Category = (EnumLiveChannelCategory)GetArgValue<int>(arg);
- }
- if (arg.StartsWith("imc"))
- {
- info.IsMultiChannel = GetArgValue<bool>(arg);
- }
- if (arg.StartsWith("cid"))
- {
- info.CameraId = GetArgValue<string>(arg);
- }
- if (arg.StartsWith("imt"))
- {
- info.IsMute = GetArgValue<bool>(arg);
- }
- if (arg.StartsWith("iom"))
- {
- info.IsOldServerMode = GetArgValue<bool>(arg);
- }
- if (arg.StartsWith("ifm"))
- {
- info.IsFillMode = GetArgValue<bool>(arg);
- }
- }
- return info;
- }
- private static T GetArgValue<T>(string arg)
- {
- var type = typeof(T);
- var args = arg.Split('=');
- if (args.Count() == 2)
- {
- if (type == typeof(int))
- {
- return (T)(object)int.Parse(args[1]);
- }
- else if (type == typeof(uint))
- {
- return (T)(object)uint.Parse(args[1]);
- }
- else if (type == typeof(bool))
- {
- return (T)(object)bool.Parse(args[1]);
- }
- else
- {
- return (T)(object)args[1];
- }
- }
- return default;
- }
- public byte[] ToBytes()
- {
- byte[] result = new byte[0];
- using (var stream = new MemoryStream())
- {
- WriteUInt(AppId, stream);
- WriteString(UserSig, stream);
- WriteString(UserId, stream);
- WriteUInt(RoomId, stream);
- WriteInt(OutputWidth, stream);
- WriteInt(OutputHeight, stream);
- WriteInt(DeviceWidth, stream);
- WriteInt(DeviceHeight, stream);
- WriteUInt(VideoFps, stream);
- WriteUInt(VideoBitrate, stream);
- WriteUInt(MinVideoBitrate, stream);
- WriteString(VideoDeviceId, stream);
- WriteString(MicDeviceId, stream);
- WriteString(SpeakerDeviceId, stream);
- WriteUInt(TerminalRoomId, stream);
- WriteString(TerminalId, stream);
- WriteBool(TerminalIsPushing, stream);
- WriteString(DeviceId, stream);
- WriteBool(IsSonopost, stream);
- WriteBool(IsUSMachineImage, stream);
- WriteBool(IsForLive, stream);
- WriteInt((int)Category, stream);
- WriteString(CameraId, stream);
- WriteBool(IsMultiChannel, stream);
- WriteBool(IsMute, stream);
- WriteBool(IsOldServerMode, stream);
- WriteBool(IsFillMode, stream);
- result = stream.ToArray();
- }
- return result;
- }
- public static TRTCRoomInfo FromBytes(byte[] bytes)
- {
- using (var stream = new MemoryStream(bytes))
- {
- stream.Position = 0;
- var appId = ReadUInt(stream);
- var userSig = ReadString(stream);
- var userId = ReadString(stream);
- var roomId = ReadUInt(stream);
- var outputWidth = ReadInt(stream);
- var outputHeight = ReadInt(stream);
- var deviceWidth = ReadInt(stream);
- var deviceHeight = ReadInt(stream);
- var framerate = ReadUInt(stream);
- var bitrate = ReadUInt(stream);
- var minBitrate = ReadUInt(stream);
- var videoDeviceId = ReadString(stream);
- var micDeviceId = ReadString(stream);
- var speakerDeviceId = ReadString(stream);
- var terminalRoomId = ReadUInt(stream);
- var terminalId = ReadString(stream);
- var terminalIsPushing = ReadBool(stream);
- var deviceId = ReadString(stream);
- var isSonopost = ReadBool(stream);
- var isUSImage = ReadBool(stream);
- var isForLive = ReadBool(stream);
- var category = ReadInt(stream);
- var cameraId = ReadString(stream);
- var isMultiChannel = ReadBool(stream);
- var isMute = ReadBool(stream);
- var isOldServerMode = ReadBool(stream);
- var isFillMode = ReadBool(stream);
- return new TRTCRoomInfo
- {
- AppId = appId,
- UserSig = userSig,
- UserId = userId,
- RoomId = roomId,
- OutputWidth = outputWidth,
- OutputHeight = outputHeight,
- DeviceWidth = deviceWidth,
- DeviceHeight = deviceHeight,
- VideoFps = framerate,
- VideoBitrate = bitrate,
- MinVideoBitrate = minBitrate,
- VideoDeviceId = videoDeviceId,
- MicDeviceId = micDeviceId,
- SpeakerDeviceId = speakerDeviceId,
- TerminalRoomId = terminalRoomId,
- TerminalId = terminalId,
- TerminalIsPushing = terminalIsPushing,
- DeviceId = deviceId,
- IsSonopost = isSonopost,
- IsUSMachineImage = isUSImage,
- IsForLive = isForLive,
- Category = (EnumLiveChannelCategory)category,
- CameraId = cameraId,
- IsMultiChannel = isMultiChannel,
- IsMute = isMute,
- IsOldServerMode = isOldServerMode,
- IsFillMode = isFillMode,
- };
- }
- }
- }
- }
|