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; }
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; }
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; }