//To Set User's count watching Broadcast. private void tmrViewerCount_Tick(object sender, EventArgs e) { try { tsddlUsrDetails.DropDownItems.Clear(); broadCastStats = DesktopEncoder.Statistics; int ViewersCount = ((IWMEncNetConnectionStats2)broadCastStats.NetConnectionStats).ClientCount; WMENC_BROADCAST_PROTOCOL SelProtocol = WMENC_BROADCAST_PROTOCOL.WMENC_PROTOCOL_HTTP; switch (ViewersCount) { case 0: tsUsersCount.Text = "No Users Connected."; break; case 1: tsUsersCount.Text = "1 User Connected."; break; default: tsUsersCount.Text = ViewersCount.ToString() + "Connected."; break; } for (int i = 0; i < ViewersCount; i++) { tsddlUsrDetails.DropDownItems.Add(((IWMEncNetConnectionStats2)broadCastStats.NetConnectionStats).get_ClientInfo(i, out SelProtocol)); } } catch {} }
public static int GetSecondsTilDone(WMEncoder encoder, DateTime startTime) { int secsleft = -1; IWMEncStatistics stats = encoder.Statistics; IWMEncSourceGroup grp = encoder.SourceGroupCollection.Item("SG_1"); IWMEncAudioSource audsrc = (IWMEncAudioSource)grp.get_Source(WMENC_SOURCE_TYPE.WMENC_AUDIO, 0); double durationSecs = (double)GetAudioSourceDuration(audsrc) / 1000F; double encodingTimeSecs = (double)(stats.EncodingTime * 10); double percentDone = encodingTimeSecs / durationSecs; TimeSpan ts = DateTime.UtcNow.Subtract(startTime); double estimatedTime = (ts.TotalSeconds / percentDone); secsleft = (int)(estimatedTime - ts.TotalSeconds); if (secsleft < 0) { secsleft = -1; } Logger.WriteLogMessage("Duration: " + durationSecs.ToString("G4") + " seconds, encoding source elapsed time: " + encodingTimeSecs.ToString("G4") + " seconds."); Logger.WriteLogMessage("Percent done: " + String.Format("{0:P}", percentDone) + ", encoding time left: " + secsleft + " seconds, estimated encoding time: " + estimatedTime.ToString("G4") + " seconds, elapsed time: " + ts.TotalSeconds.ToString("G4") + " seconds."); return(secsleft); }
private void sReportPercentComplete(WMEncoder glbEncoder) { if (glbEncoder.RunState == WMENC_ENCODER_STATE.WMENC_ENCODER_RUNNING) { IWMEncStatistics Stats = glbEncoder.Statistics; IWMEncFileArchiveStats FileStats = (IWMEncFileArchiveStats)Stats.FileArchiveStats; int intCurrentFileDuration; int intPercentComplete; intCurrentFileDuration = System.Convert.ToInt32(FileStats.FileDuration * 10); try { intPercentComplete = 100 * intCurrentFileDuration / glbintSourceDuration; _backgroundWorker.ReportProgress(intPercentComplete, intPercentComplete.ToString() + "% Complete"); } catch (Exception ex) { string strError = ex.ToString(); sDisplayErrMessage(strError); } finally { FileStats = null; Stats = null; } } }
//To Set User's count watching Broadcast. private void tmrViewerCount_Tick(object sender, EventArgs e) { try { tsddlUsrDetails.DropDownItems.Clear(); broadCastStats = DesktopEncoder.Statistics; int ViewersCount = ((IWMEncNetConnectionStats2)broadCastStats.NetConnectionStats).ClientCount; WMENC_BROADCAST_PROTOCOL SelProtocol = WMENC_BROADCAST_PROTOCOL.WMENC_PROTOCOL_HTTP; switch (ViewersCount) { case 0: tsUsersCount.Text = "No Users Connected."; break; case 1: tsUsersCount.Text = "1 User Connected."; break; default: tsUsersCount.Text = ViewersCount.ToString() + "Connected."; break; } for (int i = 0; i < ViewersCount; i++) { tsddlUsrDetails.DropDownItems.Add(((IWMEncNetConnectionStats2)broadCastStats.NetConnectionStats).get_ClientInfo(i, out SelProtocol)); } } catch{} }