public WTVStreamingVideoResult(DSStreamResultCodes resultCode, string resultString)
     : this()
 {
     ResultCode = resultCode;
     ResultString = resultString;
     StreamerID = "000000";
     Port = "9081";
 }
示例#2
0
 public WTVStreamingVideoResult(DSStreamResultCodes resultCode, string resultString)
     : this()
 {
     ResultCode   = resultCode;
     ResultString = resultString;
     StreamerID   = "000000";
     Port         = "9081";
 }
示例#3
0
        public DSStreamResultCodes TranscodeFileAsync(string fileName, WTVProfileQuality quality)
        {
            FileName = fileName;
            Quality  = quality;

            WTVStreamingVideoRequest strq = new WTVStreamingVideoRequest(FileName, quality, TimeSpan.FromSeconds(0));

            DSStreamResultCodes result = InitWithFile(strq);

            if (result != DSStreamResultCodes.OK)
            {
                return(result);  // ...and stop
            }
            Thread th = new Thread(new ThreadStart(DoTranscodeFileAsync));

            th.Name = "TranscodeFile1";
            th.Start();
            return(DSStreamResultCodes.OK);
        }
 public WTVStreamingVideoResult(DSStreamResultCodes resultCode)
     : this(resultCode, "")
 {
 }
示例#5
0
        // Main public method - Begin Streaming
        public WTVStreamingVideoResult StreamWithFileAndPort(WTVStreamingVideoRequest svrq, int streamPort, bool removeReferenceClock, bool autodetectPal)
        {
            WTVStreamingVideoResult result = new WTVStreamingVideoResult();

            // Attempting this port
            result.Port = streamPort.ToString();

            // Store values locally for use by other class methods
            StreamingRequest     = svrq;
            StreamPort           = streamPort;
            RemoveReferenceClock = removeReferenceClock;

            // Build the graph using the base class
            DSStreamResultCodes resultCode = base.InitWithFile(StreamingRequest);

            if (resultCode != DSStreamResultCodes.OK)
            {
                return(new WTVStreamingVideoResult(resultCode));
            }

            // Add streaming
            try
            {
                AddStreamSinkToCurrentOutputFilter(StreamPort);
            }
            catch (Exception ex)
            {
                result.ResultCode   = DSStreamResultCodes.ErrorAlreadyStreaming;
                result.ResultString = ex.Message;
                return(result);
            }

            // Remove clock?
            try
            {
                if (RemoveReferenceClock)
                {
                    RemoveRefClockFromGraph();
                }
            }
            catch (Exception ex)
            {
                result.ResultCode   = DSStreamResultCodes.Error;
                result.ResultString = "Error removing reference clock: " + ex.Message;
                return(result);
            }

            // Seek?
            try
            {
                if (StreamingRequest.StartAt.TotalSeconds > 0)
                {
                    SeekGraphToTime(StreamingRequest.StartAt);
                }
                else
                {
                    SeekGraphToTime(TimeSpan.FromSeconds(5)); // EXPERIMENTAL
                }
            }
            catch
            {
                // Ignore non-seeking errors for now
            }


            // Begin streaming the graph in a separate thread
            graphStartedEvent.Reset();
            thStreamThread = new Thread(new ThreadStart(DoStreamWithFileAndPort));
            thStreamThread.SetApartmentState(ApartmentState.MTA);  // NetworkSink fails in STA threads - avoid!
            thStreamThread.Name = "StreamFile1";
            thStreamThread.Start();

            // Wait for graph to attempt to start so we can report back
            bool gotSignal = (graphStartedEvent.WaitOne(6000));

            if (gotSignal)
            {
                if (graphIsRunning)
                {
                    result.ResultCode = DSStreamResultCodes.OK;
                    return(result);
                }
                else
                {
                    result.ResultCode   = DSStreamResultCodes.Error;
                    result.ResultString = "DSStreamer: Graph could not run - see server log for more information.";
                    return(result);
                }
            }
            else
            {
                result.ResultCode   = DSStreamResultCodes.Error;
                result.ResultString = "DSStreamer: Timed out waiting for graph to run - there may be more information in the server log.";
                return(result);
            }
        }
示例#6
0
 public WTVStreamingVideoResult(DSStreamResultCodes resultCode)
     : this(resultCode, "")
 {
 }