Skip to content

Commit a05d69a

Browse files
committed
Use VideoCodec and AudioCodec in MediaInfo
1 parent 819ce11 commit a05d69a

File tree

6 files changed

+54
-14
lines changed

6 files changed

+54
-14
lines changed

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
import java.util.regex.Matcher;
2121
import java.util.regex.Pattern;
2222

23+
import protect.videotranscoder.media.AudioCodec;
2324
import protect.videotranscoder.media.MediaInfo;
2425
import protect.videotranscoder.media.MediaContainer;
26+
import protect.videotranscoder.media.VideoCodec;
2527

2628
/**
2729
* Utility class for executing ffmpeg
@@ -186,11 +188,11 @@ public void onResult(String mediaDetailsStr)
186188
static MediaInfo parseMediaInfo(File mediaFile, String string)
187189
{
188190
long durationMs = 0;
189-
String videoCodec = null;
191+
VideoCodec videoCodec = null;
190192
String videoResolution = null;
191193
String videoBitrate = null;
192194
String videoFramerate = null;
193-
String audioCodec = null;
195+
AudioCodec audioCodec = null;
194196
String audioSampleRate = null;
195197
String audioBitrate = null;
196198
int audioChannels = 2;
@@ -252,7 +254,9 @@ static MediaInfo parseMediaInfo(File mediaFile, String string)
252254
{
253255
continue;
254256
}
255-
videoCodec = split[3];
257+
258+
String videoCodecName = split[3];
259+
videoCodec = VideoCodec.fromName(videoCodecName);
256260

257261
// Looking for resolution. There are sometimes items such as:
258262
// (mp4a / 0x6134706D)
@@ -294,7 +298,9 @@ static MediaInfo parseMediaInfo(File mediaFile, String string)
294298
{
295299
continue;
296300
}
297-
audioCodec = split[3];
301+
302+
String audioCodecName = split[3];
303+
audioCodec = AudioCodec.fromName(audioCodecName);
298304

299305
split = line.split(",");
300306
for(String piece : split)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,8 +352,8 @@ public void onResult(MediaInfo result)
352352
if(result == null)
353353
{
354354
// Could not query the file, fill in what we know.
355-
result = new MediaInfo(videoFile, 0, VideoCodec.MPEG4.name(), "640x480",
356-
"800", "25", AudioCodec.MP3.name(),
355+
result = new MediaInfo(videoFile, 0, VideoCodec.MPEG4, "640x480",
356+
"800", "25", AudioCodec.MP3,
357357
"44100", "128", 2);
358358
}
359359

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package protect.videotranscoder.media;
22

3+
import android.support.annotation.Nullable;
4+
35
/**
46
* List of audio codecs which the application may support
57
*/
@@ -17,4 +19,18 @@ public enum AudioCodec
1719
this.ffmpegName = ffmpegName;
1820
}
1921

22+
@Nullable
23+
public static AudioCodec fromName(String name)
24+
{
25+
for(AudioCodec item : values())
26+
{
27+
if(item.ffmpegName.equals(name))
28+
{
29+
return item;
30+
}
31+
}
32+
33+
return null;
34+
}
35+
2036
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@ public class MediaInfo
99
{
1010
public final File file;
1111
public final long durationMs;
12-
public final String videoCodec;
12+
public final VideoCodec videoCodec;
1313
public final String videoResolution;
1414
public final String videoBitrate;
1515
public final String videoFramerate;
16-
public final String audioCodec;
16+
public final AudioCodec audioCodec;
1717
public final String audioSampleRate;
1818
public final String audioBitrate;
1919
public final int audioChannels;
2020

2121

22-
public MediaInfo(File file, long durationMs, String videoCodec, String videoResolution,
23-
String videoBitrate, String videoFramerate, String audioCodec,
22+
public MediaInfo(File file, long durationMs, VideoCodec videoCodec, String videoResolution,
23+
String videoBitrate, String videoFramerate, AudioCodec audioCodec,
2424
String audioSampleRate, String audioBitrate, int audioChannels)
2525
{
2626
this.file = file;

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package protect.videotranscoder.media;
22

3+
import android.support.annotation.Nullable;
4+
35
/**
46
* List of video codecs which the application may support
57
*/
@@ -16,4 +18,18 @@ public enum VideoCodec
1618
this.ffmpegName = ffmpegName;
1719
}
1820

21+
@Nullable
22+
public static VideoCodec fromName(String name)
23+
{
24+
for(VideoCodec item : values())
25+
{
26+
if(item.ffmpegName.equals(name))
27+
{
28+
return item;
29+
}
30+
}
31+
32+
return null;
33+
}
34+
1935
}

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
import java.io.File;
99
import java.util.List;
1010

11+
import protect.videotranscoder.media.AudioCodec;
1112
import protect.videotranscoder.media.MediaInfo;
1213
import protect.videotranscoder.media.MediaContainer;
14+
import protect.videotranscoder.media.VideoCodec;
1315

1416
import static org.junit.Assert.*;
1517

@@ -44,11 +46,11 @@ public void parseMediaInfo() throws Exception
4446
assertEquals(file, info.file);
4547
assertEquals( (2*60+22)*1000 + 86, info.durationMs);
4648

47-
assertEquals("h264", info.videoCodec);
49+
assertEquals(VideoCodec.H264, info.videoCodec);
4850
assertEquals("1080x1920", info.videoResolution);
4951
assertEquals("4499 kb/s", info.videoBitrate);
5052
assertEquals("19.01 fps", info.videoFramerate);
51-
assertEquals("aac", info.audioCodec);
53+
assertEquals(AudioCodec.AAC, info.audioCodec);
5254
assertEquals("22050 Hz", info.audioSampleRate);
5355
assertEquals("63 kb/s", info.audioBitrate);
5456
assertEquals(1, info.audioChannels);
@@ -80,11 +82,11 @@ public void parseMediaInfo() throws Exception
8082
assertEquals(file, info.file);
8183
assertEquals( (10)*1000 + 5, info.durationMs);
8284

83-
assertEquals("mpeg4", info.videoCodec);
85+
assertEquals(VideoCodec.MPEG4, info.videoCodec);
8486
assertEquals("320x240", info.videoResolution);
8587
assertEquals("705 kb/s", info.videoBitrate);
8688
assertEquals("25 fps", info.videoFramerate);
87-
assertEquals("aac", info.audioCodec);
89+
assertEquals(AudioCodec.AAC, info.audioCodec);
8890
assertEquals("22050 Hz", info.audioSampleRate);
8991
assertEquals("47 kb/s", info.audioBitrate);
9092
assertEquals(2, info.audioChannels);

0 commit comments

Comments
 (0)