安装

编译好的windows可用版本的下载地址(官网中可以连接到这个网站,和官方网站保持同步): http://ffmpeg.zeranoe.com/builds/

该版本为FFMPEG的Static,Static里面只有3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe,每个exe的体积都很大,相关的Dll已经被编译到exe里面去了。

使用

ffmpeg.exe

ffmpeg是用于转码的应用程序

命令行进入bin目录,输入以下命令即可将m3u8下载为指定格式的文件

C:\01-python\59-ffmpeg\ffmpeg\bin\ffmpeg -i http://vodcdn.yst.vodjk.com/201909191433/2afc693f2edda43e677598144b12a31e/company/1/2019/8/1/18852t5bfe/sd/a84ccae0440549398f8080f6d336075b.m3u8 .\video\1416.mp4

# C:\01-python\59-ffmpeg\ffmpeg\bin\ffmpeg    ffmpeg.exe路径
# http://vodcdn.yst.vodjk.com/201909191433/2afc693f2edda43e677598144b12a31e/company/1/2019/8/1/18852t5bfe/sd/a84ccae0440549398f8080f6d336075b.m3u8    m3u8视频url
# .\video\1416.mp4  存放路径是当前文件夹下的video   名称为1416.mp4

ffplay.exe

ffplay是用于播放的应用程序。

ffplay .\3029.mp4

ffprobe.exe

ffprobe是用于查看文件格式的应用程序。

更多高级用法的文档: http://blog.csdn.net/leixiaohua1020/article/details/12751349

示例

import json, pymysql, requests, os, time, ffmpeg, asyncio, aiohttp, aiomysql, hashlib

class yibao(object):
    def __init__(self):
        self.db = pymysql.connect(host='localhost', port=3306, database='cfda', user='root', password='root',
                                  charset='utf8')
        self.cursor = self.db.cursor()
        self.headers = {
            "user-agent": "com.xinma.yst/YST/5.5.3",
            "referer": "app.yst.vodjk.com",
            'Content-Type': 'application/x-www-form-urlencoded'
        }
        self.url = 'https://api.yst.vodjk.com/v1/course?keyid=1004&time=1568774753613&userid=294066&app_version=5.5.3&appid=100004&uutp=android&uuid=ffffffff-dfe4-a66d-24b0-59af559c6620&usertoken=9390faed9a5a0db2818c2233e6c2ffc9&ip=172.17.100.15'
        self.parse_page()

    def parse_page(self):
        self.cursor.execute('SELECT id, parent_id, title, url FROM yaoshitong_class_3 where id > 1386 and id < 1401')
        for data in self.cursor.fetchall():
            data_list = {
                "keyid": '1004',
                "time": '1568774753613',
                "userid": '294066',
                "app_version": '5.5.3',
                "appid": '100004',
                "uutp": 'android',
                "uuid": 'ffffffff-dfe4-a66d-24b0-59af559c6620',
                "usertoken": '9390faed9a5a0db2818c2233e6c2ffc9',
                "ip": '172.17.100.15',
                # ----------------------
                "pagesize": '20',
                # "modules": 'info:5,comments:1',
                "modules": 'info%3A5%2Ccomments%3A1',
                # "courseid": '376',
                "courseid": str(data[1]),
                "page": '1',
            }
            dict2 = sorted(data_list)
            a = ''
            for key in dict2:
                if key != 'time':
                    a += key + '=' + data_list[key] + '&'
            m = hashlib.md5()
            m.update(a[:-1].encode('utf-8'))
            md1 = m.hexdigest()

            data2 = md1 + 'e2fae2b4e226e878e7f81e4e7e39c9da' + data_list['time']
            m = hashlib.md5()
            m.update(data2.encode('utf-8'))
            md2 = m.hexdigest()
            re_data = {
                "sign": md2,
                "pagesize": "20",
                "courseid": str(data[1]),
                "modules": "info:5,comments:1",
                "page": "1",
            }
            html = requests.post(url=self.url, headers=self.headers, data=re_data).content.decode('utf-8')
            print(html)
            data_json = json.loads(html)
            u3m8_url = data_json['data']['info']['catalog'][0]['lesson'][0]['video']['url']
            try:
                name = str(data[0]) + '-' + data[1]
                print("C:\\01-python\\59-ffmpeg\\ffmpeg\\bin\\ffmpeg -i {} .\\video\\{}.mp4".format(u3m8_url, data[0]))
                os.system("C:\\01-python\\59-ffmpeg\\ffmpeg\\bin\\ffmpeg -i {} .\\video\\{}.mp4".format(u3m8_url, data[0]))
                print('*' * 100)
            except:
                pass
            time.sleep(1)

        # self.db.commit()

if __name__ == '__main__':
    yibao()

  

