安装

编译好的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. Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises)

    传送门 A. Optimal Currency Exchange 枚举一下就行了. Code #include <bits/stdc++.h> using namespace std; t ...

  2. 面向对象程序设计(JAVA) 第13周学习指导及要求

    2019面向对象程序设计(Java)第13周学习指导及要求 (2019.11.19-2019.11.25)   学习目标 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作 ...

  3. PUT和POST区别

    POST是用来提交数据的.提交的数据放在HTTP请求的正文里,目的在于提交数据并用于服务器端的存储,而不允许用户过多的更改相应数据(主要是相对于在url 修改要麻烦很多).PUT操作是幂等的.所谓幂等 ...

  4. golang+vscode开发环境的搭建

    一.windows下安装golang开发环境 (1)配置GOROOT变量,在系统变量中点击新建,变量值是golang安装文件夹目录 (2)配置Path变量,选中Path点编辑即可,在变量值后面追加;% ...

  5. Python变量内存管理

    目录 一.变量存哪了? 二.Python垃圾回收机制 2.1 引用计数 三.小整数池 一.变量存哪了? x = 10 当我们在p1.py中定义一个变量x = 10,那么计算机把这个变量值10存放在哪里 ...

  6. python接口自动化9-ddt数据驱动

    前言 ddt:数据驱动,说的简单一点,就是多组测试数据,比如点点点的时候登录输入正常.异常的数据进行登录. 实际项目中,自动化测试用得很少,但也有人用excel来维护测试数据 一.ddt 1.安装:p ...

  7. jQuery 源码分析(十三) 数据操作模块 DOM属性 详解

    jQuery的属性操作模块总共有4个部分,本篇说一下第2个部分:DOM属性部分,用于修改DOM元素的属性的(属性和特性是不一样的,一般将property翻译为属性,attribute翻译为特性) DO ...

  8. 图解servlet

    You can see the following illustration to better understand the lifecycle of the Servlet. When the r ...

  9. 在dubbo的一端,看Netty处理数据包,揭网络传输原理

    如今,我们想要开发一个网络应用,那是相当地方便.不过就是引入一个框架,然后设置些参数,然后写写业务代码就搞定了. 写业务代码自然很重要,但是你知道: 你的数据是怎么来的吗?通过网络传输过来的呗. 你知 ...

  10. hello tensorflow,我的第一个tensorflow程序

    上代码: import tensorflow as tf if __name__=='__main__': g = tf.Graph() # add ops to the user created g ...