python无水印下载视频_python下载抖音无水印视频软件源码

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import requests

import os

import sys

import io

import json

import cv2

import re

sys.stdout = io.TextIOWrapper( sys.stdout.buffer, encoding='utf-8')

def getmidstring(html, start_str, end):

start = html.find(start_str)

if start >= 0:

start += len(start_str)

end = html.find(end, start)

if end >= 0:

return html[start:end].strip()

class video():

def urlencode(self,url):

session = requests.session()

headers={

"User-Agent":"Aweme/86018 CFNetwork/978.0.7 Darwin/18.7.0"

}

response = session.get(url,headers=headers,allow_redirects=False)

videoid = getmidstring(response.headers["Location"],'share/video/','/?region')

self.video_id = videoid

headers={

'User-Agent': 'Aweme 8.6.0 rv:86018 (iPhone; iOS 12.4.1; zh_CN) Cronet',

'Content-Type':'application/x-www-form-urlencoded',

'Cookie':'odin_tt=84d9ca70201e16dc571ddb0da31c51712edd39055d938f0bc5a2a56878a94c3c0fd53725db64aaa37470fafb633ff94c9941c30f7fba08ea2d1025647aba6685'

}

response = session.post('https://aweme-hl.snssdk.com//aweme/v1/aweme/detail/',headers=headers,data={'aweme_id':videoid})

j = json.loads(response.text)

self.video_url = j['aweme_detail']['video']['play_addr']['url_list'][0]

self.mp3_url = j['aweme_detail']['music']['play_url']['url_list'][0]

self.video_name = j['aweme_detail']['desc']

def down_video(self):

"""

下载视频

:param video_url:

:param naem:

:return:

"""

# 通过cv2中的类获取视频流操作对象cap

cap = cv2.VideoCapture(self.video_url)

# 调用cv2方法获取cap的视频帧(帧:每秒多少张图片)

fps = cap.get(cv2.CAP_PROP_FPS)

# 获取cap视频流的每帧大小

size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),

int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))

# 定义编码格式mpge-4

fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', '2')

# 定义视频文件输入对象

outVideo = cv2.VideoWriter('%s.avi'%(self.video_id), fourcc, fps, size)

tot = 1

rval, frame = cap.read()

# 循环使用cv2的read()方法读取视频帧

while rval:

rval, frame = cap.read()

tot += 1

# 使用VideoWriter类中的write(frame)方法,将图像帧写入视频文件

outVideo.write(frame)

cv2.waitKey(1)

cap.release()

outVideo.release()

cv2.destroyAllWindows()

def down_mp3(self):

"""

#下载音频

:param mp3_url:

:param naem:

:return:

"""

response = requests.get(self.mp3_url)

with open("%s.mp3"%(self.video_id), "wb") as f:

f.write(response.content)

f.close()

def video_add_mp3(self):

"""

视频添加音频

:param video_file: 传入视频文件的路径

:param mp3_file: 传入音频文件的路径

:return:

"""

video_file = ('%s.avi'%(self.video_id))

mp3_file = ("%s.mp3"%(self.video_id))

str = re.sub('[a-zA-Z0-9’!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘’![\\]^_`{|}~\s]+', "", self.video_name)

outfile_name = "%s.avi"%str

ffmpeg_cmd = "ffmpeg -i %s -i %s -c:v copy -c:a aac -strict experimental %s"%(video_file,mp3_file,outfile_name)

os.system("%s"%ffmpeg_cmd)

os.remove("%s"%video_file)

os.remove("%s"%mp3_file)

if __name__ == '__main__':

v = video()

v.urlencode("https://v.douyin.com/CoHupf/")#分享的链接

v.down_video()

v.down_mp3()

v.video_add_mp3()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值