(强大的ffmpeg)如何下载并转化网络M3U8文件为mp4文件-CarlZeng

背景

本文将的是如何在苹果MAC电脑下,将网络地址的M3U8文件(URL地址)转化为方便播放的MP4文件。

  1. 什么是M3U8文件?先去搜索下
  2. 怎么下载ffmpeg,怎么使用? 也可以参考下:如何使用youtube-dl下载Youtube上面的音视频,油管视频
  3. Support SOCKS5 proxies #3373

步骤(方案一)

  1. 使用浏览器查看获取M3U8文件的地址
    (插件如:Firefox的 Bulk Media Downloader, Video DownloadHelper
    Chrome的Media Download Helper)

  2. 打开Terminal

    1.   
      1
      2
      3
      ffmpeg -i "http://host/视频地址/file.m3u8" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file.mp4

      #请更换参数中的 URL地址 和 末尾要保存的mp4文件名(已测试可用)。
  3. 如果该网络的URL地址需要Proxy才能访问,需要用到-http_proxy 参数。

    1. 实例演示,假设已存在本机http proxy信息如下(很实用,因为即便已下载.m3u8文件,而其中所指向的具体视频分段地址还是需要proxy才能访问)
    1
    ffmpeg -http_proxy "http://127.0.0.1:7890" -i "http://host/folder/file.m3u8" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file1.mp4

下载循环录播资源

下载循环录播专为单mp4文件,
长期实践的发现ffmpeg用来下载直播流也是666
比如, 实际的命令就像这样:
ffmpeg -http_proxy “http://127.0.0.1:7890“ -i “https://hls.vdtuzv.com/videos2/77e1a56ec7cb38182c7df417d22f0b9a/77e1a56ec7cb38182c7df417d22f0b9a.m3u8?auth_key=1699418332-654b10dc8a7a2-0-498db8173470eb197016a656ac0ec821&v=2“ -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file1108.mp4

很多m3u8, 地址的加密方案是在url参数中增加auth_key;而且这个auth_key是会变更的。
这样维护源文件就简单了,放到特定地网盘(比如说)以后,由专门的软件负责循环直播这些mp4资源,其实就是录播,走实时的IPTV流量一样的原理。这样不暴露源文件的原始url链接,访问速度快(因为是分段式在内存下载),又能统计和分析视频的访问量等信息。
ffmpeg可以拼接这些分段式的.ts文件,最终转化成单个mp4文件。

步骤(方案二)

这个方案假设m3u8内容可以本机直接访问的情况下,We can use VLC to convert easily, File > Convert / Stream:

  1. Drop media here
  2. Choose Profile
  3. Choose Destination

20231006实测吐槽:尽量别用这第二个方案(的MAC版下VLC来保存短视频),因为会无限循环提示是否重写或者保留原有的文件。