How to video record with specific sound programmatically in android?

后端 未结 4 1403
终归单人心
终归单人心 2021-01-03 00:13

I have created functionality to record video in my app.

When I play a song, that song is recorded with video and a video file is created, similar to a dubshmash app

4条回答
  •  失恋的感觉
    2021-01-03 00:43

    You can record video without audio and merge audio later on using mp4 parser like this:

    /*
     * @param videoFile path to video file
     * @param audioFile path to audiofile
    */
        public String mux(String videoFile, String audioFile) {
            Movie video = null;
            try {
                video = new MovieCreator().build(videoFile);
            } catch (RuntimeException e) {
                e.printStackTrace();
                return null;
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
        Movie audio = null;
        try {
            audio = new MovieCreator().build(audioFile);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } catch (NullPointerException e) {
    
            e.printStackTrace();
            return null;
        }
        int size = audio.getTracks().size();
        Track audioTrack = audio.getTracks().get((size - 1));
        video.addTrack(audioTrack);
    
        Container out = new DefaultMp4Builder().build(video);
    
        File myDirectory = new File(Environment.getExternalStorageDirectory(), "/Folder Name");
        if (!myDirectory.exists()) {
            myDirectory.mkdirs();
        }
        filePath = myDirectory + "/video" + System.currentTimeMillis() + ".mp4";
        try {
            RandomAccessFile ram = new RandomAccessFile(String.format(filePath), "rw");
            FileChannel fc = ram.getChannel();
            out.writeContainer(fc);
            ram.close();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    return filePath;
    }
    

    In build.gradle add following dependency

    compile 'com.googlecode.mp4parser:isoparser:1.0.5.4'
    

提交回复
热议问题