You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Javamp4parserfragmentsequencediscontinuity

在使用 Java mp4parser 库处理 MP4 文件时,可能会出现 fragment 序列间的不连续性问题。这种问题通常是由于文件中的 timestamps 不是逐帧递增而导致的,这可能会影响视频播放等操作。

要解决此问题,可以使用以下代码示例。首先,通过分析文件中每个 fragment 的起始时间,获取一个表示所有 fragment 的列表。其次,对于每个 fragment,将其起始时间加上前面 fragment 的持续时间,从而获得 fragment 的结束时间。最后,使用修正后的时间戳重新写入文件。

代码示例:

IsoFile isoFile = new IsoFile("input.mp4"); List<FragmentInfo> fragmentInfos = getFragmentInfos(isoFile);

long pts = 0; for (int i = 0; i < fragmentInfos.size(); i++) { FragmentInfo fi = fragmentInfos.get(i); fi.getTrackFragmentBox().setBaseDataOffset(0); fi.getTrackFragmentHeaderBox().setBaseDataOffset(fi.getTrackFragmentHeaderBox().getBaseDataOffset()); fi.getTrackFragmentHeaderBox().setTrackId(fi.getTrackId());

// Calculate timestamp
if (i > 0) {
    FragmentInfo prevFi = fragmentInfos.get(i - 1);
    pts += prevFi.getDuration();
}
fi.getTrackFragmentHeaderBox().setBaseMediaDecodeTime(pts);

}

IsoFile outFile = new IsoFile("output.mp4"); outFile.addBox(isoFile.getMovieBox()); outFile.write();

private List<FragmentInfo> getFragmentInfos(IsoFile isoFile) { List<TrackBox> trackBoxes = isoFile.getMovieBox().getBoxes(TrackBox.class); List<FragmentInfo> fragmentInfos = new ArrayList<>(); for (TrackBox trackBox : trackBoxes) { List<TrackFragmentBox> trackFragmentBoxes = trackBox.getBoxes(TrackFragmentBox.class); for (TrackFragmentBox trackFragmentBox : trackFragmentBoxes) { TrackFragmentHeaderBox tfhd = trackFragmentBox.getTrackFragmentHeaderBox(); FragmentInfo fragmentInfo = new

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

M3U8 视频封装格式的深度解析 | 社区征文

[EXT-X-MEDIA-SEQUENCE](#EXT-X-MEDIA-SEQUENCE)[EXTINF](#EXTINF)[EXT-X-ENDLIST](#EXT-X-ENDLIST)[EXT-X-STREAM-INF](#EXT-X-STREAM-INF)[EXT-X-BYTERANGE](#EXT-X-BYTERANGE)[EXT-X-PLAYLIST-TYPE](#... > #EXT-X-MEDIA-SEQUENCE:0>> #EXT-X-DISCONTINUITY>> #EXTINF:7.749667,>> index_0000.ts>> #EXTINF:5.875000,>> index_0001.ts>> #EXTINF:3.916667,>> index_0002.ts>> #EXT-X-ENDLIST从上面的...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

Javamp4parserfragmentsequencediscontinuity -优选内容

M3U8 视频封装格式的深度解析 | 社区征文
[EXT-X-MEDIA-SEQUENCE](#EXT-X-MEDIA-SEQUENCE)[EXTINF](#EXTINF)[EXT-X-ENDLIST](#EXT-X-ENDLIST)[EXT-X-STREAM-INF](#EXT-X-STREAM-INF)[EXT-X-BYTERANGE](#EXT-X-BYTERANGE)[EXT-X-PLAYLIST-TYPE](#... > #EXT-X-MEDIA-SEQUENCE:0>> #EXT-X-DISCONTINUITY>> #EXTINF:7.749667,>> index_0000.ts>> #EXTINF:5.875000,>> index_0001.ts>> #EXTINF:3.916667,>> index_0002.ts>> #EXT-X-ENDLIST从上面的...
Flink 使用 Proton
'fields.id.kind' = 'sequence', 'fields.id.start' = '1', 'fields.id.end' = '100000', 'fields.first_name.length' = '5', 'fields.last_name.length' = '5', 'fields.phone.min' = '000000... 业务逻辑 java /* * ByteDance Volcengine EMR, Copyright 2022. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * ...

Javamp4parserfragmentsequencediscontinuity -相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询