百万youtube高清视频数据集采集

article/2025/10/16 14:48:30

HD-VILA-100M是什么?

HD-VILA-100M是一个大规模、高分辨率、多样化的视频语言数据集,有助于多模态表示学习。

在这里插入图片描述

数据统计

该数据集共包含330万个视频,视频质量较高,均衡分布在15个类别中。
HD-VILA-100M数据集的分类分布

下载(Download)

您可以通过此链接下载所有视频链接:视频链接。

原始视频下载:

您可以根据上面的视频链接使用 下面代码 从 YouTube 下载原始视频

下载原始视频使用的是youtube-dl这个命令行下载工具,需要注意版本和补丁问题,这里提供了大部分youtube-dl运行问题和速度慢等解决方案:https://github.com/ytdl-org/youtube-dl/issues/30839

from joblib import Parallel, delayed
import multiprocessing
import youtube_dl
import jsonlines
import json
import argparse
from tqdm import tqdm
import time
import os
import logging
from urllib.request import urlopendef parse_args():parser = argparse.ArgumentParser(description='youtube video downloader')parser.add_argument('--workdir', default='hdvila_100m',type=str, help='Working Directory')parser.add_argument('--metafile', default='hdvila_part0.jsonl', type=str, help='youtube video meta')parser.add_argument('--log', default='log_part0.log', type=str, help='log')parser.add_argument('--audio_only', action='store_true')args = parser.parse_args()return argsdef check_dirs(dirs):if not os.path.exists(dirs):os.makedirs(dirs, exist_ok=True)print(f'no path{dirs}')else:print(f'exists: {dirs}')class YouTubeVideoDownloader():def __init__(self, metafile, workdir):self.videourls = self.readvideourls(metafile)self.workdir = workdirdef readvideourls(self, metafile):vs = []with open(metafile,'r') as f:for l in jsonlines.Reader(f):vs.append(l['url'])logger.info('Number of videos to download: %d', len(vs))return vsdef downloadvideo(self,vurl):format_id='22' # for 720p videos with audioif args.audio_only:format_id='140' # audio_onlyydl_opts = {'outtmpl':os.path.join(self.workdir, 'download_videos') +'/%(id)s.%(ext)s','merge_output_format':'mp4','format':format_id, # 720P'skip_download':False,'ignoreerrors':True,'quiet':True}with youtube_dl.YoutubeDL(ydl_opts) as ydl:start = time.time()result = ydl.download([vurl])end = time.time()if result != 0:logger.error('Fail to download %s', vurl)logger.info('Time for download video %.2f sec', end-start)return result   def downloadallParallel(self):num_cores = multiprocessing.cpu_count()logger.info(f"num cores: {num_cores}")results = Parallel(n_jobs=50, backend='threading')(delayed(self.downloadvideo)(v) for v in tqdm(self.videourls))results = [x for x in results if x is not None]logger.info(f"Number of videos downloaded: {len(results)}")if __name__ == '__main__':args = parse_args()metafile = os.path.join(args.workdir, 'metafiles', args.metafile)logdir = os.path.join(args.workdir,'download_video_log')check_dirs(os.path.join(args.workdir, 'download_videos'))check_dirs(logdir)logging.basicConfig(level=logging.INFO,filename=os.path.join(logdir, args.log),datefmt='%Y/%m/%d %H:%M:%S',format='%(asctime)s - %(name)s - %(levelname)s - %(lineno)d - %(module)s - %(message)s')logger = logging.getLogger(__name__)logger.info(args)yvd = YouTubeVideoDownloader(metafile, args.workdir)yvd.downloadallParallel()

youtube访问过高有ip反爬,可以通过修改下面代码设置代理ip:

import youtube_dl# 设置代理IP
proxy_ip = 'YOUR_PROXY_IP_ADDRESS'
proxy_port = 'YOUR_PROXY_PORT'# 创建ydl_opts字典并设置代理
ydl_opts = {'proxy': f'http://{proxy_ip}:{proxy_port}',
}# 使用带有代理设置的YoutubeDL对象
with youtube_dl.YoutubeDL(ydl_opts) as ydl:# 在这里添加您的代码逻辑pass

视频剪切为剪辑

