In my video recording code, to implement pause functionality, 'n' no. of mp4 files are created in sequence.
(file1.mp4, file2.mp4, file3.mp4.....)
Following code is used for file name sequence; (thanks to Robpuk38):
http://androidforums.com/threads/writing-filename-in-sequence.985745/
After this, these 'n' no of files are parsed using mp4Parser:
All the recorded 'n' of file.mp4 are listed in the console, but I also get "java.io.FileNotFoundException:" for the same files!
CONSOLE:
/com.exapps.videorec I/System.out﹕ /storage/emulated/0/Videos/Temp/file1.mp4 piece of video
/com.exapps.videorec I/System.out﹕ /storage/emulated/0/Videos/Temp/file2.mp4 piece of video
/com.exapps.videorec I/System.out﹕ /storage/emulated/0/Videos/Temp/file3.mp4 piece of video
/com.exapps.videorec W/System.err﹕ java.io.FileNotFoundException: [/storage/emulated/0/Videos/Temp/file1.mp4, /storage/emulated/0/Videos/Temp/file2.mp4, /storage/emulated/0/Videos/Temp/file3.mp4]: open failed: ENOENT (No such file or directory)
/com.exapps.videorec W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:456)
/com.exapps.videorec W/System.err﹕ at java.io.FileInputStream.<init>(FileInputStream.java:76)
/com.exapps.videorec W/System.err﹕ at com.googlecode.mp4parser.FileDataSourceImpl.<init>(FileDataSourceImpl.java:19)
.................
But if i set the above code as:
It does work perfectly..
Any help appreciated..!
(file1.mp4, file2.mp4, file3.mp4.....)
Following code is used for file name sequence; (thanks to Robpuk38):
http://androidforums.com/threads/writing-filename-in-sequence.985745/
After this, these 'n' no of files are parsed using mp4Parser:
Code:
public class MergeVide extends AsyncTask<String, Integer, String> {
File files;
@Override
protected void onPreExecute() {
files = new File("/storage/emulated/0//Videos/Temp/");
File[] list = files.listFiles();
for (File aList : list) {
System.out.println(aList + " piece of video");
}
}
@Override
protected String doInBackground(String... params) {
String[] videoUris = new String[]{
Arrays.toString(files.listFiles()),
};
try {
List<Movie> inMovies = new ArrayList<Movie>();
for (String videoUri : videoUris) {
inMovies.add(MovieCreator.build(videoUri));
}
List<Track> videoTracks = new LinkedList<Track>();
List<Track> audioTracks = new LinkedList<Track>();
for (Movie m : inMovies) {
for (Track t : m.getTracks()) {
if (t.getHandler().equals("soun")) {
audioTracks.add(t);
}
if (t.getHandler().equals("vide")) {
videoTracks.add(t);
}
}
}
Movie result = new Movie();
if (audioTracks.size() > 0) {
result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()])));
}
if (videoTracks.size() > 0) {
result.addTrack(new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()])));
}
Container out = new DefaultMp4Builder().build(result);
FileChannel fc = new RandomAccessFile(String.format("/storage/emulated/0//output.mp4"), "rw").getChannel();
out.writeContainer(fc);
fc.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
File oldFile = new File("/storage/emulated/0//Videos/output.mp4");
mFileName = new File("/storage/emulated/0//Videos/ video.mp4");
boolean success = oldFile .renameTo(mFileName );
if(success)
System.out.println("file is renamed..");
return String.valueOf(mFileName);
}
All the recorded 'n' of file.mp4 are listed in the console, but I also get "java.io.FileNotFoundException:" for the same files!
CONSOLE:
/com.exapps.videorec I/System.out﹕ /storage/emulated/0/Videos/Temp/file1.mp4 piece of video
/com.exapps.videorec I/System.out﹕ /storage/emulated/0/Videos/Temp/file2.mp4 piece of video
/com.exapps.videorec I/System.out﹕ /storage/emulated/0/Videos/Temp/file3.mp4 piece of video
/com.exapps.videorec W/System.err﹕ java.io.FileNotFoundException: [/storage/emulated/0/Videos/Temp/file1.mp4, /storage/emulated/0/Videos/Temp/file2.mp4, /storage/emulated/0/Videos/Temp/file3.mp4]: open failed: ENOENT (No such file or directory)
/com.exapps.videorec W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:456)
/com.exapps.videorec W/System.err﹕ at java.io.FileInputStream.<init>(FileInputStream.java:76)
/com.exapps.videorec W/System.err﹕ at com.googlecode.mp4parser.FileDataSourceImpl.<init>(FileDataSourceImpl.java:19)
.................
But if i set the above code as:
Code:
String[] videoUris = new String[]{
/storage/emulated/0/Videos/Temp/file1.mp4,
/storage/emulated/0/Videos/Temp/file2.mp4,
/storage/emulated/0/Videos/Temp/file3.mp4
};
It does work perfectly..
Any help appreciated..!
.