【问题标题】:Audio Video out of sync when i append videos - Android JavaCpp附加视频时音频视频不同步 - Android JavaCpp
【发布时间】:2014-12-18 22:59:20
【问题描述】:

我正在通过 Android MediaRecorder 创建视频..
这是我附加视频的代码,
音频总是比视频长....
视频在最后停留 3 - 5 秒,而音频继续播放。

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();
        }
    }

请检查一下并帮助我,我该怎么办。

【问题讨论】:

    标签: java android append android-mediaplayer javacpp


    【解决方案1】:

    我想这不是JavaCpp的问题,
    当我们在android设备中使用MediaRecorder制作视频时,音频和视频并不完全相同...
    音频有点大,即 0.1s 到 0.25s
    因此,当我们使用JavaCpp 附加视频时,最后将音频视频流汇集在一起​​,首先分别附加它们会产生巨大的差异。
    就我而言,我附加了 30 到 40 个视频,有时视频音频差异达到 14 秒,这非常令人不安...
    所以我使用的另一种方法是从最后修剪每个视频(大约 0.5 秒),这使得音频视频流相等。
    Here 你可以找到我所做的。

    希望我能帮助到你们。

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 1970-01-01
      • 2020-10-04
      • 2012-12-16
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 2016-05-26
      相关资源
      最近更新 更多