ffmpeg下载m3u8流媒体的更多相关文章

  1. 使用ffmpeg下载m3u8流媒体

    安装 编译好的windows可用版本的下载地址(官网中可以连接到这个网站,和官方网站保持同步): http://ffmpeg.zeranoe.com/builds/ 或者: 百度网盘https://p ...

  2. 如何下载某些 flash 在线视频 并使用ffmpeg下载分段并加密的m3u8视频流

    有些网站使用 flash 在线播放视频,不方便进行下载. 可以使用 Chrome 的 Developer Tools 模拟成 iOS 设备(通过修改 User Agent),然后取得 h.264 视频 ...

  3. 下载m3u8视频

    分两种情况 同时支持m3u8和mp4文件 某些视频同时支持m3u8和mp4视频文件,将m3u8改成mp4后直接: wget -c http://www.xxx.com/xxxx.mp4 只有m3u8视 ...

  4. ffmpeg 下载安装和简单应用

    一.ffmpeg下载 先到http://ffmpeg.org/下载ffmpeg安装文件 二.ffmpeg安装 1.解压下载完的ffmpeg-20190319-f8075b2-win64-shared. ...

  5. Python 爬虫实例(13) 下载 m3u8 格式视频

    Python  requests  下载  m3u8 格式    视频 最近爬取一个视频网站,遇到  m3u8 格式的视频需要下载. 抓包分析,视频文件是多个  ts 文件,什么是 ts文件,请去百度 ...

  6. ffmpeg下载安装和简单应用

    先介绍一下ffmpeg:FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影.转换.流功能,包含了libavcodec —这是一个用于多个项目中音频和视频的解码器库,以及libavformat ...

  7. ffmpeg处理RTMP流媒体的命令 发送流媒体的命令(UDP,RTP,RTMP)

    将文件当做直播送至live ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName   re限制输出速率,按照 ...

  8. ffmpeg处理RTMP流媒体的命令和发送流媒体的命令(UDP,RTP,RTMP)

    将文件当做直播送至live ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName     re限制输出速率, ...

  9. 下载 m3u8 直播流的方法

    下载 FFmpeg http://ffmpeg.org/download.html 查找直播流地址 找到目标视频对应的 m3u8 播放列表. 执行脚本 ffmpeg -i https://nhkmov ...

随机推荐

  1. June 09th, 2019. Week 24th, Sunday

    The beauty you see in me is a reflection of you. 你在我身上看到的美,正是你的倒影. From Jalaluddin Rumi. What we see ...

  2. 飞思卡尔K60时钟分析

    推荐:NXP官方软件config tool,图形化界面可导出代码 K60芯片的时钟系统由振荡器(OSC).实时振荡器(RTC OSC).多功能时钟发生器(MCG).系统集成模块(SIM)和电源管理器( ...

  3. Acwing40. 顺时针打印矩阵

    地址 https://www.acwing.com/solution/acwing/content/3623/ 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 样例 输入: [ [, ...

  4. web系统测试策略

    1.按系统架构可分为: 客户端测试.服务器端测试.网络上测试 2.按职能可分为: 应用功能的测试.web应用服务的测试.安全系统的测试.数据库服务的测试 3.按软件质量特性: (1)功能测试 链接测试 ...

  5. Jupyter notebook 使用

    1. 安装代码自动补全 需安装 nbextensions 插件,网站:https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/ins ...

  6. 使用Runtime自定义KVO,原理浅析

    一.介绍 什么是KVO?全称key-value-observer,键值观察,观察者设计模式的另一种实现.其作用是通过观察者监听属性值的变化而做出函数回调. 二.原理 KVO基于Runtime机制实现, ...

  7. SLB外部端口非80时---》转发到nginx---》URL跳转丢失端口的解决方案

    配置nginx反向代理时遇到一个问题,当设置nginx监听80端口时转发请求没有问题.但一旦设置为监听其他端口,就一直跳转不正常: 如,访问欢迎页面时应该是重定向到登录页面,在这个重定向的过程中端口丢 ...

  8. laravel集成workerman,使用异步mysql,redis组件时,报错EventBaseConfig::FEATURE_FDS not supported on Windows

    由于laravel项目中集成了workerman,因业务需要,需要使用异步的mysql和redis组件. composer require react/mysql composer require c ...

  9. GO的执行原理以及GO命令

    Go的执行原理以及Go的命令 一.Go的源码文件 Go 的源码文件分类: 如上图,分为三类: 1.命令源码文件: 声明自己属于 main 代码包.包含无参数声明和结果声明的 main 函数. 命令源码 ...

  10. wpf 单例模式和异常处理 (原发布 csdn 2017-04-12 20:34:12)

    第一次写博客,如有错误,请大家及时告知,本人立即改之. 如果您有好的想法或者建议,我随时与我联系. 如果发现代码有误导时,请与我联系,我立即改之. 好了不多说,直接贴代码. 一般的错误,使用下面三个就 ...