【音视频】M3U8与HLS详解
创始人
2024-09-25 16:24:09
0

文章目录

  • 前言
    • M3U8详解
      • M3U8 是什么
      • M3U8 文件的组成部分
      • 示例 M3U8 文件
    • HLS
      • HLS(HTTP Live Streaming)视频封装格式
        • HLS 视频封装格式的主要组成部分
      • 示例 HLS 主播放列表文件(Master Playlist)
      • 示例 HLS 媒体播放列表文件(Media Playlist)
      • HLS 封装格式的特点
      • HSL(HTTP Stream Live)的视频封装格式
      • TS 文件介绍
      • TS 文件的优势
      • HLS 使用 TS 视频文件的原因
      • 示例 TS 文件结构
  • 总结


前言

M3U8 和 HLS 是音视频流媒体领域中常见的技术,广泛应用于在线视频点播(VOD)和直播(Live)场景。M3U8 是一种基于文本的播放列表文件格式,主要用于描述媒体文件的位置和顺序,而 HLS(HTTP Live Streaming)是一种流媒体传输协议,由 Apple 公司提出。HLS 使用 M3U8 文件来管理和播放流媒体内容,能够适应不同的网络环境,实现高质量、低延迟的流媒体传输。


M3U8详解

M3U8 是什么

M3U8 是一种基于文本的文件格式,用于描述音视频文件的播放列表。它是 M3U 文件的一种扩展,M3U 文件主要用于音频播放列表,而 M3U8 则用于音视频流媒体播放。M3U8 文件使用 UTF-8 编码,通常用于 HTTP Live Streaming (HLS) 协议中,作为媒体分片的索引文件。

M3U8 文件的组成部分

