How to add pause and resume feature while recoding video in android

前端 未结 1 618
渐次进展
渐次进展 2021-02-02 01:58

Requirement :

I want to develop an app that has Video Recoding with pause and resume feature.

I Have Tried :

相关标签:
1条回答
  • 2021-02-02 02:31

    Finally i find the answer :)
    i research about ffmpeg it seems more deeply and some more days digging around it but can't get
    proper resource for ffmepg and i try to use mp4parser lib and successfully completed my requirement.

    Code For Merging Multiple Video

    public class MergeVide extends AsyncTask<String, Integer, String> {
    
        @Override
        protected void onPreExecute() {
            progressDialog = ProgressDialog.show(Video.this,
                    "Preparing for upload", "Please wait...", true);
            // do initialization of required objects objects here
        };
    
        @Override
        protected String doInBackground(String... params) {
            try {
                String paths[] = new String[count];
                Movie[] inMovies = new Movie[count];
                for (int i = 0; i < count; i++) {
                    paths[i] = path + filename + String.valueOf(i + 1) + ".mp4";
                    inMovies[i] = MovieCreator.build(new FileInputStream(
                            paths[i]).getChannel());
                }
                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()])));
                }
    
                BasicContainer out = (BasicContainer) new DefaultMp4Builder()
                        .build(result);
    
                @SuppressWarnings("resource")
                FileChannel fc = new RandomAccessFile(String.format(Environment
                        .getExternalStorageDirectory() + "/wishbyvideo.mp4"),
                        "rw").getChannel();
                out.writeContainer(fc);
                fc.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String mFileName = Environment.getExternalStorageDirectory()
                    .getAbsolutePath();
            mFileName += "/wishbyvideo.mp4";
            filename = mFileName;
            return mFileName;
        }
    
        @Override
        protected void onPostExecute(String value) {
            super.onPostExecute(value);
            progressDialog.dismiss();
            Intent i = new Intent(Video.this, VideoUpload.class);
            i.putExtra("videopath", value);
            i.putExtra("id", id);
            i.putExtra("name", name);
            i.putExtra("photo", photo);
            startActivity(i);
            finish();
            }
    }
    


    the count is nothing but video file count.

    the above code for merge more video and send the final code to another activity in that i have decided to preview the video.
    before using above code make sure use mp4parser lib.

    0 讨论(0)
提交回复
热议问题