0

我创建了一个应用程序,女巫合并视频并添加 mp3 音频覆盖。

合并视频我没有问题,但音频没有在输出视频中播放。

这是我的代码:

 Movie[] inMovies = new Movie[count];
            for (int i = count - 1; i >= 0; i--) {

                File file = new File(lv1List.get(i));
                if (file.exists()) {
                    try {
                        inMovies[counter] = MovieCreator.build(file.getAbsolutePath());
                        counter++;
                    } catch (Exception e) {
                        Log.d("mp4parse", e.getMessage());
                    }
                }

            }
            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("vide")) {
                            videoTracks.add(t);
                        }
                    }
                }
                try {
                    MP3TrackImpl aacTrack = new MP3TrackImpl(new FileDataSourceImpl(audiopath));
                    CroppedTrack aacTrackShort = new CroppedTrack(aacTrack, 1, aacTrack.getSamples().size());
                    audioTracks.add(aacTrackShort);
                } catch (Exception e) {
                    e.printStackTrace();
                }
 Movie result = new Movie();

            try {
                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()])));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            try {
                Container out = new DefaultMp4Builder().build(result);
                String filename = Environment.getExternalStorageDirectory().getAbsolutePath() + "/MERGEDoutput" + Long.toString(System.currentTimeMillis()) + ".mp4";
                FileOutputStream fos = new FileOutputStream(new File(filename));

                out.writeContainer(fos.getChannel());
                fos.close();
            } catch (Exception e) {

            }

输出视频没有声音。输入 mp3 是通常的音乐曲目。

4

2 回答 2

1

如果您使用的是 mp4parser,请不要将 mp3 用于您的音频。而是将您的音频编码为 AAC,然后运行您的多路复用器。MP4Parser 不喜欢 mp3 文件 :)

于 2017-08-08T20:35:32.913 回答
0

我也遇到过同样的问题。

问题可能是因为您的音频路径无效。

如果您通过 ACTION_GET_CONTENT 获取 mp3 uri,请确保在使用之前解析媒体存储 uri。 从 mediastore 获取路径的代码

于 2016-01-19T18:47:18.330 回答