This repository has been archived by the owner on Jul 8, 2019. It is now read-only.
/
CreateJobWithPlayreadyWidevineCombinedDRM.java
127 lines (104 loc) · 4.94 KB
/
CreateJobWithPlayreadyWidevineCombinedDRM.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package com.bitmovin.bitcodin.examples;
import com.bitmovin.bitcodin.api.BitcodinApi;
import com.bitmovin.bitcodin.api.exception.BitcodinApiException;
import com.bitmovin.bitcodin.api.input.HTTPInputConfig;
import com.bitmovin.bitcodin.api.input.Input;
import com.bitmovin.bitcodin.api.job.*;
import com.bitmovin.bitcodin.api.media.*;
/**
* Created by Dominic Miglar <dominic.miglar@bitmovin.net> on 8/26/15.
*/
public class CreateJobWithPlayreadyWidevineCombinedDRM {
public static void main(String[] args) throws InterruptedException {
/* Create BitcodinApi */
String apiKey = "YOUR_API_KEY";
BitcodinApi bitApi = new BitcodinApi(apiKey);
/* Create URL Input */
HTTPInputConfig httpInputConfig = new HTTPInputConfig();
httpInputConfig.url = "http://bitbucketireland.s3.amazonaws.com/h264_720p_mp_3.1_3mbps_aac_shrinkage.mp4";
Input input;
try {
input = bitApi.createInput(httpInputConfig);
} catch (BitcodinApiException e) {
System.out.println("Could not create input: " + e.getMessage());
return;
}
System.out.println("Created Input: " + input.filename);
/* Create EncodingProfile */
VideoStreamConfig videoConfig1 = new VideoStreamConfig();
videoConfig1.bitrate = 4800000;
videoConfig1.width = 1920;
videoConfig1.height = 1080;
videoConfig1.profile = Profile.MAIN;
videoConfig1.preset = Preset.PREMIUM;
VideoStreamConfig videoConfig2 = new VideoStreamConfig();
videoConfig2.bitrate = 2400000;
videoConfig2.width = 1280;
videoConfig2.height = 720;
videoConfig2.profile = Profile.MAIN;
videoConfig2.preset = Preset.PREMIUM;
VideoStreamConfig videoConfig3 = new VideoStreamConfig();
videoConfig3.bitrate = 1200000;
videoConfig3.width = 854;
videoConfig3.height = 480;
videoConfig3.profile = Profile.MAIN;
videoConfig3.preset = Preset.PREMIUM;
EncodingProfileConfig encodingProfileConfig = new EncodingProfileConfig();
encodingProfileConfig.name = "JavaTestProfile";
encodingProfileConfig.videoStreamConfigs.add(videoConfig1);
encodingProfileConfig.videoStreamConfigs.add(videoConfig2);
encodingProfileConfig.videoStreamConfigs.add(videoConfig3);
AudioStreamConfig audioStreamConfig = new AudioStreamConfig();
audioStreamConfig.defaultStreamId = 0;
audioStreamConfig.bitrate = 192000;
encodingProfileConfig.audioStreamConfigs.add(audioStreamConfig);
EncodingProfile encodingProfile;
try {
encodingProfile = bitApi.createEncodingProfile(encodingProfileConfig);
} catch (BitcodinApiException e) {
System.out.println("Could not create encoding profile: " + e.getMessage());
return;
}
/* Create CombinedDrmConfig */
CombinedDrmConfig drmConfig = new CombinedDrmConfig();
drmConfig.kid = "eb676abbcb345e96bbcf616630f1a3da";
drmConfig.key = "100b6c20940f779a4589152b57d2dacb";
drmConfig.laUrl = "http://playready.directtaps.net/pr/svc/rightsmanager.asmx?PlayRight=1&ContentKey=EAtsIJQPd5pFiRUrV9Layw==";
drmConfig.pssh = "CAESEOtnarvLNF6Wu89hZjDxo9oaDXdpZGV2aW5lX3Rlc3QiEGZrajNsamFTZGZhbGtyM2oqAkhEMgA=";
/* Create Job */
JobConfig jobConfig = new JobConfig();
jobConfig.encodingProfileId = encodingProfile.encodingProfileId;
jobConfig.inputId = input.inputId;
jobConfig.manifestTypes.addElement(ManifestType.MPEG_DASH_MPD);
jobConfig.manifestTypes.addElement(ManifestType.HLS_M3U8);
jobConfig.speed = Speed.STANDARD;
jobConfig.drmConfig = drmConfig;
Job job;
try {
job = bitApi.createJob(jobConfig);
} catch (BitcodinApiException e) {
System.out.println("Could not create job: " + e.getMessage());
return;
}
JobDetails jobDetails;
do {
try {
jobDetails = bitApi.getJobDetails(job.jobId);
System.out.println("Status: " + jobDetails.status.toString() +
" - Enqueued Duration: " + jobDetails.enqueueDuration + "s" +
" - Realtime Factor: " + jobDetails.realtimeFactor +
" - Encoded Duration: " + jobDetails.encodedDuration + "s" +
" - Output: " + jobDetails.bytesWritten/1024/1024 + "MB");
} catch (BitcodinApiException e) {
System.out.println("Could not get any job details");
return;
}
if (jobDetails.status == JobStatus.ERROR) {
System.out.println("Error during transcoding");
return;
}
Thread.sleep(2000);
} while (jobDetails.status != JobStatus.FINISHED);
System.out.println("Job with ID " + job.jobId + " finished successfully!");
}
}