diff --git a/JianGongYun/TRTC/LiveClassroom.cs b/JianGongYun/TRTC/LiveClassroom.cs
index ed30a0c..333ddf5 100644
--- a/JianGongYun/TRTC/LiveClassroom.cs
+++ b/JianGongYun/TRTC/LiveClassroom.cs
@@ -392,10 +392,6 @@ namespace JianGongYun.TRTC
///
public static void ResetVideoMain() { }
///
- /// 重设主视频(摄像头)网络
- ///
- public static void ResetVideoMainQos() { }
- ///
/// 重设副视频(录屏)
///
public static void ResetVideoSub() { }
diff --git a/JianGongYun/TRTC/ViewModels/SettingWindowViewModel.cs b/JianGongYun/TRTC/ViewModels/SettingWindowViewModel.cs
index 095e695..2800b30 100644
--- a/JianGongYun/TRTC/ViewModels/SettingWindowViewModel.cs
+++ b/JianGongYun/TRTC/ViewModels/SettingWindowViewModel.cs
@@ -34,15 +34,28 @@ namespace JianGongYun.TRTC.ViewModels
///
/// 直播主窗口viewmodel
///
- private LiveWindowViewModel LiveWindowViewModel
+ //private LiveWindowViewModel LiveWindowViewModel
+ //{
+ // get
+ // {
+ // return LiveClassroom.CurrentLiveWindow.DataContext == null ? null : LiveClassroom.CurrentLiveWindow.DataContext as LiveWindowViewModel;
+ // }
+ //}
+
+ #region 设备属性
+ private List LoadDeviceList(TRTCDeviceType deviceType)
{
- get
+ var devices = LiveClassroom.lTXDeviceManager.getDevicesList(deviceType);
+ List devicesList = new List();
+ var count = devices.getCount();
+ for (uint i = 0; i < count; i++)
{
- return LiveClassroom.CurrentLiveWindow.DataContext == null ? null : LiveClassroom.CurrentLiveWindow.DataContext as LiveWindowViewModel;
+ var temp = new ComboBoxEntity { Id = devices.getDevicePID(i), Text = devices.getDeviceName(i) };
+ devicesList.Add(temp);
}
+ return devicesList;
}
- #region 音频属性
///
/// 集合,实时获取
///
@@ -50,15 +63,7 @@ namespace JianGongYun.TRTC.ViewModels
{
get
{
- var mics = LiveClassroom.lTXDeviceManager.getDevicesList(ManageLiteAV.TRTCDeviceType.TXMediaDeviceTypeMic);
- List micList = new List();
- var count = mics.getCount();
- for (uint i = 0; i < count; i++)
- {
- var temp = new ComboBoxEntity { Id = mics.getDevicePID(i), Text = mics.getDeviceName(i) };
- micList.Add(temp);
- }
- return micList;
+ return LoadDeviceList(TRTCDeviceType.TXMediaDeviceTypeMic);
}
}
@@ -242,6 +247,63 @@ namespace JianGongYun.TRTC.ViewModels
}
+ ///
+ /// 集合,实时获取
+ ///
+ public List CameraList
+ {
+ get
+ {
+ return LoadDeviceList(TRTCDeviceType.TXMediaDeviceTypeCamera);
+ }
+ }
+
+ ///
+ /// 当前
+ ///
+ private string _CurrentCamera;
+ public string CurrentCamera
+ {
+ get
+ {
+ var tempList = this.CameraList;
+ if (tempList.Count == 0)
+ {
+ return null;
+ }
+ if (string.IsNullOrEmpty(_CurrentCamera) || !tempList.Any(a => a.Id == _CurrentCamera))//第一次取或者设备发生变动找不到上次的选择
+ {
+ var localCamera = storage.GetValue(INI_ROOT_KEY, INI_KEY_CHOOSE_CAMERA);//本地缓存
+ if (string.IsNullOrEmpty(localCamera))//本地没有就取第一个
+ {
+ _CurrentCamera = tempList.First().Id;
+ storage.SetValue(INI_ROOT_KEY, INI_KEY_CHOOSE_CAMERA, _CurrentCamera);//生成初始数据
+ }
+ else
+ {
+ _CurrentCamera = localCamera;
+ var temp = tempList.Where(a => a.Id == localCamera).FirstOrDefault();
+ if (temp == null)//找不到上次缓存的设备就取第一个
+ {
+ _CurrentCamera = tempList.First().Id;
+ storage.SetValue(INI_ROOT_KEY, INI_KEY_CHOOSE_CAMERA, _CurrentCamera);//生成初始数据
+ }
+ }
+ }
+ return _CurrentCamera;
+ }
+ set
+ {
+ _CurrentCamera = value;
+ storage.SetValue(INI_ROOT_KEY, INI_KEY_CHOOSE_CAMERA, value);//生成保存本地
+ LiveClassroom.lTXDeviceManager.setCurrentDevice(ManageLiteAV.TRTCDeviceType.TXMediaDeviceTypeCamera, _CurrentCamera);//设置麦克
+ if (PropertyChanged != null)
+ {
+ PropertyChanged(this, new PropertyChangedEventArgs("CurrentCamera"));
+ }
+ }
+ }
+
#endregion
#region 录屏属性
@@ -435,7 +497,7 @@ namespace JianGongYun.TRTC.ViewModels
///
/// 音频质量
///
- private TRTCAudioQuality _LiveAudioLevel = TRTCAudioQuality.TRTCAudioQualityDefault;
+ private TRTCAudioQuality _LiveAudioLevel = TRTCAudioQuality.TRTCAudioQualityMusic;
public TRTCAudioQuality LiveAudioLevel
{
get
@@ -455,70 +517,41 @@ namespace JianGongYun.TRTC.ViewModels
{
_LiveAudioLevel = value;
storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_AUDIO_LEVEL, value.ToString());//生成保存本地
- LiveClassroom.RestartAudio();//重启音频
+ //LiveClassroom.RestartAudio();//重启音频
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("LiveAudioLevel"));
}
}
}
+
///
/// 摄像画面帧率
///
- private uint _LiveMainFps = 24;
- public uint LiveMainFps
+ private uint _LiveFps = 24;
+ public uint LiveFps
{
get
{
- var liveMainFps = storage.GetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_FPS);//本地缓存
- if (string.IsNullOrEmpty(liveMainFps))
+ var liveFps = storage.GetValue(INI_ROOT_KEY, INI_KEY_LIVE_FPS);//本地缓存
+ if (string.IsNullOrEmpty(liveFps))
{
- storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_FPS, _LiveMainFps.ToString());//生成初始数据
+ storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_FPS, _LiveFps.ToString());//生成初始数据
}
else
{
- _LiveMainFps = uint.Parse(liveMainFps);
+ _LiveFps = uint.Parse(liveFps);
}
- return _LiveMainFps;
+ return _LiveFps;
}
set
{
- _LiveMainFps = value;
- storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_FPS, value.ToString());//生成保存本地
+ _LiveFps = value;
+ storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_FPS, value.ToString());//生成保存本地
LiveClassroom.ResetVideoMain();//重设参数
if (PropertyChanged != null)
{
- PropertyChanged(this, new PropertyChangedEventArgs("LiveMainFps"));
- }
- }
- }
- ///
- /// 摄像画面码率
- ///
- private uint _LiveMainBitrate = 1600;
- public uint LiveMainBitrate
- {
- get
- {
- var liveMainBitrate = storage.GetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_BITTRATE);//本地缓存
- if (string.IsNullOrEmpty(liveMainBitrate))
- {
- storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_BITTRATE, _LiveMainBitrate.ToString());//生成初始数据
- }
- else
- {
- _LiveMainBitrate = uint.Parse(liveMainBitrate);
- }
- return _LiveMainBitrate;
- }
- set
- {
- _LiveMainBitrate = value;
- storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_BITTRATE, value.ToString());//生成保存本地
- LiveClassroom.ResetVideoMain();//重设参数
- if (PropertyChanged != null)
- {
- PropertyChanged(this, new PropertyChangedEventArgs("LiveMainBitrate"));
+ PropertyChanged(this, new PropertyChangedEventArgs("LiveFps"));
}
}
}
@@ -545,73 +578,136 @@ namespace JianGongYun.TRTC.ViewModels
{
_LiveMainLevel = value;
storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_LEVEL, value.ToString());//生成保存本地
- LiveClassroom.ResetVideoMainQos();//重设参数
+ var pars = QosParams;
+ LiveClassroom.lTRTCCloud.setNetworkQosParam(ref pars);//重设参数
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("LiveMainLevel"));
}
}
}
- ///
- /// 屏幕分享帧率
- ///
- private uint _LiveSubFps = 24;
- public uint LiveSubFps
- {
- get
- {
- var liveSubFps = storage.GetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_FPS);//本地缓存
- if (string.IsNullOrEmpty(liveSubFps))
- {
- storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_FPS, _LiveSubFps.ToString());//生成初始数据
- }
- else
- {
- _LiveSubFps = uint.Parse(liveSubFps);
- }
- return _LiveSubFps;
- }
- set
- {
- _LiveSubFps = value;
- storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_FPS, value.ToString());//生成保存本地
- LiveClassroom.ResetVideoSub();//重新设置副画面参数
- if (PropertyChanged != null)
- {
- PropertyChanged(this, new PropertyChangedEventArgs("LiveSubFps"));
- }
- }
- }
- ///
- /// 屏幕分享码率
- ///
- private uint _LiveSubBitrate = 2000;
- public uint LiveSubBitrate
- {
- get
- {
- var liveSubBitrate = storage.GetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_BITTRATE);//本地缓存
- if (string.IsNullOrEmpty(liveSubBitrate))
- {
- storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_BITTRATE, _LiveSubBitrate.ToString());//生成初始数据
- }
- else
- {
- _LiveSubBitrate = uint.Parse(liveSubBitrate);
- }
- return _LiveSubBitrate;
- }
- set
- {
- _LiveSubBitrate = value;
- storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_BITTRATE, value.ToString());//生成保存本地
- LiveClassroom.ResetVideoSub();//重启音频
- if (PropertyChanged != null)
- {
- PropertyChanged(this, new PropertyChangedEventArgs("LiveSubBitrate"));
- }
- }
- }
+
+ /////
+ ///// 摄像画面帧率
+ /////
+ //private uint _LiveMainFps = 24;
+ //public uint LiveMainFps
+ //{
+ // get
+ // {
+ // var liveMainFps = storage.GetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_FPS);//本地缓存
+ // if (string.IsNullOrEmpty(liveMainFps))
+ // {
+ // storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_FPS, _LiveMainFps.ToString());//生成初始数据
+ // }
+ // else
+ // {
+ // _LiveMainFps = uint.Parse(liveMainFps);
+ // }
+ // return _LiveMainFps;
+ // }
+ // set
+ // {
+ // _LiveMainFps = value;
+ // storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_FPS, value.ToString());//生成保存本地
+ // LiveClassroom.ResetVideoMain();//重设参数
+ // if (PropertyChanged != null)
+ // {
+ // PropertyChanged(this, new PropertyChangedEventArgs("LiveMainFps"));
+ // }
+ // }
+ //}
+ /////
+ ///// 摄像画面码率
+ /////
+ //private uint _LiveMainBitrate = 1600;
+ //public uint LiveMainBitrate
+ //{
+ // get
+ // {
+ // var liveMainBitrate = storage.GetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_BITTRATE);//本地缓存
+ // if (string.IsNullOrEmpty(liveMainBitrate))
+ // {
+ // storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_BITTRATE, _LiveMainBitrate.ToString());//生成初始数据
+ // }
+ // else
+ // {
+ // _LiveMainBitrate = uint.Parse(liveMainBitrate);
+ // }
+ // return _LiveMainBitrate;
+ // }
+ // set
+ // {
+ // _LiveMainBitrate = value;
+ // storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_MAIN_BITTRATE, value.ToString());//生成保存本地
+ // LiveClassroom.ResetVideoMain();//重设参数
+ // if (PropertyChanged != null)
+ // {
+ // PropertyChanged(this, new PropertyChangedEventArgs("LiveMainBitrate"));
+ // }
+ // }
+ //}
+
+ /////
+ ///// 屏幕分享帧率
+ /////
+ //private uint _LiveSubFps = 24;
+ //public uint LiveSubFps
+ //{
+ // get
+ // {
+ // var liveSubFps = storage.GetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_FPS);//本地缓存
+ // if (string.IsNullOrEmpty(liveSubFps))
+ // {
+ // storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_FPS, _LiveSubFps.ToString());//生成初始数据
+ // }
+ // else
+ // {
+ // _LiveSubFps = uint.Parse(liveSubFps);
+ // }
+ // return _LiveSubFps;
+ // }
+ // set
+ // {
+ // _LiveSubFps = value;
+ // storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_FPS, value.ToString());//生成保存本地
+ // LiveClassroom.ResetVideoSub();//重新设置副画面参数
+ // if (PropertyChanged != null)
+ // {
+ // PropertyChanged(this, new PropertyChangedEventArgs("LiveSubFps"));
+ // }
+ // }
+ //}
+ /////
+ ///// 屏幕分享码率
+ /////
+ //private uint _LiveSubBitrate = 2000;
+ //public uint LiveSubBitrate
+ //{
+ // get
+ // {
+ // var liveSubBitrate = storage.GetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_BITTRATE);//本地缓存
+ // if (string.IsNullOrEmpty(liveSubBitrate))
+ // {
+ // storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_BITTRATE, _LiveSubBitrate.ToString());//生成初始数据
+ // }
+ // else
+ // {
+ // _LiveSubBitrate = uint.Parse(liveSubBitrate);
+ // }
+ // return _LiveSubBitrate;
+ // }
+ // set
+ // {
+ // _LiveSubBitrate = value;
+ // storage.SetValue(INI_ROOT_KEY, INI_KEY_LIVE_SUB_BITTRATE, value.ToString());//生成保存本地
+ // LiveClassroom.ResetVideoSub();//重启音频
+ // if (PropertyChanged != null)
+ // {
+ // PropertyChanged(this, new PropertyChangedEventArgs("LiveSubBitrate"));
+ // }
+ // }
+ //}
#endregion
#region 参数
@@ -688,8 +784,9 @@ namespace JianGongYun.TRTC.ViewModels
private string sPath = ".\\TRTCConfig.ini";
//根节点
private const string INI_ROOT_KEY = "TRTCLOCALCONFIG";
- //音频
+ //设备
private const string INI_KEY_CHOOSE_MIC = "INI_KEY_CHOOSE_MIC";//当前麦克风
+ private const string INI_KEY_CHOOSE_CAMERA = "INI_KEY_CHOOSE_CAMERA";//当前摄像头
private const string INI_KEY_AUDIO_MIC_VOLUME = "INI_KEY_AUDIO_MIC_VOLUME";//麦克风音量
private const string INI_KEY_AUDIO_SPEAKER_VOLUME = "INI_KEY_AUDIO_SOURCE";//播放音量
private const string INI_KEY_AUDIO_SOURCE = "INI_KEY_AUDIO_SOURCE";//音频来源
@@ -703,6 +800,7 @@ namespace JianGongYun.TRTC.ViewModels
private const string INI_KEY_SCREEN_RECORDING_DIR = "INI_KEY_SCREEN_RECORDING_DIR";//录制保存路径
//直播
private const string INI_KEY_LIVE_AUDIO_LEVEL = "INI_KEY_LIVE_AUDIO_LEVEL";//直播音频等级
+ private const string INI_KEY_LIVE_FPS = "INI_KEY_LIVE_FPS";//直播帧率
private const string INI_KEY_LIVE_MAIN_FPS = "INI_KEY_LIVE_MAIN_FPS";//直播主帧率
private const string INI_KEY_LIVE_MAIN_BITTRATE = "INI_KEY_LIVE_MAIN_BITTRATE";//直播主码率
private const string INI_KEY_LIVE_MAIN_LEVEL = "INI_KEY_LIVE_MAIN_LEVEL";//主画面级别
diff --git a/JianGongYun/TRTC/Windows/SettingWindow.xaml b/JianGongYun/TRTC/Windows/SettingWindow.xaml
index ad04db3..a5d2380 100644
--- a/JianGongYun/TRTC/Windows/SettingWindow.xaml
+++ b/JianGongYun/TRTC/Windows/SettingWindow.xaml
@@ -11,7 +11,7 @@
- 音频设置
+ 设备设置
录屏设置
@@ -26,8 +26,12 @@
IndicatorSelectedIndex="0" IndicatorPlacement="Left">
-
+
+
+ 摄像头
+
+
麦克风
@@ -52,7 +56,7 @@
-
+
录制倒计时
@@ -129,6 +133,23 @@
+ 帧率(fps)
+
+
+
+
+
+
+
+
+
+ 网络调控策略
+
+
+
+
+
+