Beispiel #1
0
        public void HandleGet(System.Net.HttpListenerRequest request, System.Net.HttpListenerResponse response)
        {
            string queryString = request.Url.Query;
            var queryParts = Server.ParseQueryString(queryString);

            string jobID = queryParts.GetFirstValue("jobid");

            if (string.IsNullOrEmpty(jobID))
            {
                response.WriteResponse(400, "Missing parameter jobID");
                return;
            }

            TranscodeJob job;
            if (!jobs.TryGetValue(jobID, out job))
            {
                response.WriteResponse(404, "Job Not Found");
                return;
            }

            // Build m3u8 file data
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("#EXTM3U");
            foreach (var task in job.Results.OrderBy(x => x.BitRate))
            {
                if (task.HasSegments)
                {
                    sb.AppendLine("#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=" + (task.BitRate));
                    sb.AppendLine(task.Playlist);
                }

            }
            response.WriteResponse(200,sb.ToString());
        }
Beispiel #2
0
        public void HandleGet(System.Net.HttpListenerRequest request, System.Net.HttpListenerResponse response)
        {
            try
            {
                string path = request.Url.AbsolutePath;
                if (path.Length < 9)
                {
                    response.StatusCode = 404;
                    response.WriteResponse("Video not found");
                    return;
                }
                string file = path.Substring(8);
                if (string.IsNullOrEmpty(file))
                {
                    response.StatusCode = 404;
                    response.WriteResponse("Video not found");
                    return;
                }
                var match = Regex.Match(file, "^([a-zA-Z0-9_-])+\\.[a-zA-Z0-9]+$");
                if (!match.Success)
                {
                    response.StatusCode = 404;
                    response.WriteResponse("Video not found");
                    return;
                }

                var jobID = match.Groups[1].Value;
                string filePath = FFRest.config["workingdir"] + Path.DirectorySeparatorChar + jobID + Path.DirectorySeparatorChar + file;
                if (!File.Exists(filePath))
                {
                    response.StatusCode = 404;
                    response.WriteResponse("Video not found");
                    return;
                }
                response.StatusCode = 200;

                FileInfo fi = new FileInfo(filePath);
                response.ContentType = Utility.GetMime(fi.Extension);
                response.ContentLength64 = fi.Length;
                using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    Utility.CopyStream(fs, response.OutputStream);
                }
                response.OutputStream.Flush();
                response.OutputStream.Close();
            }
            catch (Exception ex)
            {
                log.Error("Failed to process video request", ex);
            }
        }
Beispiel #3
0
        public void HandleGet(System.Net.HttpListenerRequest request, System.Net.HttpListenerResponse response)
        {
            string queryString = request.Url.Query;
            var queryParts = Server.ParseQueryString(queryString);

            string type = queryParts.GetFirstValue("type");

            if (string.IsNullOrEmpty(type))
            {
                response.WriteResponse(400, "Missing parameter type");
                return;
            }
            string data = "";
            int exitCode;
            switch (type.ToLower())
            {
                case "formats":
                    data = FFmpeg.Exec("-formats", out exitCode);
                    break;
                case "codecs":
                    data = FFmpeg.Exec("-codecs", out exitCode);
                    break;
                case "bsfs":
                    data = FFmpeg.Exec("-bsfs", out exitCode);
                    break;
                case "protocols":
                    data = FFmpeg.Exec("-protocols", out exitCode);
                    break;
                case "pix_fmts":
                    data = FFmpeg.Exec("-pix_fmts", out exitCode);
                    break;
                case "help":
                    data = FFmpeg.Exec("-help", out exitCode);
                    break;
            }

            response.WriteResponse(200, data);
        }