private void rtmpRecord(string websocketMsg, string quality) { string url = null; if (websocketMsg != null) { var _msg = util.getRegGroup(websocketMsg, "\"currentStream\":{(.+?)}"); if (_msg == null) { util.debugWriteLine("rtmpRecord _msg null"); return; } url = util.getRegGroup(_msg, "\"uri\":\"(.+?)\"") + "/" + util.getRegGroup(_msg, "\"name\":\"(.+?)\""); util.debugWriteLine("rtmp url " + url); } rfu.subGotNumTaskInfo = new List <numTaskInfo>(); if (rr != null) { rr.resetRtmpUrl(url); } else { rr = new RtmpRecorder(lvid, container, rm, rfu, !isRtmp, recFolderFile, this, openTime); Task.Run(() => { rr.record(url, quality); rm.hlsUrl = "end"; if (rr.isEndProgram) { isEndProgram = true; //if (endTime == DateTime.MinValue) // endTime = DateTime.Now; } isRetry = false; }); } }
private void process() { //util.debugWriteLine("testtest" + util.getMainSubStr(isSub, true)); /* * try {var a = new WebSocket4Net.MessageReceivedEventArgs(null, null).Data;} * catch (Exception e) { * System.Windows.Forms.MessageBox.Show("websocket", "aa"); * } */ //util.debugWriteLine(System.Diagnostics.FileVersionInfo.GetVersionInfo("websocket4net.dll"). if (isRtmp || (rm.cfg.get("IsHokan") == "true" && !rfu.isRtmpMain && !rm.isPlayOnlyMode && !rfu.isSubAccountHokan && rm.cfg.get("EngineMode") == "0" && !isTimeShift)) { rfu.subGotNumTaskInfo = new List <numTaskInfo>(); rr = new RtmpRecorder(lvid, container, rm, rfu, !isRtmp, recFolderFile, this, releaseTime); Task.Run(() => { rr.record(null, null); rm.hlsUrl = "end"; if (rr.isEndProgram) { isEndProgram = true; } isRetry = false; }); } Task.Run(() => { connectKeeper(); }); if (!isRtmp) { Task.Run(() => { record(); }); } }
public bool start(bool isRtmpOnlyPage) { addDebugBuf("ws rec start"); isXmlComment = false; tsWriterTask = Task.Run(() => { startDebugWriter(); }); // connect(webSocketInfo[0]); if (isRtmpOnlyPage) { Task.Run(() => { rr = new RtmpRecorder(lvid, container, rm, rfu, !isRtmp, recFolderFile, this, openTime); Task.Run(() => { rr.record(null, null); rm.hlsUrl = "end"; if (rr.isEndProgram) { isEndProgram = true; } isRetry = false; }); }); } else { connect(); broadcastId = util.getRegGroup(webSocketInfo[0], "watch/.*?(\\d+?)(\\?|/)"); } /* * if (isRtmp || * (rm.cfg.get("IsHokan") == "true" && * !rfu.isRtmpMain && !rm.isPlayOnlyMode && * !rfu.isSubAccountHokan && engineMode == "0" && !isTimeShift)) { * rfu.subGotNumTaskInfo = new List<numTaskInfo>(); * rr = new RtmpRecorder(lvid, container, rm, rfu, !isRtmp, recFolderFile, this, openTime); * Task.Run(() => { * rr.record(); * rm.hlsUrl = "end"; * if (rr.isEndProgram) isEndProgram = true; * isRetry = false; * }); * /* * Task.Run(() => { * xcg = new XmlCommentGetter(lvid, container, rm, rfu, recFolderFile[1], this, isTimeShift, isRtmp, openTime, _openTime, serverTime); * xcg.get(); * }); * while (rm.rfu == rfu && isRetry) Thread.Sleep(1000); * * * } */ /* * if (!isRtmpOnlyPage) { * connect(); * addDebugBuf("rm.rfu dds1 " + rm.rfu); * * broadcastId = util.getRegGroup(webSocketInfo[0], "watch/.*?(\\d+?)(\\?|/)"); * } */ // userId = util.getRegGroup(webSocketInfo[0], "audience_token=.+?_(.+?)_"); addDebugBuf("rm.rfu dds6 " + rm.rfu); addDebugBuf("ws main " + ws + " a " + (ws == null)); // while (ws.State != WebSocket4Net.WebSocketState.Closed) { // while (rm.rfu == rfu && ws != null && isRetry && // (rec == null || !rec.isStopRead())) { while (rm.rfu == rfu && isRetry) { /* * if (isTimeShift && rm.rfu == rfu && * isGetComment == "true" && engineMode == "3" && * tscg != null && tscg.isEnd) { * break; * } */ // if (rec != null) // addDebugBuf("isStopread " + rec.isStopRead()); if (!isRtmp && ws.State == WebSocket4Net.WebSocketState.Closed) { addDebugBuf("no connect loop ws close"); // connect(); } // if (DateTime.Now > DateTime.Parse("2018/10/19 4:43")) resetWebsocketInfo(); //test // GC.Collect(); // GC.WaitForPendingFinalizers(); System.Threading.Thread.Sleep(1000); } // while (isTimeShift && rm.rfu == rfu) // System.Threading.Thread.Sleep(300); //util.debugWriteLine("loop end rm.rfu " + rm.rfu.GetHashCode() + " " + rfu.GetHashCode() + " isretry " + isRetry); isRetry = false; if (rr != null) { rr.retryMode = (isEndProgram) ? 2 : 1; } // if (rm.rfu != rfu && tscg != null) tscg.setIsRetry(false); // if (isTimeShift && rm.rfu == rfu && tscg != null) { if (rm.rfu != rfu) { //if (rr != null) rr.isRetry = false; stopRecording(ws, wsc); // ws.Close(); // wsc.Close(); if (rec != null) { rec.waitForEnd(); } } if (!isRetry) { //if (rr != null) rr.isRetry = false; stopRecording(ws, wsc); if (rec != null) { rec.waitForEnd(); } } addDebugBuf("closed saikai"); return(isNoPermission); }