Skip to content

Commit 5186027

Browse files
committed
Add MediaContainer to MediaInfo
1 parent a05d69a commit 5186027

File tree

4 files changed

+44
-7
lines changed

4 files changed

+44
-7
lines changed

app/src/main/java/protect/videotranscoder/FFmpegUtil.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ public void onResult(String mediaDetailsStr)
188188
static MediaInfo parseMediaInfo(File mediaFile, String string)
189189
{
190190
long durationMs = 0;
191+
MediaContainer container = null;
191192
VideoCodec videoCodec = null;
192193
String videoResolution = null;
193194
String videoBitrate = null;
@@ -244,6 +245,18 @@ static MediaInfo parseMediaInfo(File mediaFile, String string)
244245
durationMs = time;
245246
}
246247

248+
if(line.startsWith("Input"))
249+
{
250+
for(MediaContainer item : MediaContainer.values())
251+
{
252+
if(line.contains(item.ffmpegName))
253+
{
254+
container = item;
255+
break;
256+
}
257+
}
258+
}
259+
247260
if(line.startsWith("Stream") && line.contains("Video:"))
248261
{
249262
// Stream #0:0: Video: h264 (Main), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1k tbn, 50 tbc
@@ -330,7 +343,7 @@ static MediaInfo parseMediaInfo(File mediaFile, String string)
330343
}
331344
}
332345

333-
MediaInfo info = new MediaInfo(mediaFile, durationMs, videoCodec, videoResolution,
346+
MediaInfo info = new MediaInfo(mediaFile, durationMs, container, videoCodec, videoResolution,
334347
videoBitrate, videoFramerate, audioCodec, audioSampleRate, audioBitrate, audioChannels);
335348
return info;
336349
}

app/src/main/java/protect/videotranscoder/activity/MainActivity.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import protect.videotranscoder.R;
5050
import protect.videotranscoder.ResultCallbackHandler;
5151
import protect.videotranscoder.media.AudioCodec;
52+
import protect.videotranscoder.media.MediaContainer;
5253
import protect.videotranscoder.media.MediaInfo;
5354
import protect.videotranscoder.media.VideoCodec;
5455

@@ -352,7 +353,7 @@ public void onResult(MediaInfo result)
352353
if(result == null)
353354
{
354355
// Could not query the file, fill in what we know.
355-
result = new MediaInfo(videoFile, 0, VideoCodec.MPEG4, "640x480",
356+
result = new MediaInfo(videoFile, 0, MediaContainer.MP4, VideoCodec.MPEG4, "640x480",
356357
"800", "25", AudioCodec.MP3,
357358
"44100", "128", 2);
358359
}

app/src/main/java/protect/videotranscoder/media/MediaInfo.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class MediaInfo
99
{
1010
public final File file;
1111
public final long durationMs;
12+
public final MediaContainer container;
1213
public final VideoCodec videoCodec;
1314
public final String videoResolution;
1415
public final String videoBitrate;
@@ -19,12 +20,14 @@ public class MediaInfo
1920
public final int audioChannels;
2021

2122

22-
public MediaInfo(File file, long durationMs, VideoCodec videoCodec, String videoResolution,
23-
String videoBitrate, String videoFramerate, AudioCodec audioCodec,
24-
String audioSampleRate, String audioBitrate, int audioChannels)
23+
public MediaInfo(File file, long durationMs, MediaContainer container, VideoCodec videoCodec,
24+
String videoResolution, String videoBitrate, String videoFramerate,
25+
AudioCodec audioCodec, String audioSampleRate, String audioBitrate,
26+
int audioChannels)
2527
{
2628
this.file = file;
2729
this.durationMs = durationMs;
30+
this.container = container;
2831
this.videoCodec = videoCodec;
2932
this.videoResolution = videoResolution;
3033
this.videoBitrate = videoBitrate;

app/src/test/java/protect/videotranscoder/FFmpegUtilTest.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void parseMediaInfo() throws Exception
4545

4646
assertEquals(file, info.file);
4747
assertEquals( (2*60+22)*1000 + 86, info.durationMs);
48-
48+
assertEquals(MediaContainer.MP4, info.container);
4949
assertEquals(VideoCodec.H264, info.videoCodec);
5050
assertEquals("1080x1920", info.videoResolution);
5151
assertEquals("4499 kb/s", info.videoBitrate);
@@ -81,7 +81,7 @@ public void parseMediaInfo() throws Exception
8181

8282
assertEquals(file, info.file);
8383
assertEquals( (10)*1000 + 5, info.durationMs);
84-
84+
assertEquals(MediaContainer.MP4, info.container);
8585
assertEquals(VideoCodec.MPEG4, info.videoCodec);
8686
assertEquals("320x240", info.videoResolution);
8787
assertEquals("705 kb/s", info.videoBitrate);
@@ -90,6 +90,26 @@ public void parseMediaInfo() throws Exception
9090
assertEquals("22050 Hz", info.audioSampleRate);
9191
assertEquals("47 kb/s", info.audioBitrate);
9292
assertEquals(2, info.audioChannels);
93+
94+
string = "Input #0, flv, from 'SampleVideo_360x240_1mb.flv':\n" +
95+
" Metadata:\n" + " encoder : Lavf53.24.2\n" +
96+
" Duration: 00:00:10.64, start: 0.000000, bitrate: 792 kb/s\n" +
97+
" Stream #0:0: Audio: aac (LC), 48000 Hz, 5.1, fltp\n" +
98+
" Stream #0:1: Video: flv1, yuv420p, 320x240, 25 fps, 25 tbr, 1k tbn";
99+
100+
info = FFmpegUtil.parseMediaInfo(file, string);
101+
102+
assertEquals(file, info.file);
103+
assertEquals( (10)*1000 + 64, info.durationMs);
104+
assertEquals(MediaContainer.FLV, info.container);
105+
assertEquals(null, info.videoCodec);
106+
assertEquals("320x240", info.videoResolution);
107+
assertEquals(null, info.videoBitrate);
108+
assertEquals("25 fps", info.videoFramerate);
109+
assertEquals(AudioCodec.AAC, info.audioCodec);
110+
assertEquals("48000 Hz", info.audioSampleRate);
111+
assertEquals(null, info.audioBitrate);
112+
assertEquals(2, info.audioChannels);
93113
}
94114

95115
@Test

0 commit comments

Comments
 (0)