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 に答える