networkconfig.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #include "networkconfig.h"
  2. #include <QDebug>
  3. #include <QCoreApplication>
  4. #include <QStandardPaths>
  5. NetworkConfig& NetworkConfig::instance()
  6. {
  7. static NetworkConfig instance;
  8. static bool initialized = false;
  9. if (!initialized) {
  10. instance.initDefaults();
  11. initialized = true;
  12. }
  13. return instance;
  14. }
  15. void NetworkConfig::resetToDefaults()
  16. {
  17. initDefaults();
  18. }
  19. void NetworkConfig::setServerConfig(const ServerConfig& config)
  20. {
  21. m_serverConfig = config;
  22. }
  23. void NetworkConfig::setStreamConfig(const StreamConfig& config)
  24. {
  25. m_streamConfig = config;
  26. }
  27. void NetworkConfig::setRtmpConfig(const StreamConfig& config)
  28. {
  29. m_streamConfig = config;
  30. }
  31. void NetworkConfig::setRecordConfig(const RecordConfig& config)
  32. {
  33. m_recordConfig = config;
  34. }
  35. QString NetworkConfig::getRtmpUrl(const QString& streamName) const
  36. {
  37. if (streamName.isEmpty()) {
  38. return m_streamConfig.getRtmpUrl();
  39. }
  40. return QString("rtmp://%1:%2/%3/%4")
  41. .arg(m_streamConfig.host)
  42. .arg(m_streamConfig.port)
  43. .arg(m_streamConfig.app)
  44. .arg(streamName);
  45. }
  46. QString NetworkConfig::getRtmpStreamUrl() const
  47. {
  48. return m_streamConfig.getRtmpUrl();
  49. }
  50. bool NetworkConfig::isValid() const
  51. {
  52. // 检查服务器配置
  53. if (m_serverConfig.host.isEmpty() || m_serverConfig.port <= 0 || m_serverConfig.port > 65535) {
  54. return false;
  55. }
  56. // 检查RTMP配置
  57. if (m_streamConfig.host.isEmpty() || m_streamConfig.port <= 0 || m_streamConfig.port > 65535) {
  58. return false;
  59. }
  60. if (m_streamConfig.app.isEmpty() || m_streamConfig.streamKey.isEmpty()) {
  61. return false;
  62. }
  63. // 检查录制配置
  64. if (m_recordConfig.videoBitRate <= 0 || m_recordConfig.videoFrameRate <= 0 ||
  65. m_recordConfig.videoQuality < 0 || m_recordConfig.videoQuality > 100 ||
  66. m_recordConfig.audioBitRate <= 0) {
  67. return false;
  68. }
  69. return true;
  70. }
  71. void NetworkConfig::initDefaults()
  72. {
  73. // 106.55.186.74
  74. // 服务器配置默认值
  75. m_serverConfig.host = "127.0.0.1"; // 使用项目中的生产服务器
  76. m_serverConfig.port = 8200;
  77. m_serverConfig.useHttps = false;
  78. m_serverConfig.apiPath = "/api";
  79. // 流媒体配置 (默认使用RTMP协议)
  80. m_streamConfig.protocol = StreamProtocol::RTSP;
  81. m_streamConfig.host = "127.0.0.1"; // 使用项目中的生产服务器
  82. m_streamConfig.port = 554;
  83. m_streamConfig.app = "stream";
  84. m_streamConfig.streamKey = "V1";
  85. // 录制配置默认值
  86. m_recordConfig.outputDir = QStandardPaths::writableLocation(QStandardPaths::MoviesLocation);
  87. if (m_recordConfig.outputDir.isEmpty()) {
  88. m_recordConfig.outputDir = QCoreApplication::applicationDirPath() + "/recordings";
  89. }
  90. m_recordConfig.videoBitRate = 8000000; // 8Mbps
  91. m_recordConfig.videoFrameRate = 30;
  92. m_recordConfig.videoQuality = 100;
  93. m_recordConfig.audioBitRate = 128000; // 128kbps
  94. }