Skip to content

Commit a626f55

Browse files
authored
Merge pull request #6 from brarcher/support-encoding
Support encoding
2 parents e13eabc + d19d5b8 commit a626f55

File tree

14 files changed

+1002
-266
lines changed

14 files changed

+1002
-266
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ dependencies {
4040
compile 'com.android.support:appcompat-v7:27.0.2'
4141
compile 'com.android.support:design:27.0.2'
4242
compile 'com.writingminds:FFmpegAndroid:0.3.2'
43-
compile 'org.florescu.android.rangeseekbar:rangeseekbar-library:0.3.0'
43+
compile 'com.crystal:crystalrangeseekbar:1.1.3'
4444
compile 'commons-io:commons-io:2.5'
4545
compile group: 'com.google.guava', name: 'guava', version: '20.0'
4646
testCompile 'junit:junit:4.12'

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools"
34
package="protect.videotranscoder">
45
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
56
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
67
<application
78
android:allowBackup="false"
9+
tools:replace="android:allowBackup"
810
android:icon="@mipmap/ic_launcher"
911
android:label="@string/app_name"
1012
android:largeHeap="true"

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@ public class FFmpegResponseHandler extends ExecuteBinaryResponseHandler
1010
{
1111
private static final String TAG = "VideoTranscoder";
1212

13-
private final Context _context;
1413
private final long _durationMs;
1514
private final ProgressDialog _progressDialog;
1615
private final ResultCallbackHandler<Boolean> _resultHandler;
1716

18-
public FFmpegResponseHandler(Context context, long durationMs, ProgressDialog progressDialog,
17+
public FFmpegResponseHandler(long durationMs, ProgressDialog progressDialog,
1918
ResultCallbackHandler<Boolean> resultHandler)
2019
{
21-
_context = context;
2220
_durationMs = durationMs;
2321
_progressDialog = progressDialog;
2422
_resultHandler = resultHandler;

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

Lines changed: 28 additions & 9 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,12 @@ public void onResult(String mediaDetailsStr)
186188
static MediaInfo parseMediaInfo(File mediaFile, String string)
187189
{
188190
long durationMs = 0;
189-
String videoCodec = null;
191+
MediaContainer container = null;
192+
VideoCodec videoCodec = null;
190193
String videoResolution = null;
191194
String videoBitrate = null;
192195
String videoFramerate = null;
193-
String audioCodec = null;
196+
AudioCodec audioCodec = null;
194197
String audioSampleRate = null;
195198
String audioBitrate = null;
196199
int audioChannels = 2;
@@ -242,6 +245,18 @@ static MediaInfo parseMediaInfo(File mediaFile, String string)
242245
durationMs = time;
243246
}
244247

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+
245260
if(line.startsWith("Stream") && line.contains("Video:"))
246261
{
247262
// Stream #0:0: Video: h264 (Main), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1k tbn, 50 tbc
@@ -252,7 +267,9 @@ static MediaInfo parseMediaInfo(File mediaFile, String string)
252267
{
253268
continue;
254269
}
255-
videoCodec = split[3];
270+
271+
String videoCodecName = split[3];
272+
videoCodec = VideoCodec.fromName(videoCodecName);
256273

257274
// Looking for resolution. There are sometimes items such as:
258275
// (mp4a / 0x6134706D)
@@ -274,12 +291,12 @@ static MediaInfo parseMediaInfo(File mediaFile, String string)
274291

275292
if(piece.contains("kb/s"))
276293
{
277-
videoBitrate = piece;
294+
videoBitrate = piece.replace("kb/s", "").trim();
278295
}
279296

280297
if(piece.contains("fps"))
281298
{
282-
videoFramerate = piece;
299+
videoFramerate = piece.replace("fps", "").trim();
283300
}
284301
}
285302
}
@@ -294,7 +311,9 @@ static MediaInfo parseMediaInfo(File mediaFile, String string)
294311
{
295312
continue;
296313
}
297-
audioCodec = split[3];
314+
315+
String audioCodecName = split[3];
316+
audioCodec = AudioCodec.fromName(audioCodecName);
298317

299318
split = line.split(",");
300319
for(String piece : split)
@@ -303,12 +322,12 @@ static MediaInfo parseMediaInfo(File mediaFile, String string)
303322

304323
if(piece.contains("Hz"))
305324
{
306-
audioSampleRate = piece;
325+
audioSampleRate = piece.replace("Hz", "").trim();
307326
}
308327

309328
if(piece.contains("kb/s"))
310329
{
311-
audioBitrate = piece;
330+
audioBitrate = piece.replace("kb/s", "").trim();
312331

313332
if(audioBitrate.contains("(default)"))
314333
{
@@ -324,7 +343,7 @@ static MediaInfo parseMediaInfo(File mediaFile, String string)
324343
}
325344
}
326345

327-
MediaInfo info = new MediaInfo(mediaFile, durationMs, videoCodec, videoResolution,
346+
MediaInfo info = new MediaInfo(mediaFile, durationMs, container, videoCodec, videoResolution,
328347
videoBitrate, videoFramerate, audioCodec, audioSampleRate, audioBitrate, audioChannels);
329348
return info;
330349
}

0 commit comments

Comments
 (0)