将HLS(m3u8)转换为MP4

时间:2015-10-13 16:39:51

标签: video ffmpeg mp4 hls transcoding

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

2 个答案:

答案 0 :(得分:33)

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

对于AAC音频,您还需要添加位ststream滤波器。 (感谢@aergistal指出这一点)

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

答案 1 :(得分:2)

将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\13.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\12.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"
  2. 这是VLC播放器的路径。安装VLC播放器后验证这一点。

    1. http://cdn.haramain.global/vods3/_definst_/mp4:amazons3/akra/programlar/yeni/335/c07f21e3-a313-4e8d-b594-403ddefbf11f.mp4/playlist.m3u8
    2. 这是一个示例HLS文件。我不知道如果你把这个链接放在双引号中会发生什么。

      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\13.07.2013 - Karagöz - Bilmecesi.mp3'}"
      2. 这是用于转换的VLC命令。您可以在VLC Documentation

        中找到更多选项
        1. vlc://quit
        2. 这将关闭VLC窗口。如果您不希望任务栏填充VLC窗口,这将非常有用。无法在播放列表中堆叠转换订单。您必须运行VLC,执行转换并关闭窗口。您也可以尝试在静默模式下运行VLC。或者您可以将VLC窗口拖动到屏幕的右下角,以便后续闪烁的窗口不会打扰您。