macOS上利用FFmpeg将m3u8转化为mp4实现播放

我们经常在浏览网页视频的时候试图下载,但是将文件打开后发现扩展名是 .m3u8,使得系统默认或是常见的播放器无法打开它,这时候就需要借助转码工具,我经过查找,发现大部分可以实现上述功能的软件需要收费,要么就是不好用,所以特别推荐大家使用FFmpeg


概要

操作系统:macOS 15.3 

设备:MacBook Air


什么是FFmpeg?

FFmpeg是一个开源跨平台的音视频处理工具,它可以用来录制、转换和流式播放音视频文件。FFmpeg支持多种音视频格式和编解码器,具有强大的功能和灵活性,被广泛应用于多媒体处理领域。它可以用于从视频中提取音频、将视频转换为不同的格式、进行视频剪辑和合并等操作。

什么是m3u8?

M3U8是一种音视频流媒体播放列表文件格式的扩展名。这种格式通常用于指定媒体文件的存储路径和播放顺序,常用于网络直播和视频点播服务中。M3U8文件可以包含多个媒体片段的链接地址,以及一些播放器需要的元数据信息。播放器可以根据M3U8文件中的内容逐个请求和播放这些媒体片段,从而实现较为灵活和高效的流媒体播放。

转换步骤

1.安装FFmpeg

推荐使用 Homebrew 安装
Homebrew是 macOS 上最常用的包管理工具,安装 FFmpeg 非常方便。如果还没有安装可以看我的这一篇博客macOS包管理器HomeBrew的安装和使用(适合小白)-CSDN博客文章浏览阅读1k次,点赞18次,收藏16次。为什么 Mac 开发者离不开它?有人说:"没有Homebrew的Mac就像没有App Store的iPhone"https://blog.csdn.net/m0_74390545/article/details/147191631?fromshare=blogdetail&sharetype=blogdetail&sharerId=147191631&sharerefer=PC&sharesource=m0_74390545&sharefrom=from_link首先打开终端,在终端运行如下命令

brew install ffmpeg

如果需要更多编解码器(如 libx264、libvpx),可以安装完整版:

brew install ffmpeg --with-options

然后验证安装
运行以下命令检查 FFmpeg 是否安装成功:

ffmpeg -version

输出示例

成功安装的版本提示


2. 转换 M3U8 为 MP4

我们选择直接复制流的方法(很快,不需要重新编码,适用于未加密的m3u8)

打开终端运行以下命令

ffmpeg -i "改成你的路径/输入文件名称.m3u8" -c copy -bsf:a aac_adtstoasc "改成你的路径/输出文件名称.mp4"

-i "输入.m3u8":指定 M3U8 文件或 URL。  
`-c copy`:直接复制视频和音频流(不重新编码,速度极快)。  
`-bsf:a aac_adtstoasc`:修复部分 M3U8 的 AAC 音频问题。
 

也可以输入网页的m3u8链接

记得改成你的路径/输入(输出)文件名称

这里举一个例子

我这里使用了一个名为test的m3u8文件,将它输出成了test1的mp4文件,输入和输出路径是一样的,都是桌面

输出成功:

我们就可以在指定的路径下看到视频啦


当然,FFmprg还有很多功能,再补充一些
相关基础功能
场景 命令示例
基本转换 `ffmpeg -i input.m3u8 -c copy output.mp4`
重新编码 `ffmpeg -i input.m3u8 -c:v libx264 -c:a aac output.mp4`
加密流 `ffmpeg -i encrypted.m3u8 -key "xxx.key" -c copy output.mp4` 
调整分辨率 `ffmpeg -i input.m3u8 -vf "scale=1280:720" output.mp4` 

Tips:转换的时候推荐优先尝试 `-c copy` 直接复制,若失败再改用重新编码。遇到问题可检查 M3U8 文件是否完整或加密!


如果你的视频多怎么办(批量处理)

这里给大家提供一个shell脚本,亲测非常好用

首先创建脚本文件,打开终端运行如下指令

nano batch_convert.sh

粘贴以下脚本

   -替换 `/path/to/your/m3u8_files` 为你的实际文件夹路径。  
   -如果文件是其他格式(如 `.ts`),将 `*.m3u8` 改为 `*.ts`。

#!/bin/bash
cd /path/to/your/m3u8_files

for file in *.m3u8; do
output="${file%.*}.mp4"
ffmpeg -i "$file" -c copy -bsf:a aac_adtstoasc "$output"
echo "已转换: $file → $output"
done

echo "批量转换完成!"

其中

   #!/bin/bash

   # 进入存放 M3U8 文件的目录
   cd /path/to/your/m3u8_files

   # 遍历所有 .m3u8 文件并转换
   for file in *.m3u8; do
       output="${file%.*}.mp4"  # 生成对应的 MP4 文件名
       ffmpeg -i "$file" -c copy -bsf:a aac_adtstoasc "$output"
       echo "已转换: $file → $output"
   done

   echo "批量转换完成!"

然后保存并运行脚本
   按 `Ctrl + O` 保存 → `Enter` → `Ctrl + X` 退出编辑器。  
   赋予脚本执行权限并运行:

chmod +x batch_convert.sh
./batch_convert.sh

这样我们就可以批量转化路径下的视频文件了

输出示例:


常见问题解决

1. 文件名含空格或特殊字符
   在脚本中用双引号包裹变量(如 `"$file"`),避免路径解析错误。

2. 部分文件转换失败
检查失败的 M3U8 文件内容是否完整(如 `.ts` 分片是否存在)。  
尝试强制重新编码:

ffmpeg -i "$file" -c:v libx264 -c:a aac -crf 23 "${file%.*}.mp4"

3. 输出到指定文件夹,修改脚本中的输出路径:

output="/path/to/output/${file%.*}.mp4"

总结 

FFmpeg 是开源、跨平台的多媒体处理工具,支持几乎所有视频/音频格式的编解码,无需依赖第三方软件,通过命令行即可快速完成 M3U8 转 MP4,且支持直接复制流(`-c copy`)避免重新编码,转换速度极快,结合脚本(如 Shell、Python)轻松实现批量转换,显著提升效率,尤其适合处理大量直播录播文件。

FFmpeg 在 M3U8 转换中兼具速度、灵活性和可靠性,是开发者与普通用户处理流媒体文件的终极工具。

最后附上FFmpeg官网,方便深入学习和使用

FFmpeghttps://ffmpeg.org/希望这篇文章可以帮助你高效的完成视频转换,享受便捷效率的乐趣!

你可能感兴趣的:(#,macOS,macos,ffmpeg,经验分享)