zoukankan      html  css  js  c++  java
  • python下载youtube视频

    谷歌开源了一个新的数据集,BoundingBox,(网址在这里)这个数据集是经过人工标注的视频数据集,自然想将它尽快地运用在实际之中,那么首先需要将其下载下来;可以看到网址上给出的是csv文件,该文件中包含有视频的URL以及一些人工标注信息,本篇博文主要就是根据这个csv文件将视频下载到本地,以供后续使用。

    csv的格式截图:

    考虑到python的简单易用性,决定采用python实现。那么需要解决两个问题,一是解析csv文件获得视频的URL;二是根据URL将视频下载下来,感谢万能的互联网,这两个功能都有前人已经实现了,那么我们需要做的就是使用这些轮子了。

    需要有以下的环境:

    1、安装了python(我的是python2.7);

    2、能够访问youtube(也就是翻墙);

    针对于csv文件的解析,十分简单,暂且不表,但是由URL之后,youtube视频的下载却不是那么简单,幸好在github上找到了一个开源库(链接在这里),按照该项目的操作,安装好pytube之后,在python中就可以直接将其导入进来使用,该网址还给出了使用的例子,在实际运用的过程中遇到了一点问题,在使用的时候需要指定格式与分辨率才能够下载,格式还好说,直接指定成了MP4的,但是分辨率就不能够写死了,所以我将yt.filter('mp4')[-1]强制转换成str,然后取出分辨率对应的位数,再进行下载(比较脑残)

    还需要注意的是直接解析csv文件,会有很多行都是同一个URL(如下图),这是需要判断一下,不同的时候再进行下载;另外,下载后存储的名字也要斟酌一下,我直接将URL中的最后一段命名视频(如下图),这样与csv文件对应比较方便,便于以后的解析与处理。

    最后把代码放在这里:

     1 import csv
     2 from pytube import YouTube
     3 
     4 csvfile = file('youtube_boundingboxes_detection_train.csv', 'rb')
     5 reader = csv.reader(csvfile)
     6 name_old = 'NULL~~'
     7 for line in reader:
     8     name_part = line[0]
     9     name = 'http://youtu.be/' + name_part
    10     if name_old != name:
    11         yt = YouTube(name)
    12         yt.set_filename(name_part)
    13         print_out = str(yt.filter('mp4')[-1])
    14         print_out_part = print_out[23:27]
    15         video = yt.get('mp4', print_out_part)
    16         video.download('tmp_srx/')
    17         #print(name, name_old)
    18         name_old = name
    19 
    20 csvfile.close() 
  • 相关阅读:
    ReactNative: 数据请求
    ReactNative: 使用Geolocation的API获取位置信息
    ReactNative: 使用第三方库图像选择器react-native-image-picker和react-native-image-crop-picker
    MDG_TR_DEST
    【VerySky原创】后台JOB运行-相关表
    【VerySky原创】RPR_ABAP_SOURCE_SCAN
    【VerySky原创】 ME9F
    【VerySky原创】如何查找SNRO编号范围的使用情况;
    【VerySky原创】怎样查找到CDHDR、CDPOS表中的OBJECTCLAS字段
    【由VerySky原创】由Number Range 导致凭证生成但无法保存的问题
  • 原文地址:https://www.cnblogs.com/rainsoul/p/6379115.html
Copyright © 2011-2022 走看看