32
32
import com .google .cloud .video .transcoder .v1 .VideoStream ;
33
33
import com .google .protobuf .Duration ;
34
34
import java .io .IOException ;
35
- import java .math .BigDecimal ;
36
- import java .text .DecimalFormat ;
37
35
38
36
public class CreateJobWithConcatenatedInputs {
39
37
@@ -42,56 +40,38 @@ public static void main(String[] args) throws IOException {
42
40
String projectId = "my-project-id" ;
43
41
String location = "us-central1" ;
44
42
String inputUri1 = "gs://my-bucket/my-video-file1" ;
45
- Float startTimeOffset1 = 0.0f ;
46
- Float endTimeOffset1 = 8.1f ;
43
+ Duration startTimeInput1 = Duration . newBuilder (). setSeconds ( 0 ). setNanos ( 0 ). build () ;
44
+ Duration endTimeInput1 = Duration . newBuilder (). setSeconds ( 8 ). setNanos ( 100000000 ). build () ;
47
45
String inputUri2 = "gs://my-bucket/my-video-file2" ;
48
- Float startTimeOffset2 = 3.5f ;
49
- Float endTimeOffset2 = 15f ;
46
+ Duration startTimeInput2 = Duration . newBuilder (). setSeconds ( 3 ). setNanos ( 500000000 ). build () ;
47
+ Duration endTimeInput2 = Duration . newBuilder (). setSeconds ( 15 ). setNanos ( 0 ). build () ;
50
48
String outputUri = "gs://my-bucket/my-output-folder/" ;
51
49
52
50
createJobWithConcatenatedInputs (
53
51
projectId ,
54
52
location ,
55
53
inputUri1 ,
56
- startTimeOffset1 ,
57
- endTimeOffset1 ,
54
+ startTimeInput1 ,
55
+ endTimeInput1 ,
58
56
inputUri2 ,
59
- startTimeOffset2 ,
60
- endTimeOffset2 ,
57
+ startTimeInput2 ,
58
+ endTimeInput2 ,
61
59
outputUri );
62
60
}
63
61
64
- public static int toNanos (Float timeOffset ) {
65
- DecimalFormat df = new DecimalFormat (".####" );
66
- BigDecimal toNanos = new BigDecimal ("1000000000" );
67
- BigDecimal bd = new BigDecimal (df .format (timeOffset ));
68
- BigDecimal fractionalPart = bd .remainder (BigDecimal .ONE );
69
- return fractionalPart .multiply (toNanos ).intValue ();
70
- }
71
-
72
62
// Creates a job from an ad-hoc configuration that concatenates two input videos.
73
63
public static void createJobWithConcatenatedInputs (
74
64
String projectId ,
75
65
String location ,
76
66
String inputUri1 ,
77
- Float startTimeOffset1 ,
78
- Float endTimeOffset1 ,
67
+ Duration startTimeInput1 ,
68
+ Duration endTimeInput1 ,
79
69
String inputUri2 ,
80
- Float startTimeOffset2 ,
81
- Float endTimeOffset2 ,
70
+ Duration startTimeInput2 ,
71
+ Duration endTimeInput2 ,
82
72
String outputUri )
83
73
throws IOException {
84
74
85
- int startTimeOffset1Sec = (int ) Math .floor (startTimeOffset1 );
86
- int startTimeOffset1NanoSec = toNanos (startTimeOffset1 );
87
- int endTimeOffset1Sec = (int ) Math .floor (endTimeOffset1 );
88
- int endTimeOffset1NanoSec = toNanos (endTimeOffset1 );
89
-
90
- int startTimeOffset2Sec = (int ) Math .floor (startTimeOffset2 );
91
- int startTimeOffset2NanoSec = toNanos (startTimeOffset2 );
92
- int endTimeOffset2Sec = (int ) Math .floor (endTimeOffset2 );
93
- int endTimeOffset2NanoSec = toNanos (endTimeOffset2 );
94
-
95
75
// Initialize client that will be used to send requests. This client only needs to be created
96
76
// once, and can be reused for multiple requests.
97
77
try (TranscoderServiceClient transcoderServiceClient = TranscoderServiceClient .create ()) {
@@ -130,36 +110,20 @@ public static void createJobWithConcatenatedInputs(
130
110
.addElementaryStreams ("audio_stream0" )
131
111
.build ())
132
112
.addEditList (
133
- 0 ,
113
+ 0 , // Index in the edit list
134
114
EditAtom .newBuilder ()
135
115
.setKey ("atom1" )
136
116
.addInputs ("input1" )
137
- .setStartTimeOffset (
138
- Duration .newBuilder ()
139
- .setSeconds (startTimeOffset1Sec )
140
- .setNanos (startTimeOffset1NanoSec )
141
- .build ())
142
- .setEndTimeOffset (
143
- Duration .newBuilder ()
144
- .setSeconds (endTimeOffset1Sec )
145
- .setNanos (endTimeOffset1NanoSec )
146
- .build ())
117
+ .setStartTimeOffset (startTimeInput1 )
118
+ .setEndTimeOffset (endTimeInput1 )
147
119
.build ())
148
120
.addEditList (
149
- 1 ,
121
+ 1 , // Index in the edit list
150
122
EditAtom .newBuilder ()
151
123
.setKey ("atom2" )
152
124
.addInputs ("input2" )
153
- .setStartTimeOffset (
154
- Duration .newBuilder ()
155
- .setSeconds (startTimeOffset2Sec )
156
- .setNanos (startTimeOffset2NanoSec )
157
- .build ())
158
- .setEndTimeOffset (
159
- Duration .newBuilder ()
160
- .setSeconds (endTimeOffset2Sec )
161
- .setNanos (endTimeOffset2NanoSec )
162
- .build ())
125
+ .setStartTimeOffset (startTimeInput2 )
126
+ .setEndTimeOffset (endTimeInput2 )
163
127
.build ())
164
128
.build ();
165
129
0 commit comments