Exemplo n.º 1
0
        public static void Run()
        {
            /* Create BitcodinApi */
            const string apiKey = "YOUR_API_KEY";
            var          bitApi = new BitcodinApi(apiKey);

            /* Create URL Input */
            var s3InputConfig = new S3InputConfig
            {
                AccessKey = "YOUR_ACCESSKEY",
                SecretKey = "YOUR_SECRETKEY",
                Bucket    = "Bucket",
                Region    = "Region",
                ObjectKey = "path/to/file.mkv"
            };

            Input input;

            try
            {
                input = bitApi.CreateInput(s3InputConfig);

                Console.WriteLine("Created Input: S3 " + input.Filename);
            }
            catch (BitcodinApiException e)
            {
                Console.WriteLine("Could not create S3 input: " + e);
                return;
            }

            /* Create EncodingProfile */
            var videoConfig1 = new VideoStreamConfig
            {
                Bitrate = 4800000,
                Width   = 1920,
                Height  = 1080,
                Profile = Profile.Main,
                Preset  = Preset.Premium
            };

            var videoConfig2 = new VideoStreamConfig
            {
                Bitrate = 2400000,
                Width   = 1280,
                Height  = 720,
                Profile = Profile.Main,
                Preset  = Preset.Premium
            };

            var videoConfig3 = new VideoStreamConfig
            {
                Bitrate = 1200000,
                Width   = 854,
                Height  = 480,
                Profile = Profile.Main,
                Preset  = Preset.Premium
            };

            var encodingProfileConfig = new EncodingProfileConfig {
                Name = "S3TestProfile"
            };

            encodingProfileConfig.VideoStreamConfigs.Add(videoConfig1);
            encodingProfileConfig.VideoStreamConfigs.Add(videoConfig2);
            encodingProfileConfig.VideoStreamConfigs.Add(videoConfig3);

            var audioStreamConfig = new AudioStreamConfig
            {
                DefaultStreamId = 0,
                Bitrate         = 192000
            };

            encodingProfileConfig.AudioStreamConfigs.Add(audioStreamConfig);

            EncodingProfile encodingProfile;

            try
            {
                encodingProfile = bitApi.CreateEncodingProfile(encodingProfileConfig);
                Console.WriteLine("Could  create profile: " + encodingProfile.Name);
            }
            catch (BitcodinApiException e)
            {
                Console.WriteLine("Could not create encoding profile: " + e);
                return;
            }

            /* Create Job */
            Console.WriteLine("Create Job");
            var jobConfig = new JobConfig
            {
                EncodingProfileId = encodingProfile.EncodingProfileId,
                InputId           = input.InputId
            };

            jobConfig.ManifestTypes.Add(ManifestType.MpegDashMpd);
            jobConfig.ManifestTypes.Add(ManifestType.HlsM3U8);

            Job job;

            try
            {
                job = bitApi.CreateJob(jobConfig);
            }
            catch (BitcodinApiException e)
            {
                Console.WriteLine("Could not create job: " + e);
                return;
            }

            JobDetails jobDetails;

            do
            {
                try
                {
                    jobDetails = bitApi.GetJobDetails(job.JobId);
                    Console.WriteLine("Status: " + jobDetails.JobStatus +
                                      " - Enqueued Duration: " + jobDetails.EnqueueDuration + "s" +
                                      " - Realtime Factor: " + jobDetails.RealtimeFactor +
                                      " - Encoded Duration: " + jobDetails.EncodedDuration + "s" +
                                      " - Output: " + jobDetails.BytesWritten / (double)1024 / 1024 + "MB" +
                                      " - Duration: " + jobDetails.Duration +
                                      " - FrameRate: " + jobDetails.FrameRate +
                                      " - JobId: " + jobDetails.JobId +
                                      " - SegmentsSplitted: " + jobDetails.SegmentsSplitted);
                }
                catch (BitcodinApiException)
                {
                    Console.WriteLine("Could not get any job details");
                    return;
                }


                if (jobDetails.JobStatus.ToUpper().Equals(Enum.GetName(typeof(JobStatus), 4)))
                {
                    Console.WriteLine("Error during transcoding");
                    return;
                }

                Thread.Sleep(2000);
            } while (!jobDetails.JobStatus.ToUpper().Equals(Enum.GetName(typeof(JobStatus), 3)));

            Console.WriteLine("Job with ID " + job.JobId + " finished successfully!");
        }
Exemplo n.º 2
0
 public Input.Input CreateInput(S3InputConfig config)
 {
     return(Post <Input.Input>("input/create", config));
 }