热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DASHMPD文件内容解析

拿个MPD内容举个例子:

拿个MPD内容举个例子:






RVZFTlRJRD0yNUY0LFZFUlNJT049MTUsRkxBRz0wLFNUQVJUVElNRT1FNkJDMTE1OTU3LERVUkFUSU9OPTUyMzUsU1RBVFVTPTQsREVTQ180RD02NDY1NzUwRDQ4NjE3NzYxNjk2OTIwNDY2OTc2NjUyRDMwNDIwNTQyNjU3MjY1Njk3NDIwNjZGQzcyMjA2NTY5NkUyMDUzNzA2OTY1NkMzRjhBNDM3MjY5NkQ2NTJENTM2NTcyNjk2NTJDMjA1NTUzNDEyMDMyMzAzMTM2OEE0MTZDNzQ2NTcyNzM2NjcyNjU2OTY3NjE2MjY1M0EyMDYxNjIyMDMxMzIsREVTQ19CQj0xNyxERVNDX0JDPTU3

<AdaptationSet id&#61;"1" group&#61;"1" contentType&#61;"audio" segmentAlignment&#61;"true" audioSamplingRate&#61;"48000" mimeType&#61;"audio/mp4" codecs&#61;"mp4a.40.2" startWithSAP&#61;"1">














<SegmentTemplate timescale&#61;"48000" initialization&#61;"KabelEins_SD-$RepresentationID$.dash" media&#61;"KabelEins_SD-$RepresentationID$-$Time$.dash">








<AdaptationSet id&#61;"2" group&#61;"2" contentType&#61;"video" par&#61;"16:9" minBandwidth&#61;"576400" maxBandwidth&#61;"2276800" maxWidth&#61;"960" maxHeight&#61;"540" minFrameRate&#61;"25" maxFrameRate&#61;"50" segmentAlignment&#61;"true" sar&#61;"1:1" mimeType&#61;"video/mp4" startWithSAP&#61;"1">
































蓝色部分是EIT信息&#xff0c;base64解密之后息的是&#xff1a;EVENTID&#61;25F4,VERSION&#61;15,FLAG&#61;0,STARTTIME&#61;E6BC115957,DURATION&#61;5235,STATUS&#61;4,DESC_4D&#61;6465750D48617761696920466976652D3042054265726569742066FC722065696E20537069656C3F8A4372696D652D53657269652C2055534120323031368A416C7465727366726569676162653A206162203132,DESC_BB&#61;17,DESC_BC&#61;57 

红色部分是加密信息&#xff0c;里面有playready 和 widevine 加密default_KID&#61;"C8EFFF27-6E1A-D9E6-693F-3E0B64C8EFEC"  kid信息。

紫色部分是音频分片信息 绿色是视频信息

来看音频信息&#xff1a;

<SegmentTemplate timescale&#61;"48000" initialization&#61;"KabelEins_SD-$RepresentationID$.dash" media&#61;"KabelEins_SD-$RepresentationID$-$Time$.dash">






timescale 时间精度&#xff0c;也就是1秒的分辨率

initialization 初始化分片格式 KabelEins_SD-$RepresentationID$.dash 根据后面的RepresentationID audio_129713_deu&#61;129200可知道该音频的初始化分片为 KabelEins_SD-audio_129713_deu&#61;129200.dash 

media 媒体文件名称KabelEins_SD-$RepresentationID$-$Time$.dash 根据后面的RepresentationID  audio_129713_deu&#61;129200和 SegmentTimeline 值可以知道实际分片&#xff1a;



t 开始时间 d duration 实际分片时间是 d/timscale &#61; 8s &#xff0c;r repeat &#xff0c;那么当前mpd文件 有三个分片 time 为&#xff1a;

76646543257932/76646543257932&#43;384000&#61;76646543641932/76646543257932&#43;384000&#43;384000&#61;76646544025932

KabelEins_SD-audio_129713_deu&#61;129200-76646543257932.dash

KabelEins_SD-audio_129713_deu&#61;129200-76646543641932.dash

KabelEins_SD-audio_129713_deu&#61;129200-76646544025932.dash

