Android Studio - 附加两个视频但显示黑屏

标签 android android-studio ffmpeg mp4parser

首先你好,
当我在 mp4 文件末尾添加另一个 mp4 文件时,视频看起来完全黑屏,但我可以得到视频声音。
如果我在它的末尾添加一个视频的副本,我看到没有问题,但这不是我想要的场景。
与 FFmpeg 库合并时出现“文本重定位”错误。 (当我更改此库版本时,此问题已解决,但我还有其他问题。因此,mp4parser 是我看到的替代方案。)
允许合并视频的代码如下。从现在开始谢谢你。

private void appendTwoVideos(String firstVideoPath, String secondVideoPath) {
    try {
        Movie[] inMovies = new Movie[2];

        inMovies[0] = MovieCreator.build(firstVideoPath);
        inMovies[1] = MovieCreator.build(secondVideoPath);

        List<Track> videoTracks = new LinkedList<>();
        List<Track> audioTracks = new LinkedList<>();

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

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

        @SuppressWarnings("resource")
        FileChannel fc = new RandomAccessFile(DIRECTORY_PATH + "output.mp4", "rw").getChannel();
        out.writeContainer(fc);
        fc.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

最佳答案

这可能是因为您尝试附加或加入的视频具有不同的帧速率。例如,一个可能是慢动作视频,另一个可能是快进/延时视频。
在附加期间,音频工作正常,但 android 没有提供通过使用 is 库来附加不同帧率视频的功能。所以你会看到一个带有音频的黑屏。
我建议使用 FFmpeg 库。虽然它很慢,但会给你想要的结果。

关于Android Studio - 附加两个视频但显示黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62818290/

相关文章:

android - 单 Activity 架构和多个 fragment (嵌套 fragment )的后退按钮问题

android - ConstraintLayout 编辑器添加了不必要的约束或边距,使其无法使用

java - 如何在 android.webkit.WebView(s) 之间共享缓存,包括 cookie

java - 无法让屏幕显示设置选项

git - 为什么在Android Studio 3.4.2 中从Git clone 项目时只创建本地master 分支?

ffmpeg - 通过设置高度比修改后如何让ffmpeg计算宽度?

java - Spring Boot 提供 m3u8 播放列表

audio - FFMPEG将mp4文件和mp3文件合并成mp4

android - 如何为涟漪效应填充

java - 对象未从 ListView 中删除