<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>M3U8 on Foam 的博客</title>
    <link>https://blog.foamzou.com/tags/M3U8/</link>
    <description>Recent content in M3U8 on Foam 的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 25 Mar 2018 15:45:48 +0800</lastBuildDate>
    <atom:link href="https://blog.foamzou.com/tags/M3U8/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>下载知乎的视频(M3U8)</title>
      <link>https://blog.foamzou.com/posts/download-zhihu-vedio/</link>
      <pubDate>Sun, 25 Mar 2018 15:45:48 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/download-zhihu-vedio/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;总结：知乎的视频播放基于M3U8文件，找一种支持通过该类文件下载目标文件的工具即可，例如FFmpeg&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;  某个慵懒的周末上午刷着知乎，一位知友po了自己用鼓(还是啥?)敲击的旅行青蛙音乐的视频，评论区有小伙伴想要该视频的音频文件下载，想着举手之劳，顺便看看知乎的视频播放用的啥技术。 打开开发者工具，刷新网页并播放，观察网络请求并没有media文件的下载，倒是看到很多.ts文件不断下载中。看来是将视频切割为多个片段了，Google后了解到知乎使用的是M3U8文件，再从该文件下载片段。 什么是M3U8？这是一种utf8格式的M3U（MP3 URL的缩写）文件，最先由Fraunhofer协会（研究出MP3算法的那个）设计并用于Winplay3软件。最初只是应用于MP3等音频文件，现在广泛应用于在线流媒体和视频播放。说白了，它就是一个资源文件的播放列表索引文件，该文件记录了目标资源片段的url链接。具体请看&lt;a href=&#34;https://en.wikipedia.org/wiki/M3U&#34;&gt;维基百科&lt;/a&gt; 打开知乎视频，观察网络请求，你会发现请求了一个m3u8的资源。看看它返回的是什么：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;foam@foamdeMacBook-Pro: ~ » curl &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://vdn.vzuu.com/Act-ss-m3u8-hd/c338e5b09ab2431080a58ed4d1bb6e17/5a996be2-17da-11e8-b60a-0242ac112a05None.m3u8?auth_key=1521964082-0-0-4d282a5ef6e479a492e6182f044384f5&amp;amp;expiration=1521964082&amp;amp;disable_local_cache=0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXTM3U&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXT-X-VERSION:3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXT-X-TARGETDURATION:2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXT-X-MEDIA-SEQUENCE:0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXTINF:2.000000,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5a996be2-17da-11e8-b60a-0242ac112a05None-00001.ts?auth_key&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1521964082-0-0-c0110f185ac09713b4d717e1f2ec30ca
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXTINF:2.000000,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5a996be2-17da-11e8-b60a-0242ac112a05None-00002.ts?auth_key&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1521964082-0-0-26ad0014261d1e1f94b1273d91e9a1ec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXTINF:2.000000,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5a996be2-17da-11e8-b60a-0242ac112a05None-00003.ts?auth_key&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1521964082-0-0-ed71bc54e68662748af8eb5228525b84
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXTINF:2.000000,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5a996be2-17da-11e8-b60a-0242ac112a05None-00004.ts?auth_key&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1521964082-0-0-7ef99c02438c16e8d0eabc4955cf3f84
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 有点长，省略若干行...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXT-X-ENDLIST&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到返回了一个列表，每个片段2秒钟，包含了链接。 这里使用FFmpeg下载M3U8的资源。FFmpeg是一种处理音视频的强大的开源工具（向开源大佬们致敬），强大到令我泪流满面。该工具有win/linux/mac版本，请自行到官网或包管理器下载。 贴出命令： 根据M3U8下载资源文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://vdn.vzuu.com/Act-ss-m3u8-hd/c338e5b09ab2431080a58ed4d1bb6e17/5a996be2-17da-11e8-b60a-0242ac112a05None.m3u8?auth_key=1521964082-0-0-4d282a5ef6e479a492e6182f044384f5&amp;amp;expiration=1521964082&amp;amp;disable_local_cache=0&amp;#34;&lt;/span&gt; -c copy 1.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将MP4转换为MP3&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i 1.mp4 -f mp3 -vn 1.mp3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;  感谢科技的美好~&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