同理可以推出视频信息&#xff0c;那么针对该MPD内容我们可以得出如下的信息&#xff1a;

1.dash流里有eit信息

2.dash流为加密流含有两种加密 playready 和 widevine

3.音频流只有一个格式分片 初始化分片&#xff08;主要用于解码器预载&#xff09;KabelEins_SD-audio_129713_deu&#61;129200.dash  音频分片有三个 KabelEins_SD-audio_129713_deu&#61;129200-76646543257932.dash/KabelEins_SD-audio_129713_deu&#61;129200-76646543641932.dash/KabelEins_SD-audio_129713_deu&#61;129200-76646544025932.dash 每个分片时长8s

4.视频流有多个带宽&#xff0c;分片时长为8s &#xff1a;

初始化分片 KabelEins_SD-video&#61;576400.dash 分片信息 KabelEins_SD-video&#61;576400-958081790714.dash/KabelEins_SD-video&#61;576400-958081795514.dash/KabelEins_SD-video&#61;576400-958081800314.dash/KabelEins_SD-video&#61;576400-958081805114.dash/KabelEins_SD-video&#61;576400-958081809914.dash

初始化分片 KabelEins_SD-video&#61;1138400.dash 分片信息 KabelEins_SD-video&#61;1138400-958081790714.dash/KabelEins_SD-video&#61;1138400-958081795514.dash/KabelEins_SD-video&#61;1138400-958081800314.dash/KabelEins_SD-video&#61;1138400-958081805114.dash /KabelEins_SD-video&#61;576400-958081809914.dash

初始化分片 KabelEins_SD-video&#61;2276800.dash 分片信息 KabelEins_SD-video&#61;2276800-958081790714.dash/KabelEins_SD-video&#61;2276800-958081795514.dash/KabelEins_SD-video&#61;2276800-958081800314.dash/KabelEins_SD-video&#61;2276800-958081805114.dash/KabelEins_SD-video&#61;576400-958081809914.dash


推荐阅读
  • DirectShow Filter 开发指南
    本文总结了 DirectShow Filter 的开发经验,重点介绍了 Source Filter、In-Place Transform Filter 和 Render Filter 的实现方法。通过使用 DirectShow 提供的类,可以简化 Filter 的开发过程。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 每种编程语言都有其独特的完成任务的方式,这也说明了为什么有这么多语言可供选择。在JimHall的《不同的编程语言如何完成相同的事情》文章中,他演示了13种不同的语言如何使用不同的语 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在Effective Java第三版中,建议在方法返回类型中优先考虑使用Collection而非Stream,以提高代码的灵活性和兼容性。 ... [详细]
  • 在现代Web开发中,HTML5 Canvas常用于图像处理和绘图任务。本文将详细介绍如何将Canvas中的图像导出并上传至服务器,适用于拼图、图片编辑等场景。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • IO流——字符流 BufferedReader / BufferedWriter 进行文件读写
    目录节点流、处理流读文件:BufferedReader的使用写文件:BufferedWriter的使用节点流处理流节点流和处理流的区别和联系字符流Buf ... [详细]
  • 本文总结了近年来在实际项目中使用消息中间件的经验和常见问题,旨在为Java初学者和中级开发者提供实用的参考。文章详细介绍了消息中间件在分布式系统中的作用,以及如何通过消息中间件实现高可用性和可扩展性。 ... [详细]
  • 在Java开发中,如何利用ProcessBuilder类调用外部程序是一个常见的需求。本文将详细介绍ProcessBuilder类的使用方法,并提供示例代码帮助你更好地理解和应用。 ... [详细]
  • 本文介绍了如何在 MapReduce 作业中使用 SequenceFileOutputFormat 生成 SequenceFile 文件,并详细解释了 SequenceFile 的结构和用途。 ... [详细]
  • 本文介绍了一种通过设置主题(Theme)来实现快速启动的Android引导页,并详细说明了如何避免因不同屏幕分辨率导致的图片拉伸问题。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • 本文探讨了在使用JavaMail发送电子邮件时,抄送功能未能正常工作的问题,并提供了详细的代码示例和解决方法。 ... [详细]
  • Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ... [详细]
author-avatar
俊铭士弘政翰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有