Skip to content

Commit 63416ef

Browse files
harrymaurya05Hariom Maurya
authored andcommitted
Add Sample Test to convert media file in hls format in different Resolution (#294)
* Add test to convert media file into hls format * File path updated --------- Co-authored-by: Hariom Maurya <hariommaurya@Harioms-MacBook-Air.local>
1 parent c3de044 commit 63416ef

1 file changed

Lines changed: 77 additions & 0 deletions

File tree

src/test/java/net/bramp/ffmpeg/ReadmeTest.java

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import java.io.IOException;
88
import java.util.Locale;
99
import java.util.concurrent.TimeUnit;
10+
11+
import com.google.common.base.Joiner;
1012
import net.bramp.ffmpeg.builder.FFmpegBuilder;
1113
import net.bramp.ffmpeg.builder.Strict;
1214
import net.bramp.ffmpeg.fixtures.Samples;
@@ -146,4 +148,79 @@ public void progress(Progress progress) {
146148

147149
assertEquals(FFmpegJob.State.FINISHED, job.getState());
148150
}
151+
152+
@Test
153+
public void testHLSVideoEncoding() throws IOException {
154+
long start = System.currentTimeMillis();
155+
FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);
156+
FFmpegProbeResult in = ffprobe.probe(Samples.big_buck_bunny_720p_1mb);
157+
FFmpegBuilder builder = new FFmpegBuilder()
158+
.setInput(in)
159+
.overrideOutputFiles(true)
160+
.addOutput("src/test/resources/net/bramp/ffmpeg/samples/%v/index.m3u8")
161+
.setPreset("slow")
162+
.addExtraArgs("-g", "48")
163+
.addExtraArgs("-sc_threshold","0")
164+
.addExtraArgs("-map","0:0")
165+
.addExtraArgs("-map","0:1")
166+
.addExtraArgs("-map","0:0")
167+
.addExtraArgs("-map","0:1")
168+
.addExtraArgs("-map","0:0")
169+
.addExtraArgs("-map","0:1")
170+
.addExtraArgs("-map","0:0")
171+
.addExtraArgs("-map","0:1")
172+
.addExtraArgs("-map","0:0")
173+
.addExtraArgs("-map","0:1")
174+
.addExtraArgs("-map","0:0")
175+
.addExtraArgs("-map","0:1")
176+
.addExtraArgs("-s:v:0","1920*1080")
177+
.addExtraArgs("-b:v:0","1800k")
178+
.addExtraArgs("-s:v:1","1280*720")
179+
.addExtraArgs("-b:v:1","1200k")
180+
.addExtraArgs("-s:v:2","858*480")
181+
.addExtraArgs("-b:v:2","750k")
182+
.addExtraArgs("-s:v:3","630*360")
183+
.addExtraArgs("-b:v:3","550k")
184+
.addExtraArgs("-s:v:4","426*240")
185+
.addExtraArgs("-b:v:4","400k")
186+
.addExtraArgs("-s:v:5","256*144")
187+
.addExtraArgs("-b:v:5","200k")
188+
.addExtraArgs("-c:a","copy")
189+
.addExtraArgs("-var_stream_map","v:0,a:0,name:1080p v:1,a:1,name:720p v:2,a:2,name:480p v:3,a:3,name:360p v:4,a:4,name:240p v:5,a:5,name:144p")
190+
.addExtraArgs("-master_pl_name","master.m3u8")
191+
.addExtraArgs("-f","hls")
192+
.addExtraArgs("-hls_time","10")
193+
.addExtraArgs("-hls_playlist_type","vod")
194+
.addExtraArgs("-hls_list_size","0")
195+
.addExtraArgs("-hls_segment_filename","src/test/resources/net/bramp/ffmpeg/samples/%v/segment%d.ts")
196+
.done();
197+
String actual = Joiner.on(" ").join(ffmpeg.path(builder.build()));
198+
System.out.println("actual "+actual);
199+
FFmpegJob job =
200+
executor.createJob(
201+
builder,
202+
new ProgressListener() {
203+
// Using the FFmpegProbeResult determine the duration of the input
204+
final double duration_ns = in.getFormat().duration * TimeUnit.SECONDS.toNanos(1);
205+
@Override
206+
public void progress(Progress progress) {
207+
double percentage = progress.out_time_ns / duration_ns;
208+
// Print out interesting information about the progress
209+
System.out.println(
210+
String.format(
211+
locale,
212+
"[%.0f%%] status:%s frame:%d time:%s fps:%.0f speed:%.2fx",
213+
percentage * 100,
214+
progress.status,
215+
progress.frame,
216+
FFmpegUtils.toTimecode(progress.out_time_ns, TimeUnit.NANOSECONDS),
217+
progress.fps.doubleValue(),
218+
progress.speed));
219+
}
220+
});
221+
job.run();
222+
long end = System.currentTimeMillis();
223+
long execution = (end - start)/1000;
224+
System.out.println("Execution time: " + execution + " seconds");
225+
}
149226
}

0 commit comments

Comments
 (0)