gpt4 book ai didi

python - (python3.6)如何从视频文件中检查音频数据并有效地将其移动

转载 作者:行者123 更新时间:2023-12-03 01:40:53 24 4
gpt4 key购买 nike

我有一个充满视频的文件夹。其中一些具有音频,而另一些则是静音的(实际上没有音频流)。
我制作的以下小型程序的目标是将没有音频的视频移动到名为gifs的文件夹中。

我的问题是:我该如何优化?

这是程序:

from subprocess import check_output
from os.path import join,splitext
from os import rename,listdir
from shutil import move




def noAudio(path):
cmd =("ffprobe -i {0} -show_streams -select_streams a -loglevel error".format(path))
output = check_output(cmd,shell=True)
boolean = (output == b'')
return boolean

def del_space(file):
rename(join(src,file),join(src,file.replace(' ','')))
Newf = file.replace(' ','')
return Newf

def StoreNoAudio(src,dist):

target = [".mp4",".MP4",".gif"]
GifMoved = 0
print("processing...")

for file in listdir(src):
direction,extension = splitext(file)

try:

if extension in target:
#find space related errors and correct them
if ' ' in file:
file = del_space(file)

path = join(src,file)
distination = join(dist,file)
#move file without audio streams
if(extension == '.gif' or noAudio(path) == True):
move(path,distination)
GifMoved += 1
except Exception as e:
print(e)


print('Mute videos moved:',GifMoved)
print('finished!')


dist = (r"C:\Users\user\AppData\Roaming\Phyto\G\Gif")
src = (r"C:\Users\user\AppData\Roaming\Phyto\G\T")

StoreNoAudio(src,dist)

*我是Stackoverflow的新手,请随时告诉我我做错了什么。

最佳答案

如果我理解正确,则您的程序已经正确运行,并且您正在寻找减少运行时间的方法。

您可以使用multiprocessing package将程序并行化为每个文件的子进程。

为此,请将for循环中的代码放入一个函数中(我们将其称为process_file),然后:

import multiprocessing
pool = multiprocessing.Pool(multiprocessing.cpu_count())
pool.map(process_file, listdir(src))

这将创建与cpus / cores一样多的子进程,并将工作分配到这些子进程。当然,这将大大减少运行时间,具体取决于计算机中可用内核的数量。

但是,由于子进程无法访问变量 GifMoved,因此无法直接跟踪移动文件的数量。如果文件被移动,您的函数可以返回一个 1,否则返回一个 0,然后您可以总结对 process_file的所有调用的结果,如下所示:
GifMoved = sum(pool.map(process_file, listdir(src))) # instead of last line above

关于python - (python3.6)如何从视频文件中检查音频数据并有效地将其移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47599014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com