gpt4 book ai didi

java - jcodec可以将音频添加到MP4文件中吗?

转载 作者:行者123 更新时间:2023-11-30 03:18:24 29 4
gpt4 key购买 nike

致任何有使用 jcodec 经验的人,我的理解是该库还不能编码音频(但是它可以解码)。

但是,jcodec 确实有一个 PCMMP4MuxerTrack class它允许您在编码 MP4 视频时将原始 PCM 数据addSamples(ByteBuffer)添加到音轨。这会生成一个带声音的 MP4 视频文件。

我已成功将一些虚拟 PCM 音频添加到我导出的 MP4 文件中,并且 VLC 可以正常播放它,因此它似乎可以工作...

<小时/>

但如果这有效,为什么我总是看到人们说 MP4 不支持 PCM 音频 ( one source )?

我只是运气好,VLC 能够准确地播放我的带声音 MP4 文件吗?它可能无法在其他播放器/操作系统上运行吗?

最佳答案

我希望这能起作用,你告诉我..在java中打开一个AAC文件来读取它的字节

1)准备变量

int frameLength;
byte[] header = new byte[7]; //a byte array of 7 slots

2) 现在将 AAC 文件流的前 7 个字节复制到此“ header ”数组中

frameLength = (header[3]&0x03) << 11 | 
(header[4]&0xFF) << 3 |
(header[5]&0xFF) >> 5 ;

3) 从 AAC 中的第 8 个字节开始,您可以复制直到 FrameLength 减 7 的所有字节。我们减 7 是因为提取的 FrameLength 包括 AAC header (称为 ADTS header )的 7 个字节,并且在 MP4 中您有声音减去 ADTS header ,因此每个帧副本必须跳过这 7 个字节。

提示:每个帧的 header 的前 5 个字节保持相同,因此您可以在整个文件中搜索该字节模式,以识别每个 AAC 帧的位置,并且如果您知道之前的框架的起始位置然后你也可以算出长度。

现在您有了一个 AAC 框架,您可以尝试使用 FramesMP4MuxerTrack.java 它有一个函数 addFrame(MP4Packet pkt) ,其中 MP4Packet pkt 是您复制的 AAC 帧字节。每次找到新的 AAC 帧时都会调用该函数。

关于java - jcodec可以将音频添加到MP4文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31953028/

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