当前位置: 首页 > 工具软件 > MPD > 使用案例 >

由M3U8(TS)或MPD(M4S)获取视频

司空俊悟
2023-12-01

 

现在许多视频网站都将视频切片进行实时流传输。我遇到过两种描述文件:m3u8和mpd。下面分别谈谈怎么由m3u8(ts)或mpd(m4s)获取视频。

1.m3u8

方法一:用ffmpeg提取、合并m3u8中的ts视频。这个方法我有的时候成功,有的时候出错,就不介绍了。

方法二:用文本编辑器(比如记事本、notepad++等)打开*.m3u8文件,里边可能记录了不同分辨率的.m3u8地址,也有可能是一连串命名规律的.ts视频地址。如果里边没有.ts的视频地址,则选择我们需要的分辨率的.m3u8下载,直到获取.ts视频地址,用批量下载工具(比如Internet Download Manager、浏览器插件Chrono下载管理器等)下载.ts视频,最后在cmd中把它们合并成一个视频,合并代码是copy /b   文件1+文件2+...+文件名n   输出后的文件名,例如copy /b d:\*.ts combine.ts(*表示批量处理即合并文件夹下所有的ts文件)。这样就大功告成了!

如果我没有m3u8文件,可以打开浏览器,按f12调出开发者工具,选择network,然后打开视频页面,在network下看看有没有加载m3u8。你也有可能看到一堆.ts的链接,那么获取其中一个ts的地址,再把视频进度条拉倒最后,查看最后一次加载的ts地址,通过这两个地址,我们可以得到这一系列ts的命名规律,用批量下载工具下载它们,最后在cmd中用上面的方法合成就可以了!

如果我不想下载完整的视频,而只想截取其中的几分钟,我通常的做法是只下载m3u8文件,用PotPlayer打开,利用PotPlayer的录制视频功能得到需要的片段,这样不需要下载完整的视频浪费等待的时间或流量,也省去了合并ts这一步骤。

利用ffmpeg下载m3u8文件,命令与参数讲解。

  • ffmpeg -i https://host/index.m3u8 -c copy moguo.mp4
  • -i 指定m3u8文件地址,支持http、https路径
  • -c copy 将ts文件合并成指定文件格式,例如mp4
  •  

2.mpd

mpd的地位和m3u8一样,只是描述视频的文本而不是视频。所以用文本编辑器阅读mpd。

mpd内描述了两种类型(mimeType)的文件:video和audio,即视频和音频,每种类型又包括了一个*.mp4的视频头和一连串*.m4s视频。操作思路是先分别合并视频和音频的*.mp4+*.m4s,得到video.mp4和audio.mp4,最后再合并音频和视频。下面说说具体的操作步骤。

打开mpd,找到media=”xxxxx$RepresentationID$-$Number$.m4s” initialization=”xxxxx$RepresentationID$.mp4″

上面的m4s和mp4的文件名只是一个例子。我就以这个例子来讲,大家灵活变通。这段代码至少出现两次,一个是音频一个是视频。$RepresentationID$可以在后面的<Representation id=”xxx”…></Representation>里找到,而且这里面还提供了文件类型(video或audio)、分辨率等等信息,我们可以选择我们需要的视频和音频对应的RepresentationID。$Number$通常是从1开始一直增加到某个整数(因为m4s有很多个)这个大家下载的时候可以试探一下,也可以用上面提到的用开发者工具的方法看看最后截止到那个文件名。得到了*.m4s和*.mp4的地址,用批量下载工具(比如Internet Download Manager、浏览器插件Chrono下载管理器等)下载就可以了。建议音频文件下载到一个文件夹,视频文件下载到另一个文件夹,方便之后合并,否则容易搞混。

这样我们就得到了视频和音频的*.mp4+*.m4s。但这时候的*.mp4是看不了的,因为它只是一个视频(音频)头。在cmd中合并它们。合并代码是copy /b   文件1+文件2+...+文件名n   输出后的文件名,例如copy /b d:\video\1.mp4 d:\video\*.m4s video.mp4。这个时候mp4已结可以打开了,一个只有声音,一个只有画面。

最后用ffmpeg合并video.mp4和audio.mp4。大家先网上搜索ffmpeg下载。然后在ffmpeg.exe的文件夹中打开cmd,输入ffmpeg.exe -i "d:\video\video.mp4" -
i "d:\audio\audio.mp4" -c:v copy -c:a copy "D:\final.mp4"
就大功告成了。

如果没有mpd文件,可以打开浏览器,按f12调出开发者工具,选择network,然后打开视频页面,在network下看看有没有加载mpd。你也有可能看到一堆.m4s和几个.mp4的链接,通过这些链接得到命名规律,用批量下载工具下载它们,最后用上面两段的方法合并它们!

 


这两种方法描述很复杂,其实操作起来很简单。

 类似资料: