gpt4 book ai didi

安卓编码器复用器 : raw h264 to mp4 container

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:35 28 4
gpt4 key购买 nike

我创建了一个 h264 原始视频文件,并且能够在 Android 4.3 及更高版本上使用 Android MediaMuxer 对其进行混合。现在我需要支持 Android 版本 4.1 和 4.2。我找到了 Jcodec。有一个这样做的例子:

https://github.com/jcodec/jcodec/blob/master/samples/main/java/org/jcodec/samples/mux/AVCMP4Mux.java

但我在第 70 行收到 java.nio.ReadOnlyBufferException 异常:

H264Utils.encodeMOVPacket(数据);

我猜这段代码不适用于 Android?我该如何解决。熟悉 Jcodec 的人可以帮助解决这个问题吗?

最佳答案

我放弃了 Jcodec。它暴露了太多编解码器内部的东西,而且根本没有关于使用的文档。 Mp4Parser为我完成了这项工作,而且很简单。这是我将原始 h264 视频复用到 mp4 容器中的代码:

    String h264Path = "path to my h264 file, generated by Android MediaCodec";

DataSource videoFile = new FileDataSourceImpl(h264Path);

H264TrackImpl h264Track = new H264TrackImpl(videoFile, "eng", 5, 1); // 5fps. you can play with timescale and timetick to get non integer fps, 23.967 is 24000/1001

Movie movie = new Movie();

movie.addTrack(h264Track);

Container out = new DefaultMp4Builder().build(movie);
FileOutputStream fos = new FileOutputStream(new File("path to my generated file.mp4"));
out.writeContainer(fos.getChannel());

fos.close();

已找到代码示例 here .循环已关闭!现在我的视频编码器实现适用于 Android 4.1 及更高版本,不需要 FFMpeg

顺便说一句:Android 股票“画廊”应用程序使用 Mp4Parser,列在其开源许可证中。

关于安卓编码器复用器 : raw h264 to mp4 container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22996378/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com