Пример #1
0
        public bool Setup()
        {
            // Setup the named pipes
            string pipeName = Guid.NewGuid().ToString();
            pipeServer = new NamedPipe(pipeName);
            pipeClient = new NamedPipe(pipeName);
            pipeServer.Start(false);
            pipeClient.Start(true);

            return true;
        }
Пример #2
0
        public bool Setup()
        {
            // setup output named pipe
            DataOutputStream = new NamedPipe();
            string output = ((NamedPipe)DataOutputStream).Url;
            Log.Info("VLCManagedEncoder: starting output named pipe {0}", output);
            ((NamedPipe)DataOutputStream).Start(false);

            // prepare sout, needs some trickery for vlc
            string realSout = sout.Replace("#OUT#", @"\" + output);

            // debug
            Log.Debug("VLCManagedEncoder: sout {0}", realSout);
            Log.Debug("VLCManagedEncoder: arguments {0}", String.Join("|", arguments));

            // start vlc
            transcoder = new VLCTranscoder();
            transcoder.SetArguments(arguments);
            transcoder.SetMediaName(Guid.NewGuid().ToString());
            transcoder.SetSout(realSout);

            // setup input
            if (inputMethod == InputMethod.NamedPipe)
            {
                transcoderInputStream = new NamedPipe();
                Log.Info("VLCManagedEncoder: starting input named pipe {0}", transcoderInputStream);
                ((NamedPipe)transcoderInputStream).Start(false);
                inputPath = "stream://" + transcoderInputStream.Url; // use special syntax for VLC to pick up named pipe
            }
            Log.Debug("VLCManagedEncoder: input {0}", inputPath);
            transcoder.SetInput(inputPath);

            // start transcoding
            transcoder.StartTranscoding();
            // doesn't work
            //transcoder.Seek(startPos * 1.0 / context.MediaInfo.Duration * 1000);

            context.TranscodingInfo.Supported = true;
            return true;
        }
Пример #3
0
        public bool Setup()
        {
            // sets up streams
            string input = "";
            string output = "";
            bool needsStdin = false;
            bool needsStdout = false;

            // input
            if (inputMethod == TransportMethod.NamedPipe)
            {
                transcoderInputStream = new NamedPipe();
                input = ((NamedPipe)transcoderInputStream).Url;
                StreamLog.Info(context.Identifier, "Encoding: starting input named pipe {0}", input);
                ((NamedPipe)transcoderInputStream).Start(false);
                doInputCopy = true;
            }
            else if (inputMethod == TransportMethod.StandardIn)
            {
                needsStdin = true;
                doInputCopy = true;
            }

            // output stream
            if (outputMethod == TransportMethod.NamedPipe)
            {
                DataOutputStream = new NamedPipe();
                output = ((NamedPipe)DataOutputStream).Url;
                StreamLog.Info(context.Identifier, "Encoding: starting output named pipe {0}", output);
                ((NamedPipe)DataOutputStream).Start(false);
            }
            else if (outputMethod == TransportMethod.StandardOut)
            {
                needsStdout = true;
            }

            // arguments substitution
            arguments = arguments.Replace("#IN#", input).Replace("#OUT#", output);

            // start transcoder
            if (!SpawnTranscoder(needsStdin, needsStdout))
                return false;

            // finish stream setup
            if (inputMethod == TransportMethod.StandardIn)
                transcoderInputStream = transcoderApplication.StandardInput.BaseStream;
            if (outputMethod == TransportMethod.StandardOut)
                DataOutputStream = transcoderApplication.StandardOutput.BaseStream;

            // setup log stream
            if (!DebugOutput && logStream == LogStream.StandardOut && IsLogStreamConnected && outputMethod != TransportMethod.StandardOut)
            {
                LogOutputStream = transcoderApplication.StandardOutput.BaseStream;
            }
            else if (!DebugOutput && logStream == LogStream.StandardError && IsLogStreamConnected)
            {
                LogOutputStream = transcoderApplication.StandardError.BaseStream;
            }
            else
            {
                LogOutputStream = new MemoryStream(4096);
            }

            return true;
        }