acfun面捕助手软件 v1.6.0.0官方版

对于不想在直播间露脸的博主来说,acfun面捕助手绝对是一款不可多得的多功能的虚拟主播面捕工具,通过它能够捕捉到主播直播时的面部表情,从而让虚拟主播更加的形象生动。软件操作起来十分的简单,只要有摄像头,一键导入图片就可以生成自己的虚拟偶像,支持live2D模型和vrm模型一键导入,还拥有一项原创黑科技,让你的原画直接动起来。同时,软件内拥有多款正版预设角色,既有御姐也有萝莉,更有搞怪的人物形象出现,基本可以满足新上手用户的需求,比如波兔、章鱼娘、大小 姐、妹抖酱、兄 贵护士等等供你选择,可免费使用,支持在工具内选择“添加模型”,选择本地的模型文件,即可成功导入模型角色啦。以及用户还可以选择自创角色,一键导入修改背景图,上传符合规范的psd文件。此外,acfun面捕助手使用范围也是极为广泛的,AcFun直播伴侣、快手直播伴侣均可使用,下载并安装完成后,在伴侣内添加画面来源时选择游戏进程,下拉菜单选择AcFunVirtualView即可同步画面,只要你对着镜头讲话晃动,你的虚拟人物也会随之做出相应的动作,感兴趣的赶紧下载体验。
acfun面捕助手软件

软件特点

1、预设角色
我们拥有多款正版预设角色,可免费使用!
波兔、章鱼娘、大小 姐、妹抖酱、兄 贵护士……
多种选择,更多欢笑!
2、支

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
优化import os.path import pprint import textwrap import threading import time import requests import re import json from queue import Queue q_list = Queue(100) from threading import Thread headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 ' 'Safari/537.36' } # 获取m3u8视频片段的所有地址 def get_links(url): # 获取视频页的网页源代码 r = requests.get(url, headers=headers) info = re.findall('window.pageInfo = window.videoInfo =(.*?)window.videoResource', r.text, re.DOTALL)[0].strip()[0:-1] # 获取m3u8列表地址 filename = json.loads(info)['title'] m3u8_url = json.loads(json.loads(info)["currentVideoInfo"]["ksPlayJson"])['adaptationSet'][0]['representation'][1]['url'] m3u8_list = requests.get(m3u8_url, headers=headers).text ts_files = re.sub('#.*', '', m3u8_list).split() ts_length = len(ts_files) # 获取m3u8地址片段 for num, ts in enumerate(ts_files): ts_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/' + ts q_list.put([ts_url, num]) return filename, ts_length # print(filename, ts_url) # 分别下载这些视频片段-多线程 def download(filename): while not q_list.empty(): ts_url, num = q_list.get() video_content = requests.get(ts_url, headers=headers).content with open(f'video/{filename}_{num}.ts', 'wb') as f: f.write(video_content) print(f'{threading.current_thread().name}已下载...第{num}个片段') # 合并视频-构成完整的片段 def combine(filename, ts_length): fp = open(f'video/{filename}.mp4', 'ab') for i in range(ts_length): if os.path.exists(f'video/{filename}_{i}.ts'): with open(f'video/{filename}_{i}.ts', 'rb') as f: ts_slice = f.read() fp.write(ts_slice) print(f'已合并...第{i}个片段') os.remove(f'video/{filename}_{i}.ts') print(f'已删除...第{i}个片段') fp.close() # 主文件调用 def main(): start_time = time.time() url = 'https://www.acfun.cn/v/ac41409604' filename, ts_length = get_links(url) tasks = [] for i in range(3): th = Thread(target=download, args=(filename,), name=f'线程{i}') th.start() tasks.append(th) for t in tasks: t.join() combine(filename, ts_length) end_time = time.time() print(f'总共耗时{end_time - start_time}')
05-22
可以考虑对代码进行如下优化: 1. 将所有的 import 放在文件开头,按照标准库、第三方库和本地库的顺序进行排列,方便阅读和维护。 2. 可以将获取视频片段地址和下载视频片段的代码放在同一个函数中,这样可以减少函数调用和确保两个步骤的原子性。 3. 可以使用 with 语句来打开文件,这样可以确保文件对象被正确关闭,避免出现文件泄露和意外删除的情况。 4. 可以使用 f-strings 来格式化输出,这样可以使代码更加简洁、易读和易维护。 5. 可以对代码中的变量名进行调整,使其更符合 Python 的命名规范,并且更加易于理解和使用。 下面是优化后的代码: ```python import os.path import pprint import textwrap import threading import time import requests import re import json from queue import Queue from threading import Thread headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36' } def download_video_segments(url, ts_queue): # 获取视频页的网页源代码 response = requests.get(url, headers=headers) info = re.findall('window.pageInfo = window.videoInfo =(.*?)window.videoResource', response.text, re.DOTALL)[0].strip()[0:-1] # 获取m3u8列表地址 filename = json.loads(info)['title'] m3u8_url = json.loads(json.loads(info)["currentVideoInfo"]["ksPlayJson"])['adaptationSet'][0]['representation'][1]['url'] m3u8_list = requests.get(m3u8_url, headers=headers).text ts_files = re.sub('#.*', '', m3u8_list).split() ts_length = len(ts_files) # 获取m3u8地址片段 for num, ts in enumerate(ts_files): ts_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/' + ts ts_queue.put([ts_url, num]) return filename, ts_length def download_video_segment(filename, ts_queue): while not ts_queue.empty(): ts_url, num = ts_queue.get() video_content = requests.get(ts_url, headers=headers).content with open(f'video/{filename}_{num}.ts', 'wb') as f: f.write(video_content) print(f'{threading.current_thread().name}已下载...第{num}个片段') def combine_video_segments(filename, ts_length): with open(f'video/{filename}.mp4', 'ab') as fp: for i in range(ts_length): if os.path.exists(f'video/{filename}_{i}.ts'): with open(f'video/{filename}_{i}.ts', 'rb') as f: ts_slice = f.read() fp.write(ts_slice) print(f'已合并...第{i}个片段') os.remove(f'video/{filename}_{i}.ts') print(f'已删除...第{i}个片段') def main(): start_time = time.time() url = 'https://www.acfun.cn/v/ac41409604' ts_queue = Queue(100) filename, ts_length = download_video_segments(url, ts_queue) tasks = [] for i in range(3): th = Thread(target=download_video_segment, args=(filename, ts_queue), name=f'线程{i}') th.start() tasks.append(th) for t in tasks: t.join() combine_video_segments(filename, ts_length) end_time = time.time() print(f'总共耗时{end_time - start_time}')

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值