3

是否有任何可用的开源 MP4 多路复用器/编写器 java 项目(用 java 编写的源代码,没有本机代码)?

我将 H.264 和 AAC 原始/基本流存储在单独的文件中。我想混合它们并获取包含音频和视频的 .mp4 视频文件。

提前感谢您的宝贵建议。

4

2 回答 2

3

使用isoparser库,据我所知,它是唯一可以复用 AAC 和 H264 的纯 Java 工具。它还为您描述的用例提供了一个示例。

完全披露:我是图书馆的创建者。

 AACTrackImpl audio= new AACTrackImpl(new FileInputStream("sample.aac").getChannel());
 H264TrackImpl video = new H264TrackImpl(new FileInputStream("sample.h264"));
 Movie m = new Movie();
 m.addTrack(video);
 m.addTrack(audio);

 IsoFile out = new DefaultMp4Builder().build(m);
 FileOutputStream fos = new FileOutputStream(new File("output.mp4"));
 out.getBox(fos.getChannel());
 fos.close();
于 2013-01-27T17:13:16.407 回答
1

来自isoparser的先前示例无法使用最新源编译。我正在使用以下代码将行 h264(来自 android MediaCodec)复用到 .mp4 容器中

    H264TrackImpl video;
    try {
        video = new H264TrackImpl(new FileDataSourceImpl("/home/aod/tmp/rec_1392309584754.h264"), "eng", 9, 1);
        Movie m = new Movie();
        m.addTrack(video);

        BasicContainer out = (BasicContainer) new DefaultMp4Builder().build(m);
        FileOutputStream fos = new FileOutputStream(new File("/home/aod/tmp/output.mp4"));
        out.writeContainer(fos.getChannel());
        fos.flush();                        
        fos.close();
    } catch ( IOException e) {
        e.printStackTrace();
    }
于 2014-02-13T17:57:36.327 回答