一个典型的 M3U8 文件包含多个标签,每个标签都以井号(#)开头。以下是 M3U8 文件的主要组成部分:

  1. 文件头

    • #EXTM3U:所有 M3U8 文件的起始标签,表明这是一个 M3U8 文件。
  2. 基本标签

    • #EXTINF:,</code>:描述媒体分片的信息。<code><duration></code> 是分片的时长(以秒为单位),<code><title></code> 是可选的分片标题。</li><li>URL:实际媒体文件的位置,通常紧跟在 <code>#EXTINF</code> 标签之后。</li></ul></li><li><p><strong>可选标签</strong></p><ul><li><code>#EXT-X-TARGETDURATION:<seconds></code>:指定媒体分片的最大时长。</li><li><code>#EXT-X-MEDIA-SEQUENCE:<number></code>:定义播放列表中第一个分片的序列号。</li><li><code>#EXT-X-VERSION:<number></code>:指定播放列表文件的协议版本。</li><li><code>#EXT-X-ALLOW-CACHE:<YES|NO></code>:指示客户端是否可以缓存播放列表文件。</li><li><code>#EXT-X-ENDLIST</code>:指示播放列表的结束,常用于点播流。</li><li><code>#EXT-X-KEY:<attributes></code>:描述用于解密媒体分片的密钥信息,包含多个属性(如方法、URI 等)。</li><li><code>#EXT-X-STREAM-INF:<attributes></code>:用于描述变码率(多码率)流信息,包含分辨率、带宽等属性。</li></ul></li></ol><h4>示例 M3U8 文件</h4> <pre><code class="prism language-plaintext">#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10.0, http://example.com/segment0.ts #EXTINF:10.0, http://example.com/segment1.ts #EXTINF:10.0, http://example.com/segment2.ts #EXT-X-ENDLIST </code></pre> <p>以上示例展示了一个简单的 M3U8 文件,其中包含版本信息、目标时长、媒体序列号和三个媒体分片。每个分片的时长为 10 秒,URL 指向实际的媒体文件位置。最后,<code>#EXT-X-ENDLIST</code> 标签表示播放列表的结束。</p><h3>HLS</h3><h4>HLS(HTTP Live Streaming)视频封装格式</h4><p>HLS(HTTP Live Streaming)是由 Apple 公司开发的一种流媒体传输协议,广泛用于直播和点播视频流的传输。HLS 协议将视频文件分割成一系列较小的媒体文件(通常称为分片),通过 HTTP 进行传输,并使用 M3U8 播放列表文件来管理这些分片。</p><h5>HLS 视频封装格式的主要组成部分</h5><ol><li><p><strong>M3U8 播放列表文件</strong></p><ul><li><strong>Master Playlist(主播放列表)</strong>:用于描述不同比特率和分辨率的变码率流,每个流有一个相应的 Media Playlist。</li><li><strong>Media Playlist(媒体播放列表)</strong>:包含实际的媒体分片的 URL 和相关信息。每个分片的 URL 通常紧跟在 <code>#EXTINF</code> 标签之后。</li></ul></li><li><p><strong>媒体分片</strong></p><ul><li><strong>.ts 文件(MPEG-TS)</strong>:HLS 主要使用 MPEG-TS(MPEG Transport Stream)格式来封装视频和音频数据。每个 .ts 文件是一个视频分片,包含一段视频和音频数据。</li><li><strong>.aac 文件</strong>:在某些情况下,音频数据也可以单独存储为 .aac 文件。</li></ul></li></ol><h4>示例 HLS 主播放列表文件(Master Playlist)</h4> <pre><code class="prism language-plaintext">#EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=1280000,RESOLUTION=640x360 http://example.com/low.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=2560000,RESOLUTION=1280x720 http://example.com/mid.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=5120000,RESOLUTION=1920x1080 http://example.com/high.m3u8 </code></pre> <h4>示例 HLS 媒体播放列表文件(Media Playlist)</h4> <pre><code class="prism language-plaintext">#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:0 #EXTINF:10.0, http://example.com/segment0.ts #EXTINF:10.0, http://example.com/segment1.ts #EXTINF:10.0, http://example.com/segment2.ts #EXT-X-ENDLIST </code></pre> <h4>HLS 封装格式的特点</h4><ul><li><strong>分段传输</strong>:将视频文件分割成小的分片文件,便于在不稳定的网络环境下进行传输。</li><li><strong>自适应比特率</strong>:支持不同比特率和分辨率的流,客户端可以根据网络状况动态选择合适的流进行播放。</li><li><strong>基于 HTTP 传输</strong>:使用标准的 HTTP 协议进行传输,兼容性强,易于通过 CDN(内容分发网络)进行分发。</li></ul><h4>HSL(HTTP Stream Live)的视频封装格式</h4><p>目前并没有广泛承认的 HSL(HTTP Stream Live)作为一种独立的流媒体传输协议,HLS(HTTP Live Streaming)是标准且被广泛应用的协议。HLS 已经被许多视频流媒体服务和播放器广泛支持。如果您指的是某种自定义或特定公司的流媒体技术,可能需要具体说明其详细信息。</p><p>总结而言,HLS 是一种成熟且广泛应用的流媒体传输协议,使用 M3U8 播放列表文件和 MPEG-TS 分片文件来实现稳定、高效的流媒体播放。</p><h4>TS 文件介绍</h4><p>TS(Transport Stream,传输流)文件是一种用于多媒体数据传输和存储的容器格式。TS 文件主要用于传输和存储视频、音频和数据,特别是在广播和流媒体应用中。MPEG-TS(MPEG Transport Stream)是 TS 文件的一个常见实现,它是一种标准化的数字容器格式,用于传输音频、视频和数据。TS 文件格式设计目的是在不可靠的传输介质(如广播网络或互联网)上提供可靠的传输。</p><h4>TS 文件的优势</h4><ol><li><p><strong>抗误码能力强</strong>:TS 文件设计用于在不可靠的传输介质上工作,具有很强的纠错能力,能够在传输过程中有效应对数据丢失和错误。</p></li><li><p><strong>实时传输</strong>:TS 文件支持实时数据流传输,适合用于直播和流媒体应用,能够保证数据的实时性。</p></li><li><p><strong>灵活的多路复用</strong>:TS 文件可以包含多个音视频流和数据流,并且可以灵活地进行多路复用和解复用,支持多种分辨率和比特率的组合。</p></li><li><p><strong>同步性好</strong>:TS 文件格式通过时间戳(PTS/DTS)保证了音频和视频流的同步,确保了播放过程中的同步性和一致性。</p></li><li><p><strong>标准化</strong>:MPEG-TS 是国际标准,得到广泛支持和应用,兼容性好,能够与多种硬件和软件设备配合使用。</p></li></ol><h4>HLS 使用 TS 视频文件的原因</h4><ol><li><p><strong>广泛支持</strong>:MPEG-TS 是一个成熟的国际标准,得到了广泛的支持。几乎所有的流媒体服务器和播放器都支持 TS 文件格式,使其成为流媒体传输的理想选择。</p></li><li><p><strong>分片传输</strong>:HLS 协议将视频流分割成多个小的 TS 分片,每个分片包含几秒钟的视频和音频数据。这样可以在网络环境不稳定的情况下,逐片传输和播放,减少播放中断的可能性。</p></li><li><p><strong>实时性</strong>:TS 文件格式支持实时流媒体传输,适合用于直播等需要实时传输的场景。HLS 使用 TS 文件可以保证数据的实时传输和播放。</p></li><li><p><strong>纠错能力</strong>:由于 TS 文件具有很强的纠错能力,能够在传输过程中应对数据丢失和错误,确保传输的可靠性和数据的完整性。</p></li><li><p><strong>多路复用和同步</strong>:TS 文件支持多路复用,可以在一个文件中同时包含多个音视频流和数据流。通过时间戳(PTS/DTS),TS 文件能够保证音视频的同步播放,提供良好的用户体验。</p></li></ol><h4>示例 TS 文件结构</h4><p>TS 文件由多个固定大小(188 字节)的数据包组成,每个数据包包含头部和有效负载。头部通常包含同步字节、标志和 PID(Packet Identifier),用于标识和管理不同的流。</p> <pre><code class="prism language-plaintext">| 188 bytes TS Packet | |----------------------| | Sync Byte | Header | Payload | </code></pre> <hr /><h2>总结</h2><p>M3U8 和 HLS 是现代流媒体技术的核心组成部分,它们通过简便的播放列表格式和高效的传输协议,实现了稳定、灵活的音视频播放体验。M3U8 文件提供了对媒体资源的详细描述,而 HLS 则通过分段传输和自适应比特率技术,保证了在各种网络条件下的流畅播放。随着流媒体应用的不断发展,M3U8 和 HLS 的使用场景将更加广泛,为用户提供更好的音视频服务。</p><link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-f23dff6052.css" rel="stylesheet"><link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-c216769e99.css" rel="stylesheet"> <!--end::Text--> </div> <!--end::Description--> <div class="mt-5"> <!--关键词搜索--> </div> <div class="mt-5"> <p class="fc-show-prev-next"> <strong>上一篇:</strong><a href="/dnzs/34418.html">Qt框架下实现商品库存管理系统</a><br> </p> <p class="fc-show-prev-next"> <strong>下一篇:</strong><a href="/dnzs/34420.html">4、设备树(DT)</a> </p> </div> <!--begin::Block--> <div class="d-flex flex-stack mb-2 mt-10"> <!--begin::Title--> <h3 class="text-dark fs-5 fw-bold text-gray-800">相关内容</h3> <!--end::Title--> </div> <div class="separator separator-dashed mb-9"></div> <!--end::Block--> <div class="row g-10"> </div> </div> <!--end::Table widget 14--> </div> <!--end::Col--> <!--begin::Col--> <div class="col-xl-4 mt-0"> <!--begin::Chart Widget 35--> <div class="card card-flush h-md-100"> <!--begin::Header--> <div class="card-header pt-5 "> <!--begin::Title--> <h3 class="card-title align-items-start flex-column"> <!--begin::Statistics--> <div class="d-flex align-items-center mb-2"> <!--begin::Currency--> <span class="fs-5 fw-bold text-gray-800 ">热门资讯</span> <!--end::Currency--> </div> <!--end::Statistics--> </h3> <!--end::Title--> </div> <!--end::Header--> <!--begin::Body--> <div class="card-body pt-3"> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/6f9a5ab10dc7dd0.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186293.html" class="text-dark fw-bold text-hover-primary fs-6">安卓系统为什么不封闭,揭秘安卓...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有想过,为什么安卓系统那么开放,却不像苹果iOS那样封闭呢?这背后可是有着不少有趣的故事和原因...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/cde449b91d4070.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186292.html" class="text-dark fw-bold text-hover-primary fs-6">安卓系统更新包多大,解析不同版...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有发现,每次安卓系统更新,手机里都会多出那么几个G的文件?这可真是让人好奇,安卓系统更新包究竟...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/cb6351e9eb74b15.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186291.html" class="text-dark fw-bold text-hover-primary fs-6">安卓手机安装双系统吗,安卓手机...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有想过,你的安卓手机是不是也能像电脑一样,装上两个系统,一个用来工作,一个用来娱乐?没错,这就...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/2d87f94055f4116.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186290.html" class="text-dark fw-bold text-hover-primary fs-6">oppo会升级安卓系统,畅享最...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你知道吗?最近有个大消息在手机圈里炸开了锅,那就是OPPO要升级安卓系统啦!这可不是什么小打小闹的更...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/7f9bf3cc40c0e63.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186289.html" class="text-dark fw-bold text-hover-primary fs-6">安卓系统上安装windows,...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有想过,在安卓手机上安装Windows系统?听起来是不是有点不可思议?但你知道吗,这竟然是可能...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/1eac7a07a62d3ba.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186287.html" class="text-dark fw-bold text-hover-primary fs-6">安卓系统怎么进运行框,安卓系统...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有想过,你的安卓手机里有一个超级实用的功能,那就是运行框!它就像是一个小助手,帮你快速找到正在...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/6ff36fee3cce404.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186286.html" class="text-dark fw-bold text-hover-primary fs-6">安卓系统电视无图像设置,安卓电...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你家的安卓系统电视突然没图像了?别急,让我来给你支个招,让你轻松解决这个问题!一、检查电源和连接线首...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/989db2a38055c8.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186285.html" class="text-dark fw-bold text-hover-primary fs-6">安卓机建议升级系统吗,提升性能</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有发现,你的安卓手机最近有点儿慢吞吞的?是不是在犹豫要不要升级系统呢?别急,让我来给你好好分析...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/2e403290ae6b5b9.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186283.html" class="text-dark fw-bold text-hover-primary fs-6">升级不了安卓系统升级,探寻升级...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有遇到过这种情况?手机里的安卓系统突然告诉你,它需要升级,但你左等右等,就是升不上去。这可真是...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/d639ab6d2e0377d.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186282.html" class="text-dark fw-bold text-hover-primary fs-6">备用安卓系统手机推荐,盘点热门...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有想过,如果你的手机突然罢工了,你会怎么办?别担心,今天我就要给你安利几款备用安卓系统手机,让...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/daf94b8a6dd8a9d.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186281.html" class="text-dark fw-bold text-hover-primary fs-6">旧安卓系统ipad无法更新系统...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有遇到过这种情况?你的旧安卓系统iPad突然告诉你,它无法更新系统了!是不是瞬间感觉心里有点小...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/8d08e300a8c3b46.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186280.html" class="text-dark fw-bold text-hover-primary fs-6">运行安卓6系统命令大全,全面掌...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有想过,你的安卓手机里隐藏着无数强大的功能,只等着你去发现和探索呢?今天,就让我带你走进安卓6...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/9f2110c786d951b.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186277.html" class="text-dark fw-bold text-hover-primary fs-6">安卓系统简笔画教程下载,轻松绘...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有想过,用简单的线条就能把复杂的安卓系统画出来?没错,就是那种一看就懂,一画就上手的感觉!今天...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/8ef18f348897cd9.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186276.html" class="text-dark fw-bold text-hover-primary fs-6">华为如何鸿蒙转安卓系统,轻松实...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你知道吗?最近华为的大动作可是让整个科技圈都沸腾了!他们竟然把鸿蒙系统转到了安卓系统上,这可真是让人...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/860e96c4d9be4a3.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186275.html" class="text-dark fw-bold text-hover-primary fs-6">安卓10系统的问题,安卓10系...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有发现,自从你的手机升级到安卓10系统后,好像有点不对劲呢?别急,让我来给你细细道来,看看安卓...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/42a960c5178b78.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186273.html" class="text-dark fw-bold text-hover-primary fs-6">安卓系统苹果搞笑视频,苹果搞笑...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你知道吗?在互联网的世界里,搞笑视频可是个永恒的热门话题。尤其是那些结合了安卓系统和苹果手机的搞笑片...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/0604c5ca044d610.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186272.html" class="text-dark fw-bold text-hover-primary fs-6">卡片机改造安卓系统,探索改造之...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有想过,那些曾经陪伴我们记录美好时光的卡片机,现在竟然也能焕发第二春呢?没错,就是那些小巧便携...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/606aa37687e6181.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186268.html" class="text-dark fw-bold text-hover-primary fs-6">装安卓系统倒车出不来,智能科技...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有遇到过这样的事情:手机装了个安卓系统,结果倒车的时候出不来啦?这可不是闹着玩的,简直让人抓狂...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/3096c57998280b8.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186267.html" class="text-dark fw-bold text-hover-primary fs-6">定制安卓系统哪家好点儿,哪家服...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">你有没有想过,手机系统就像是个人的衣服,每个人都需要找到最适合自己的那一款?今天,咱们就来聊聊定制安...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('https://img.pic99.top/ittdroid/202508/609fc87ef19ac01.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/dnzs/186264.html" class="text-dark fw-bold text-hover-primary fs-6">台电用回安卓系统吗,开启智能新...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">最近有个话题在科技圈里炒得挺热的,那就是台电是不是要用回安卓系统了?你有没有想过,这个小小的决定背后...</span> </div> <!--end::Title--> </div> </div> <!--end::Body--> </div> <!--end::Chart Widget 35--> </div> <!--end::Col--> </div> </div> <!--end::Content container--> </div> <!--end::Content--> </div> <!--end::Content wrapper--> <!--begin::Footer--> <div id="kt_app_footer" class="app-footer"> <!--begin::Footer container--> <div class="app-container container-xxl d-flex flex-column flex-md-row flex-center flex-md-stack py-3"> <!--begin::Copyright--> <div class="text-dark order-2 order-md-1"> <span class="text-muted fw-semibold me-1">2025 ©</span> 泰达科技网<a href="http://tansuo.caiding5.cn/">财丁探索</a><a href="http://news.weishitang.cn/">威视资讯</a><a href="http://www.bitekongjian.com/">比特空间</a><a href="http://www.tdroid.net/">太卓网</a><a href="http://www.nengyuan100.com/">能源100</a><a href="http://www.gangyiku.com/">易库网</a> </div> <!--end::Copyright--> <!--begin::Menu--> <ul class="menu menu-gray-600 menu-hover-primary fw-semibold order-1"> <li class="menu-item"> <a href="/news/" target="_blank" class="menu-link px-2">科技资讯</a> </li> <li class="menu-item"> <a href="/dnzs/" target="_blank" class="menu-link px-2">电脑知识</a> </li> </ul> <!--end::Menu--> </div> <!--end::Footer container--> </div> <!--end::Footer--> </div> <!--end:::Main--> </div> <!--end::Wrapper--> </div> <!--end::Page--> </div> <!--end::App--> <div id="kt_scrolltop" class="scrolltop" data-kt-scrolltop="true"> <!--begin::Svg Icon | path: icons/duotune/arrows/arr066.svg--> <span class="svg-icon"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect opacity="0.5" x="13" y="6" width="13" height="2" rx="1" transform="rotate(90 13 6)" fill="currentColor"></rect> <path d="M12.5657 8.56569L16.75 12.75C17.1642 13.1642 17.8358 13.1642 18.25 12.75C18.6642 12.3358 18.6642 11.6642 18.25 11.25L12.7071 5.70711C12.3166 5.31658 11.6834 5.31658 11.2929 5.70711L5.75 11.25C5.33579 11.6642 5.33579 12.3358 5.75 12.75C6.16421 13.1642 6.83579 13.1642 7.25 12.75L11.4343 8.56569C11.7467 8.25327 12.2533 8.25327 12.5657 8.56569Z" fill="currentColor"></path> </svg> </span> <!--end::Svg Icon--> </div> <!--begin::Javascript--> <script>var hostUrl = "/static/default/pc/";</script> <!--begin::Global Javascript Bundle(mandatory for all pages)--> <script src="/static/default/pc/plugins/global/plugins.bundle.js"></script> <script src="/static/default/pc/js/scripts.bundle.js"></script> <!--end::Global Javascript Bundle--> <!--end::Javascript--> </body> <!--end::Body--> </html>