33行代码 超级简单下载/批量下载m3u8为mp4(使用Python和ffmpeg)

本代码直接复制可用,前提是要先安装ffmpeg!要先安装ffmpeg!要先安装ffmpeg!ffmpeg非常好用,装了不后悔。

 

使用方式:先将以下代码保存为down_load_m3u8.py,然后在cmd窗口中执行"python down_load_m3u8.py m3u8链接/有m3u8列表的文件路径"。

 

比如:

1.直接下载链接:python down_load_m3u8.py https://abc.com/def/hijk/index.m3u8

2.指定文件批量下载:python down_load_m3u8.py m3u8_urls.txt       (m3u8_urls.txt内是你要下载的链接,按行读取)

3.或者安装好了ffmpeg以后,不用到以下的python代码下载,而是直接通过ffmpeg下载,在cmd执行命令即可:ffmpeg -i m3u8链接 file_name.mp4,比如"ffmpeg -i https://abc.com/def/hijk/index.m3u8 file_name.mp4"

 

class DownLoadM3u8:
    def get_now_time(self):
        """
            获取当前时间
        """
        from datetime import datetime
        return datetime.now().strftime("%Y-%m-%d_%H%M%S")

    def down_m3u8(self,m3u8_url):
        import os
        import subprocess
        this_file_dir_path = os.path.abspath(os.path.dirname(__file__))
        result = subprocess.run(f'ffmpeg -i {m3u8_url} {self.get_now_time()}.mp4', shell=True, stdout=subprocess.PIPE, cwd=this_file_dir_path)
        print(result)

    def run(self):
        import sys
        param = sys.argv[1]  # 获取参数
        if param.startswith("http"):  # 直接输入链接下载
            self.down_m3u8(param)
        else:  # 参数是指定文件路径,文件内有下载列表
            #读取行,遍历行,每一行都调用一次下载
            file = open(param) 
            while 1:
                line = file.readline()
                if not line:
                    break
                print(f"开始下载{line}")
                self.down_m3u8(line)
            file.close()

if __name__ == "__main__":
   DownLoadM3u8().run()

 

效果图:

33行代码 超级简单下载/批量下载m3u8为mp4(使用Python和ffmpeg)_第1张图片

你可能感兴趣的:(Python,python)