import jsonlines
import os
from tqdm import tqdm
import logging
import argparse
import re
import subprocess
import multiprocessing
from joblib import Parallel, delayeddef parse_args():parser = argparse.ArgumentParser(description='youtube video processing')parser.add_argument('--workdir', default='./hdvila_100m',type=str, help='Working Directory')parser.add_argument('--metafile', default='meta_part0.jsonl', type=str, help='youtube video meta')parser.add_argument('--resultfile', default='cut_part0.jsonl', type=str, help='processed videos')parser.add_argument('--log', default='log_part0.log', type=str, help='log')args = parser.parse_args()return argsdef check_dirs(dirs):if not os.path.exists(dirs):os.makedirs(dirs, exist_ok=True)class Cutvideos():def __init__(self, metafile, workdir, resultfile):self.workdir = workdirself.metafile = metafileself.resultfile = resultfileself.metas = self.loadmetas()def loadmetas(self):metas = []with open(self.metafile, 'r') as f:for l in jsonlines.Reader(f):metas.append(l)return metasdef hhmmss(self, timestamp1, timestamp2):hh,mm,s = timestamp1.split(':')ss,ms = s.split('.')timems1 = 3600*1000*int((hh)) +  60*1000*int(mm) + 1000*int(ss) + int(ms)hh,mm,s = timestamp2.split(':')ss,ms = s.split('.')timems2 = 3600*1000*int((hh)) +  60*1000*int(mm) + 1000*int(ss) + int(ms)dur = (timems2 - timems1)/1000return str(dur)def run(self, cmd):proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)out, _ = proc.communicate()return out.decode('utf-8')def extract_single_clip(self,sb, in_filepath, out_filepath):cmd = ['ffmpeg', '-ss', sb[0], '-t', self.hhmmss(sb[0], sb[1]),'-accurate_seek', '-i', in_filepath, '-c', 'copy','-avoid_negative_ts', '1', '-reset_timestamps', '1','-y', '-hide_banner', '-loglevel', 'panic', '-map', '0',out_filepath]self.run(cmd)if not os.path.isfile(out_filepath):raise Exception(f"{out_filepath}: ffmpeg clip extraction failed")def extract_clips(self, meta):clips = meta['clip']vid = meta['video_id']outfolder = os.path.join(self.workdir,'video_clips', vid)check_dirs(outfolder)result = []# try:for c in clips:self.extract_single_clip(c['span'], os.path.join(self.workdir,'download_videos', vid + '.mp4'), os.path.join(outfolder, c['clip_id']))result.append(c['clip_id'])# except:#     passreturn resultdef extract_all_clip(self):results = []for v in tqdm(self.metas):result = self.extract_clips(v)results.extend(result)logger.info(f"Number of clips processed: {len(results)}")with jsonlines.open(os.path.join(self.workdir, 'cut_video_results', self.resultfile), 'w') as f:for l in results:f.write(l)if __name__ == '__main__':args = parse_args()metafile = os.path.join(args.workdir, 'metafiles', args.metafile)logdir = os.path.join(args.workdir,'cut_video_log')check_dirs(os.path.join(args.workdir, 'video_clips'))check_dirs(os.path.join(args.workdir, 'cut_video_results'))check_dirs(logdir)logging.basicConfig(level=logging.INFO,filename=os.path.join(logdir, args.log),datefmt='%Y/%m/%d %H:%M:%S',format='%(asctime)s - %(name)s - %(levelname)s - %(lineno)d - %(module)s - %(message)s')logger = logging.getLogger(__name__)logger.info(args)cvd = Cutvideos(metafile, args.workdir, args.resultfile)cvd.extract_all_clip()

如果您发现该数据集对您的研究有用,请记得点赞关注收藏!

🚀💻 欢迎一起探索pandas的更多精彩博客!🌟
🔗1️⃣ Pandas特殊连接:模糊连接和有序变量表连接!
🔗2️⃣ pandas特征工程:线性变换
🔗3️⃣ Pandsa时间序列采样频率滑窗及重采样
🔗4️⃣ Pandas 日期处理:生成及去除工作日与节假日
🔗5️⃣ Python音频处理——pydub
🔗6️⃣Python使用XPath解析HTML:从入门到精通
🔗7️⃣股票数据爬取——Echarts提示框数据采集

一起来学习吧!😄🎉 #编程 #CSDN #Python #Pandas #Astropy #Pydub 🎓💡🎯


http://chatgpt.dhexx.cn/article/BDLfrT2m.shtml

相关文章

100多万个视频短片数据集来啦!

本文经授权转载自 IEEE电气电子工程师学会(ID: IEEE_China) 想象一下,如果我们必须向外星人解释地球上发生的所有行为。我们可以为他们提供非小说类书籍或BBC纪录片。我们可以尝试口头解释什么是电臀舞。但是,实际上,没…

大数据视频课程汇总

