欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python + ffmpeg爬取视频,转化为mp4格式

程序员文章站 2022-07-12 22:15:51
...

项目需求

  1. 网址链接:https://taobaolive.taobao.com/room/index.htm?spm=a1z9u.8142865.0.0.434f34edQAItBB&feedId=654b215c-7f98-4642-a16a-24d8ef23894b

  2. 需要将其中的这个视频下载下来,转换为mp4格式

解决方案

其实看起来挺简单的,我们就是进去找他的视频接口就行了,然后下载就行了。结果F12进去控制台后发现他没有视频连接,有的返回的是一些ts文件【疑问】
python + ffmpeg爬取视频,转化为mp4格式
于是我就拉到视频最后发现他是有228个ts文件组成的,研究后发现他是按照视频时长【每11秒】进行一个视频流的切割,这样子可以降低服务器的压力,并且可以很好的达到视频的流畅度!
那知道了这个后对于我们爬取老手就很简单了,直接使用requests进行访问,之后合并就行了

import requests

for i in range(1,229):
    url = 'https://livecbing.alicdn.com/mediaplatform/654b215c-7f98-4642-a16a-24d8ef23894b/'+str(i)+'.ts'
    res = requests.get(url)
    with open('./'+t+'.ts', 'wb') as f:
        f.write(res.content)

就是上面这个直接写成ts文件,好的第一步搞定。然后我们就需要将视频进行整合。其实很简单,只需要一条命令

copy /b *.ts video.ts

【敲黑板】这会出错了,发现合并的视频只有十分钟,还没有画面。这是怎么回事?
仔细看看执行过程,发现!!!【原谅我没有截图】
我们需要对生成的ts文件进行排序,有人说1-288不是已经排序了吗?但是我跟你说,他是按照先首位开始依次比较,比如1,11,111,2,21,22…而不是1,2,3…没有按照我们设想的规定执行,那应该怎么办?
其实很简单,自己规定一下顺序就行,来上代码!

import requests


for i in range(1,229):

    url = 'https://livecbing.alicdn.com/mediaplatform/654b215c-7f98-4642-a16a-24d8ef23894b/'+str(i)+'.ts'
    res = requests.get(url)
    # print(res.content)
    if len(str(i))==1:
        t='00'+str(i)
    if len(str(i))==2:
        t='0'+str(i)
    if len(str(i)) == 3:
        t = str(i)
    with open('./'+t+'.ts', 'wb') as f:
        f.write(res.content)

看到没就加几句话就行了,意思自己打印出来看很简单的!
那么现在我们已经拿到了228个ts视频流,并且通过执行 copy /b *.ts video.ts后将他成功整合为一个视频。那么接下来就是将他转换为mp4格式就OK了

  • 一种方案:直接修改后缀.mp4,这个方法大家可能觉得离谱。但是事实上博主真的测试过,是真的可以。对了这里建议你使用potplay这个软件。Windows自带的播放器是有问题的,只会播出音频。我可是亲自测试的
  • 第二种方案:使用ffmpeg这个很轻大的流媒体处理库,轻松搞定!
    还是老样子直接上代码:
import os

ffmpeg = r'D:\ffmpeg-N-99631-g9018257751-win64-gpl-shared\bin\ffmpeg.exe' # 写自己的安装路径

#由于路径中有空格,所以路径需要用上双引号,否则会找不到该文件

fn = r'C:\Users\admin\Desktop\自动化\视频\视频\video.ts'

output = r'C:\Users\admin\Desktop\自动化\视频\视频'+"td.mp4"

cmd = ffmpeg + " -i " + fn + " -c copy " + output

os.system(cmd)

print("done")

那么上面提到了FFmpeg的安装,这里博主给大家一个网址直接下载-解压-安装就可以。
FFmpeg网址:https://github.com/BtbN/FFmpeg-Builds/releases
python + ffmpeg爬取视频,转化为mp4格式

我是下载的红色边框的那个,最终的结果就是寻找这个路径:
python + ffmpeg爬取视频,转化为mp4格式
好了,写到这里基本就结束了,当然了如果出现音频和视频匹配不上的问题,可以参考博主之后的文章,如果可以帮助到大家,点歌关注!!哈哈