#include "AVPlayer2/mainwindowa.h" #include "mainwindow.h" #include "thememanager.h" #include "themesettingswidget.h" #include #include #include #include #include #include #include #include #include #include #include #include QFile g_logFile; QTextStream* g_logStream = nullptr; QMutex g_logMutex; void myMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { QMutexLocker locker(&g_logMutex); if (!g_logStream) return; QString typeStr; switch (type) { case QtDebugMsg: typeStr = "DEBUG"; break; case QtWarningMsg: typeStr = "WARN "; break; case QtCriticalMsg: typeStr = "ERROR"; break; case QtFatalMsg: typeStr = "FATAL"; break; case QtInfoMsg: break; } QString logMsg = QString("%1 [%2] %3 (%4:%5)\n") .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz")) .arg(typeStr) .arg(msg) .arg(QString(context.file ? context.file : "")) .arg(context.line); (*g_logStream) << logMsg; g_logStream->flush(); if (type == QtFatalMsg) abort(); } namespace avrecorder::video { void InitWinRTCapture(); } int main(int argc, char* argv[]) { QLoggingCategory::setFilterRules(QStringLiteral("player.controller.ReadThread=false\n" "player.controller.AudioPlayThread=false\n")); // QLoggingCategory::setFilterRules("*.debug=false\n" // "*.info=false\n" // "*.warning=false\n" // "*.critical=false\n" // "player.controller.*.debug=true\n" // "player.controller.*.info=true\n"); // 打开日志文件(覆盖模式) g_logFile.setFileName("log.txt"); g_logFile.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate); g_logStream = new QTextStream(&g_logFile); // 安装日志处理器 //qInstallMessageHandler(myMessageHandler); // std::freopen(nullptr, "w", stdout); setvbuf(stdout, nullptr, _IONBF, 0); #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) QGuiApplication::setHighDpiScaleFactorRoundingPolicy( Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); #endif #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); #endif QCoreApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); QApplication a(argc, argv); ThemeManager::instance().setThemeMode(ThemeManager::Light); // 注册Room 相关的类型 方便 序列化 void initRoomType(); initRoomType(); // 初始化wgc avrecorder::video::InitWinRTCapture(); /* docker run -itd --name zlmediakit --restart=always -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp -v /data/zlmediakit/media/bin:/opt/media/bin -v /data/zlmediakit/media/conf:/opt/media/conf zlmediakit/zlmediakit:master */ // MainWindow w; // w.show(); // ThemeSettingsWidget ThemeSettingsWidget; // ThemeSettingsWidget.show(); // PlayerWindow w; // w.resize(960, 540); // w.show(); MainWindowA aa; aa.show(); // // 这里填你的流地址 // // w.startPlay("http://vd3.bdstatic.com/mda-jennyc5ci1ugrxzi/mda-jennyc5ci1ugrxzi.mp4"); // w.open("C:/Users/zhuizhu/Videos/1.mp4"); // // w.startPlay("rtmp://192.168.3.76:1935/stream/V1/stream"); int ret = a.exec(); delete g_logStream; g_logFile.close(); return ret; }