0

Android MediaRecorder を介してビデオを作成しています。
これは、ビデオを追加するコードです。
オーディオは常にビデオよりも長くなります
.

private void doAppend(String _firstVideox, String _secondVideox,
            String _newName) {
        try {


            FileInputStream fis1 = new FileInputStream(_firstVideox);
            FileInputStream fis2 = new FileInputStream(_secondVideox);

            Movie[] inMovies = new Movie[] {
                    MovieCreator.build(fis1.getChannel()),
                    MovieCreator.build(fis2.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()])));
            }

            IsoFile out = new DefaultMp4Builder().build(result);

            String filename = _newName;
            lastAppendOut = filename;

            FileOutputStream fos = new FileOutputStream(filename);
            FileChannel fco = fos.getChannel();

            fco.position(0);
            out.getBox(fco);
            fco.close();
            fos.close();
            fis1.close();
            fis2.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

これをチェックして、私を助けてください。どうすればいいですか。

4

1 に答える 1

0

Androidデバイスを使用してビデオを作成すると、オーディオとビデオがまったく同じではないという問題ではなかったJavaCppと思います...オーディオは少し大きく 、 0.1秒から0.25秒です。最初にそれらを個別に追加すると、大きな違いが生じます。 私の場合、30 から 40 のビデオを追加しましたが、ビデオ オーディオの差が 14 秒になることもあり、非常に気がかりでした... 別の方法として、すべてのビデオを最後 (約 0.5 秒) からトリミングし、オーディオ ビデオ ストリームを作成しました。同等。ここで私がしたことを見つけることができます。
MediaRecorder

JavaCpp


私はあなたの人々を助けたことを願っています.

于 2014-10-29T07:37:40.367 に答える