广告
返回顶部
首页 > 资讯 > 后端开发 > Python >[原创]使用python对视频/音频文件
  • 786
分享到

[原创]使用python对视频/音频文件

音频文件视频python 2023-01-30 23:01:12 786人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

[原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处   一.关于为什么用pymediainfo以及pymediainfo的安装   使用Python对视频/音频文件进行详细信息采集,并进行去重操作的核

[原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作

转载请注明出处

 

一.关于为什么用pymediainfo以及pymediainfo的安装

  使用Python对视频/音频文件进行详细信息采集,并进行去重操作的核心是使用pymediainfo这个库

  之前本人一直在试着用moviepy库中的VideoFileClip来获取视频/音频文件的详细信息,但效果不理想,一直报错根本无法解决.

  直到本人发现了pymediainfo这个库,问题才得到解决(pymediainfo可以获取极其详细的音频/视频文件的具体信息).

  pymediainfo的安装:(参考https://www.jianshu.com/p/4c115bd82774)

    1.pip install pymediainfo  或者 python -m pip install pymediainfo

    2.然后到官网下载该程序,(官网地址: Https://pypi.org/project/pymediainfo/),安装到指定文件夹

    3.特别重要的一步:到你安装pymediainfo的文件夹中找到MediaInfo.dll这个文件,把它复制到你Python的根目录下(不复制程序会报无法打开xx程序的错!)

 

二.视频/音频去重的简单逻辑:

  如果两个视频/音频文件的大小完全一致,而且时长也完全一致,则该两个文件极有可能是重复的.

 

三.代码实现:

  下面代码你只需要把

    file_dir = r"D:\Movie\180919"  
    dire_dir = r'D:\Movie\BBB'

   更改成你自己的绝对路径就可以了(file_dir是你视频/音频文件的目录, dire_dir是将重复视频文件移动至的目录,程序结束后file_dir目录中的重复文件会被移动到dire_dir)

  注意:file_dir路径里只能放音频,视频文件,放入其他文件可能会报错(本人只考虑了file_dir中只有视频/音频文件的情况)

  程序功能:8G内存IE7处理器能处理11000个,大约2000G的视频/音频文件去重工作,花费时间30~40分钟(程序执行with open操作后会巨卡5-10分钟)

 1 import os
 2 import shutil
 3 
 4 from pymediainfo import MediaInfo
 5 
 6 
 7 file_dir = r"D:\Movie\180919"                # 定义文件目录(需要自己添加文件的绝对路径)
 8 dire_dir = r'D:\Movie\BBB'                    # 目标路径,将可能重复的文件移动至此(需要自己添加文件的绝对路径)
 9 video_sumlist = []                            # 全音/视频文件列表(绝对路径)
10 video_detail_list = []                        # 全音/视频文件详细信息列表
11 video_info_list = []                          # 只记录需要的关键信息
12 count = 0                                     # 用于记录已处理的文件数量
13 
14 def get_all_file(f_dir): # 获取文件名称与文件大小,以方便使用MediaInfo库遍历获取视频/音频文件的超详细信息
15     for root, dirs, files in os.walk(f_dir, topdown=True): # root就是"D:\Movie\180919", dirs 为[], files为全部文件列表
16         for name in files:
17             video_sumlist.append(os.path.join(root, name))
18 
19 get_all_file(file_dir)
20 # print(video_sumlist)
21 
22 for i in video_sumlist: # 获取视频/音频文件的详细信息并存储到video_detail_list中
23     media_info = MediaInfo.parse(i)
24     data = media_info.to_data()
25     video_detail_list.append(data)
26     count+=1
27     print("执行完第%d条数据...,视频名称为:%s"%(count, data["tracks"][0]["other_file_name"]))
28 
29 
30 with open(r"./video_detail.py", "w", encoding='utf-8') as f: # 因为遍历上万文件太费时,需要将视频/音频信息存储在文件中,以减少程序执行时间
31     print("开始执行写入操作...")
32     f.write(str(video_detail_list))
33 
34 with open(r"./video_detail.py", "r", encoding='utf-8') as f: # 将存储在file文件中的信息读取到vfile中
35     print("开始执行读取操作...")
36     vfile = eval(f.read())
37 print(type(vfile))
38 
39 for elem in vfile: # 简化文件信息的列表格式: [{文件名: {"t_size": t_size, "v_duration": v_duration}}, {{文件名: {"t_size": t_size, "v_duration": v_duration}}]
40     # print('v_size: ', elem["tracks"][0]["file_size"])
41     # print('v_duration: ', elem["tracks"][0]["duration"])
42     try:
43         if elem["tracks"][0]["file_name"] != 'desktop.ini':
44             video_info_list.append({(elem["tracks"][0]["other_file_name"][0]+"."+elem["tracks"][0]["file_extension"]):\
45              {"v_size": elem["tracks"][0]["file_size"], "v_duration": elem["tracks"][0]["duration"]}})
46         else:
47             print("找到了隐藏文件desktop.ini, 它没有'duration'这个键值对,需要跳过...")
48     except KeyError:
49         print("找到一个隐藏文件,该文件名为: ", elem["tracks"][0]["file_name"])
50 print(video_info_list)
51 print(video_info_list[0].keys())       # dict_keys(['海阔天空.mp4'])
52 print(type(video_info_list[0].keys())) # <class 'dict_keys'>
53 
54 start_index = 0
55 tomove_list = []
56 while start_index < (len(video_info_list)-1):
57     find_index = start_index + 1
58     # print("start_index = ", start_index, "find_index = ", find_index)
59     # print(list(video_info_list[start_index].values()))
60     # print(list(video_info_list[start_index].values())[0]["v_size"])
61     # print(list(video_info_list[start_index].values())[0]["v_duration"])
62     sample0 = [list(video_info_list[start_index].values())[0]["v_size"], list(video_info_list[start_index].values())[0]["v_duration"]]
63     while find_index < len(video_info_list):
64         if sample0[0] == list(video_info_list[find_index].values())[0]["v_size"] and \
65         sample0[1] == list(video_info_list[find_index].values())[0]["v_duration"]:
66             tomove_list.append(find_index)
67             find_index += 1
68         else:
69             find_index += 1
70 
71     # 外层循环开始:
72     if tomove_list != []:
73         tomove_list.reverse()
74         print("to move list after reverse: ", tomove_list)
75         for tomove_item in tomove_list:
76             shutil.move(os.path.join(file_dir ,list(video_info_list[tomove_item].keys())[0]), dire_dir)
77             video_info_list.pop(tomove_item) # 非常重要,保证video_info_list与实际音频/视频数据一致
78             print("已经移除文件的编号为: ", tomove_item)
79     start_index += 1
80     tomove_list = []

完~

 

--结束END--

本文标题: [原创]使用python对视频/音频文件

本文链接: https://www.lsjlt.com/news/180713.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • [原创]使用python对视频/音频文件
    [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作 转载请注明出处   一.关于为什么用pymediainfo以及pymediainfo的安装   使用python对视频/音频文件进行详细信息采集,并进行去重操作的核...
    99+
    2023-01-30
    音频文件 视频 python
  • 如何使用node.js对音视频文件加密
    这篇文章主要为大家展示了“如何使用node.js对音视频文件加密”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用node.js对音视频文件加密”这篇文章吧...
    99+
    2022-10-19
  • 使用node.js对音视频文件加密的实例代码
    废话不多说了,直接给大家贴代码了,具体代码如下所示: fs.readFile('./downsuccess/'+name+'', {flag: 'r+', encoding: ''}, functio...
    99+
    2022-06-04
    音视频 文件加密 实例
  • 使用python播放视频文件
    基于python和opencv实现的 import numpy as np import cv2 cap = cv2.VideoCapture('f:/rain_of_lovesickness.mp4') while (cap.i...
    99+
    2023-01-31
    视频文件 python
  • Python使用ffmpeg合成视频、音频的实现方法
    最近有在使用屏幕录制软件录制桌面,在用的过程中突发奇想,使用python能不能做屏幕录制工具,也锻炼下自己的动手能力。接下准备写使用python如何做屏幕录制工具的系列文章: 录制屏...
    99+
    2022-11-10
  • JS如使用音频可视化插件Wavesurfer.js
    这篇文章主要为大家展示了“JS如使用音频可视化插件Wavesurfer.js”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS如使用音频可视化插件Wavesur...
    99+
    2022-10-19
  • 怎么使用Python爬取抖音APP视频
    这篇文章主要讲解了“怎么使用Python爬取抖音APP视频”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python爬取抖音APP视频”吧!记录一下如何用python爬取app数据,...
    99+
    2023-06-15
  • Python使用pydub模块转换音频格式以及对音频进行剪辑
    前言 近端时间看了一个短视频,觉得视频的背景音乐片段很不错,想把这个背景音乐得到,虽然小编运用Python爬虫肯定能得到这首音乐,但是这个音乐片段肯定是得不到的,于是网上看一下相关官方文档,没想到python真的有模...
    99+
    2022-06-02
    python转换音频格式 python pydub 混音 python音频处理
  • 使用Python怎么在m3u8文件中提取视频
    这期内容当中小编将会给大家带来有关使用Python怎么在m3u8文件中提取视频,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. HLS协议与m3u8文件  HLS,即 H T T P   L ...
    99+
    2023-06-15
  • 如何使用Python下载抖音无水印视频
    这篇文章主要介绍如何使用Python下载抖音无水印视频,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、获取抖音视频连接得到如下信息: “5.1 HV:/ 守门员戴手套没法系鞋带这种体育精神,值得尊敬%遇见足球 %足...
    99+
    2023-06-15
  • 怎么使用Python下载抖音无水印视频
    小编给大家分享一下怎么使用Python下载抖音无水印视频,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python下载首先来看一下,直接访问抖音链接得到的结果。妥...
    99+
    2023-06-22
  • 使用python对视频文件分辨率进行分组的实例代码
    在平时的工作中,我们的目录有很多的视频文件,如果你没有一个好的视频分类习惯,在找视频素材的时候会很费时,通过对视频的分辨路进行分类可以在需要的时候快速找到你想要的视频分辨率。当然人工...
    99+
    2022-11-12
  • 线稿图视频制作补充(调整视频亮度、对比度;删除无用文件)
    🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝&#...
    99+
    2023-09-06
    python opencv 音视频
  • linux中如何使用Octave对音频文件进行读写操作
    这篇文章主要介绍了linux中如何使用Octave对音频文件进行读写操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Octave 是一个 Linux 上类似于 Matlab...
    99+
    2023-06-16
  • 如何使用PHP进行视频文件处理?
    视频文件处理是现代网络应用程序中必不可少的一部分,它包括裁剪、压缩、转码、添加水印和合并等操作。PHP 作为一种流行的服务器端编程语言,可以用于处理这些要求。在本文中,我们将介绍如何使用 PHP 处理视频文件。安装 FFMPEG 库FFMP...
    99+
    2023-05-14
    PHP 视频文件处理 处理技巧
  • 怎么在Python中利用m3u8拼接mp4视频文件
    本篇文章为大家展示了怎么在Python中利用m3u8拼接mp4视频文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pytho...
    99+
    2023-06-06
  • Python批量下载ts视频文件,并用ffmpeg合并
    目录 一、ts文件的由来 二、下载ts文件 1.下载index.m3u8,并做相应处理 2.下载ts文件 三、ffmpeg合并ts文件 一、ts文件的由来 ts文件,ts即"Transport Stream"的缩写,特点就是要求从视频流...
    99+
    2023-09-06
    python
  • 怎么使用Python自动化实现抖音自动刷视频
    这篇文章主要介绍了怎么使用Python自动化实现抖音自动刷视频的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Python自动化实现抖音自动刷视频文章都会有所收获,下面我们一起来看看吧。环境准备Pytho...
    99+
    2023-07-05
  • 怎么在python中使用moviepy对视频进行处理
    本篇文章为大家展示了怎么在python中使用moviepy对视频进行处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研...
    99+
    2023-06-08
  • 如何使用Octave数学技术处理音频文件
    小编给大家分享一下如何使用Octave数学技术处理音频文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我们的数字音频处理技术第三部分涵盖了信号调制内容,将解释如...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作