我试图编写一个程序,从一个文件夹中获取一组视频,对它们进行编译,然后从一个文件夹中获取另一组音频文件,并将它们连接起来,然后将组合的音频叠加在最终视频的顶部(希望有意义).我能够将视频处理成一个最终输出视频,但在组合音频时遇到了麻烦.下面我提供了与audio comp相关的两小段代码,我正在使用moviepy处理视频,并try 将其用于音频.

songDirectory = './songs/'
songList = []
songs = []
audioclip=''

def makeCompilation():
    for filename in os.listdir(songDirectory):
        f = os.path.join(songDirectory, filename)
        if os.path.isfile(f) and filename.endswith(".mp3"):
            audioclip = moviepy.editor.AudioFileClip(f)
            songList.append(filename)


    for song in os.listdir(songDirectory):
        c = os.path.join(songDirectory, song)
    audio_clips = moviepy.editor.AudioFileClip(c)
    audio_output = moviepy.editor.concatenate_audioclips(audio_clips)
    finalClip = concatenate_videoclips(videos, method="compose")
    final_duration = finalClip.duration    
    final_audio_output = audio_output.set_duration(final_duration)
    final_output= finalClip.set_audio(final_audio_output).fx(afx.audio_fadein, 3.0)


    audio_path = "./songs/tempaudiofile.m4a"

    #print(description)
    # Create compilation
    final_output.write_videofile(outputFile, threads=8, temp_audiofile=audio_path, remove_temp=True, codec="libx264", audio_codec="aac")

    return description

该程序似乎能够找到音频目录,但我需要能够使用操作系统.路径join(songDirectory,filename)直接指向每个mp3文件,所以我一直在处理它,直到我得到上面的代码.当我try 遍历songList时,正如所料,我得到了一个错误,说'str'不可编辑,还有其他错误,说'str'没有属性'duration'.基本上,我所需要做的就是迭代输入文件夹,并以任何方式组合文件.代码当前返回输出:

????Free Fredobagz x Aflacko x Flint type beat - 'Default_Dance' [prod. kah]-jro0v6ogZ0Y.mp4
225.05
Total Length: 225.05
225.05
Traceback (most recent call last):
  File "/Users/daddyK/Desktop/comp_ bot/make_compilation3.py", line 127, in <module>
makeCompilation(path = "./videos/",
  File "/Users/daddyK/Desktop/comp_ bot/make_compilation3.py", line 110, in makeCompilation
audio_output = moviepy.editor.concatenate_audioclips(audio_clips)
  File "/Users/daddyK/Library/Python/3.10/lib/python/site-packages/moviepy/audio/AudioClip.py", line 315, in concatenate_audioclips
durations = [c.duration for c in clips]
TypeError: 'AudioFileClip' object is not iterable

在这一点上,我有点困惑,所以如果有人能提供一些见解,我应该做什么来解决错误和/或如果我在代码方面朝着正确的方向前进,我将不胜感激!Sorry if the code doesn't make any sense I'll post the whole .py file if needed

推荐答案

根据@kesh的 comments ,你需要替换

songList.append(filename)

具有

songList.append(audioclip)

Python相关问答推荐

如何随着收件箱的增加动态添加到HTML表的右下角?

使用decorator 重复超载

Pandas使用过滤器映射多列

Ibis中是否有一个ANY或ANY_UTE表达,可以让我比较子查询返回的一组值中的值?

如何将带有逗号分隔的数字的字符串解析为int Array?

使用matplotlib pcolormesh,如何停止从一行绘制的磁贴连接到上下行?

在Pandas框架中截短至固定数量的列

更改matplotlib彩色条的字体并勾选标签?

TARete错误:类型对象任务没有属性模型'

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

rame中不兼容的d类型

追溯(最近最后一次调用):文件C:\Users\Diplom/PycharmProject\Yolo01\Roboflow-4.py,第4行,在模块导入roboflow中

对于一个给定的数字,找出一个整数的最小和最大可能的和

运行Python脚本时,用作命令行参数的SON文本

使用setuptools pyproject.toml和自定义目录树构建PyPi包

如何在Raspberry Pi上检测USB并使用Python访问它?

如何在Python中找到线性依赖mod 2

实现神经网络代码时的TypeError

如何更改groupby作用域以找到满足掩码条件的第一个值?

在matplotlib中使用不同大小的标记顶部添加批注