将 HLS (m3u8) 转换为 MP4

Converting an HLS (m3u8) to MP4

任何人都可以建议如何从 HLS 流构建 MP4 文件(与您通常想要的相反)?假设我有 m3u8 - 是否有使用 FFMPEG 或其他工具获得单个 MP4 的直接方法?

ffmpeg -i in.m3u8 -acodec copy -vcodec copy out.mp4

对于 AAC 音频,您还需要添加比特流过滤器。 (感谢@aergistal 指出这一点)

ffmpeg -i in.m3u8 -acodec copy -bsf:a aac_adtstoasc -vcodec copy out.mp4

将 HLS 转换为 MP4 的另一种方法是使用 VLC 播放器。您可以通过界面和命令行进行转换。只需 运行 一个包含以下行的 .bat 文件:

chcp 65001
"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" http://cdn.haramain.global/vods3/_definst_/mp4:amazons3/akra/programlar/yeni/335/c07f21e3-a313-4e8d-b594-403ddefbf11f.mp4/playlist.m3u8 --sout "#transcode{vcodec=none,acodec=mp3,ab=70,channels=2,samplerate=44100}:std{access=file{no-overwrite},mux=mp3,dst='C:\Users\aidata\Desktop\Akra FM.07.2013 - Karagöz - Bilmecesi.mp3'}" vlc://quit
"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" http://cdn.haramain.global/vods3/_definst_/mp4:amazons3/akra/programlar/yeni/335/dcb6754a-49f1-4517-bfe4-3864942f63c8.mp4/playlist.m3u8 --sout "#transcode{vcodec=none,acodec=mp3,ab=70,channels=2,samplerate=44100}:std{access=file{no-overwrite},mux=mp3,dst='C:\Users\aidata\Desktop\Akra FM.07.2013 - Nasreddin Hoca - Köyün Eseği.mp3'}" vlc://quit

这个批处理脚本一个接一个地转换两个文件。如果您将这些命令粘贴到 cmd.exe,所有转换将同时开始。


现在让我解释一下代码。 chcp 65001 行允许您在目标文件名中使用 unicode 字符。以下几行由四部分组成。

  1. "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"

这是VLC播放器的路径。安装 VLC 播放器后验证。

  1. http://cdn.haramain.global/vods3/_definst_/mp4:amazons3/akra/programlar/yeni/335/c07f21e3-a313-4e8d-b594-403ddefbf11f.mp4/playlist.m3u8

这是一个示例 HLS 文件。我不知道如果你把这个 link 放在双引号里会发生什么。

  1. --sout "#transcode{vcodec=none,acodec=mp3,ab=70,channels=2,samplerate=44100}:std{access=file{no-overwrite},mux=mp3,dst='C:\Users\aidata\Desktop\Akra FM.07.2013 - Karagöz - Bilmecesi.mp3'}"

这是转换的VLC命令。您可以在 VLC Documentation

中找到更多选项
  1. vlc://quit

这将关闭 VLC window。如果您不希望您的任务栏充满 VLC windows,这将很有帮助。无法在播放列表中堆叠转换顺序。您必须 运行 VLC,进行转换并关闭 window。您也可以在静默模式下尝试 运行ning VLC。或者您可以将 VLC window 拖到屏幕右下角,这样后续闪烁 windows 就不会打扰您了。