Revision 9fa2835a app/src/main/java/org/witness/ssc/video/FFMPEGWrapper.java
| app/src/main/java/org/witness/ssc/video/FFMPEGWrapper.java | ||
|---|---|---|
| 20 | 20 |
public class FFMPEGWrapper {
|
| 21 | 21 |
|
| 22 | 22 |
Context context; |
| 23 |
FFmpeg ffmpeg; |
|
| 23 | 24 |
|
| 24 | 25 |
public FFMPEGWrapper(Context _context) throws FileNotFoundException, IOException {
|
| 25 | 26 |
context = _context; |
| 26 | 27 |
|
| 27 |
FFmpeg ffmpeg = FFmpeg.getInstance(context); |
|
| 28 |
try {
|
|
| 28 |
ffmpeg = FFmpeg.getInstance(context); |
|
| 29 |
|
|
| 30 |
try {
|
|
| 29 | 31 |
ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
|
| 30 | 32 |
|
| 31 | 33 |
@Override |
| ... | ... | |
| 54 | 56 |
|
| 55 | 57 |
|
| 56 | 58 |
public void processVideo( |
| 57 |
ArrayList<RegionTrail> regionTrails, File inputFile, File outputFile, int frameRate, int mDuration, int mOutputLength,
|
|
| 59 |
ArrayList<RegionTrail> regionTrails, File inputFile, File outputFile, int frameRate, float startTime, float duration,
|
|
| 58 | 60 |
boolean compressVideo, int obscureVideoAmount, int obscureAudioAmount, ExecuteBinaryResponseHandler listener) throws Exception {
|
| 59 | 61 |
|
| 60 | 62 |
DecimalFormat df = new DecimalFormat("####0.00");
|
| ... | ... | |
| 65 | 67 |
alCmds.add("-i");
|
| 66 | 68 |
alCmds.add(inputFile.getCanonicalPath()); |
| 67 | 69 |
|
| 68 |
if (mOutputLength > 0)
|
|
| 70 |
if (duration > 0)
|
|
| 69 | 71 |
{
|
| 72 |
alCmds.add("-ss");
|
|
| 73 |
alCmds.add(df.format(startTime)); |
|
| 74 |
|
|
| 70 | 75 |
alCmds.add("-t");
|
| 71 |
alCmds.add(mOutputLength+"");
|
|
| 76 |
alCmds.add(df.format(duration));
|
|
| 72 | 77 |
} |
| 73 | 78 |
|
| 74 | 79 |
if (frameRate > 0) |
| ... | ... | |
| 119 | 124 |
if (trail.isDoTweening() && trail.getRegionCount() > 1) {
|
| 120 | 125 |
int timeInc = 100; |
| 121 | 126 |
|
| 122 |
for (int i = 0; i < mDuration; i = i + timeInc) {
|
|
| 127 |
for (int i = 0; i < ((int)duration); i = i + timeInc) {
|
|
| 123 | 128 |
ObscureRegion or = trail.getCurrentRegion(i, trail.isDoTweening()); |
| 124 | 129 |
if (or != null) {
|
| 125 | 130 |
|
| ... | ... | |
| 131 | 136 |
float timeStart = ((float) or.timeStamp) / 1000f; |
| 132 | 137 |
float timeStop = (((float) or.timeStamp) + 100) / 1000f; |
| 133 | 138 |
|
| 134 |
float timeEnd = ((float) mDuration) / 1000f;
|
|
| 139 |
float timeEnd = duration / 1000f;
|
|
| 135 | 140 |
timeStop = Math.max(timeStop, timeEnd); |
| 136 | 141 |
|
| 137 | 142 |
filters.append("drawbox=x=" + x + ":y=" + y
|
| ... | ... | |
| 184 | 189 |
try {
|
| 185 | 190 |
|
| 186 | 191 |
|
| 187 |
FFmpeg ffmpeg = FFmpeg.getInstance(context); |
|
| 188 | 192 |
// to execute "ffmpeg -version" command you just need to pass "-version" |
| 189 | 193 |
ffmpeg.execute(cmd,listener); |
| 190 | 194 |
} catch (FFmpegCommandAlreadyRunningException e) {
|
| ... | ... | |
| 251 | 255 |
|
| 252 | 256 |
|
| 253 | 257 |
} |
| 254 |
|
|
| 258 |
|
|
| 259 |
public FFmpeg getFFMPEG () |
|
| 260 |
{
|
|
| 261 |
return ffmpeg; |
|
| 262 |
} |
|
| 255 | 263 |
|
| 256 | 264 |
} |
| 257 | 265 |
|
Also available in: Unified diff