1.由于未经视频版权方授权,很可能会被下架,请各位需要的同仁及时下载,如果被下架,请留言说明。 2.视频为大数据梅峰谷整理,所有视频不加密,不收费,不做机构的宣传品,(因为微信和各大…

视频分类数据集介绍

视频分类数据集 在视频分类项目中,有很多经典的公开数据集,目前主要的数据集如列表所示: 重点介绍三个中等规模的数据集。 1. UCF101 动作识别数据集,从youtube收集而得,共包含101类动作。其中每类动作由25个人做动作…

Python毕业设计 抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕…

大数据分析视频全套

一、全套视频总览 二、大数据分析之level2 三、大数据分析之level3 四、大数据分析之level4 五、课程相关资料 具体详细内容及目录结构如下: 注: 大数据分析与大数据开发的区别在于:本套课程涵盖算法更多,需掌握python语言&#…

AI大数据可视化EasyCVR视频融合平台的部署操作流程详解

EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频直播、云端录像、云存储、…

音视频造数据的路

目录 1、多路数据制造 (1)合并多路 (2) 视频修改分辨率 (3) 修改视频码率 (4)修改帧率 2、音频流多声道合成 (1)双声道合并单声道 (2&…

音视频数据介绍

1、前言 在诸如安防系统标准GB28181和“电网视频监控系统及接口”中,固定视频流的传输格式为PS格式。PS流和TS流的概念是在MPEG2的ISO/IEC-13818标准的第一部分“系统”中提出的。其提出的目的是提供MPEG2编码比特的存储与传输方案。 2、先介绍PS封装中的…

互联网海量视频数据的存储

原文链接:http://www.docin.com/p-86312184.html?docfromrrela 一、背景 互联网内容提供方式转变:用户创造内容。视频应用、网络游戏、搜索引擎等互联网衍生业务迅速发展,使得海量数据存储、管理和处理成为当今互联网公司面临的严峻问题。这…

浅析大数据时代下的视频技术发展趋势以及AI加持下视频场景应用

视频技术的发展可以追溯到19世纪初期的早期实验。到20世纪初期,电视技术的发明和普及促进了视频技术的进一步发展。 1)数字化:数字化技术的发明和发展使得视频技术更加先进。数字电视信号具有更高的清晰度和更大的带宽,可以更快地…

音视频数据方案

一点点想法:还请各路大神多多指点! 技术栈: 1、数据存储、数据缓存、数据索引:springboot redis mysql elasticSearch 2、数据抓取:python mysqlBeautifulSoup、Selenium、lxml 3、图片分析:pythonPill…

浅析基于EasyCVR视频技术构建工业园区视频安防大数据监管平台的方案

随着社会经济的快速发展,越来越多的工业园区也正在加快智能化建设的步伐,为入驻企业提供舒适、安全、科技、智慧的办公及生产环境。在建设园区的智能化安防视频监管平台时,需要满足两方面的需求:一是园区内部及周边公共区域安全防…

某马大数据全套视频

某马大数据 01、阶段一 Python大数据开发基础 01、第一章大数据介绍及开发环境 02、第二章 linux命令 03、第三章 MySQL数据库 04、第四章 excel的使用 05、第五章 kettle的使用 06、第六章 数据分析及可视化 07、第七章 大数据框架与数仓基础 08、第八章 数仓实战项目 …

视频观看行为高级分析(大数据分析)

今天介绍一下我们的视频观看行为高级分析功能。 一、观看行为分析 观看行为分析,基于Polyv大数据分析,能够以秒为粒度展示观众如何观看您的视频。 视频观看热力图是单次观看行为的图形化表示,Polyv云点播视频的每一次播放,都会产…

【毕业设计】基于大数据的抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,…

五分钟读懂视频大数据分析

 发展至今,大数据不再为互联网企业独有,而是逐渐成为覆盖各行业、可以为具体业务服务的技术。如今,春节不仅演化成了一年一度的“人口迁徙”大节,还成了交通、安保等领域接受技术检验的关键时刻&#xff…

视频大数据的三大发展趋势

趋势一:系统集成下的技术融合 智能视频分析计算本身就是一个非常耗计算资源的过程,利用分布式计算平台的并行计算能力及云平台的计算资源弹性分配机制,可以有效利用平台的计算资源提高视频处理能力。同时,视频分析算法也需要不断…

大数据与视频技术的融合趋势将带来怎样的场景应用?

视频技术和AI技术的融合是一种新兴的技术趋势,它将改变视频行业的运作方式。视频技术和AI技术的融合主要包括以下几个方面: 1)人脸识别技术 人脸识别技术是AI技术的一个重要应用场景。它可以通过对视频中的人脸进行识别和分析,实…

视频时代的大数据:问题、挑战与解决方案

导读:视频大数据云边协同解决方案。 作者:韩锐 刘驰 来源:大数据DT(ID:hzdashuju) 01 介绍 人们所观察的世界无时无刻不在改变,造就了“视频”相比于文本等类型的数据更具表现力,包含…

C# 工厂

(转载)C#抽象工厂模式的几种实现方法及比较 Posted on 2008-12-05 19:45 chefZ 阅读(5127) 评论(2) 编辑 收藏 引用 C#抽象工厂模式的几种实现方法及比较 转载地址: http://www.cndw.com/tech/net/2006042758468.asp 利用设计模式可以使我们的代码更灵活&#…