3行Python代码实现剪辑音乐

目录
  • 前言
  • 1.音量变化
  • 2.重复片段
  • 3.渐进渐出
  • 4.反转音乐

前言

你没看错,Python剪辑音乐,只需要3行语句就能瞬间完成,比如我要剪辑33秒到1分10秒的音乐片段:

from pydub import AudioSegment
song = AudioSegment.from_mp3("end_of_time.mp3")
song[33,[object Object],1000].export('end_of_time_slice.mp3')

运行这个脚本,我们能瞬间完成剪辑

对于Python而言,这个功能简直太基本了,难以言语的快。这段时间里,普通同学的Adobe Audition 可能还没成功打开 。下面再介绍点更高级的玩法。

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端装依赖模块,多舒服的一件事啊

输入以下命令安装我们所需要的依赖模块:

pip install pydub

看到 Successfully installed xxx 则说明安装成功。你还需要安装ffmpeg, 这个网络上有许多教程,你也可以阅读我们上次的《提取音乐高潮》内含详细的安装教程。

1.音量变化

我们还可以修改上面剪辑的那段音乐的入场音量大小和退场音量大小:

from pydub import AudioSegment

# 1秒=1000毫秒
SECOND = 1000
# 导入音乐
song = AudioSegment.from_mp3("end_of_time.mp3")

# 取33秒到70秒间的片段
song = song[33*SECOND:70*SECOND]

# 入场部分提高6分贝, 退场部分减少5分贝
ten_seconds = 10 * SECOND
last_five_seconds = -5 * SECOND
beginning = song[:ten_seconds] + 6
ending = song[last_five_seconds:] - 5

# 形成新片段
new_song = beginning + song[ten_seconds:last_five_seconds] + ending

# 导出音乐
new_song.export('end_of_time_slice.mp3') 

听听看

效果和预期的一致,想想看,如果这个你用专业的音乐编辑器来做,得画段切片、设置音量,然后保存,细思极恐,太费时间了!Python可能在你打开软件的这段时间里就完成了。

2.重复片段

如何重复我们开头说到的33秒到70秒这段音乐片段?可简单了,你只要会做乘法就行:

from pydub import AudioSegment
song = AudioSegment.from_mp3("end_of_time.mp3")
(song[33*1000:63*1000])*2.export('end_of_time_slice.mp3')  

没错,在pydub中,片段和数量之间的运算里加法调音量,乘法调长度,你记住了吗?

3.渐进渐出

有时候我们的耳朵需要时间来适应音量的变化,尤其是在看短视频的时候,音量忽大忽小实在是太没有用户体验了,这时候渐进渐出的设计就尤为关键:

from pydub import AudioSegment

# 导入音乐
song = AudioSegment.from_mp3("end_of_time.mp3")

# 提取片段
song = song[33*1000:70*1000]

# 渐进渐出
awesome = song.fade_in(5000).fade_out(3000)

# 导出音乐
awesome.export('end_of_time_fade.mp3') 

听听看,可优秀了!

4.反转音乐

这可能是最有趣和最可能产生特别效果的操作,它会让你完全不认得这首歌:

from pydub import AudioSegment

# 导入音乐
song = AudioSegment.from_mp3("end_of_time.mp3")[33*1000:70*1000]

# 翻转音乐
backwards = song.reverse()

# 导出音乐
backwards.export("end_of_time_reverse.mp3") 

当然,反转音乐后会变得“耳”不忍“听”,这也很正常,原来的“正向规律 ” 倒转后,音调节奏也变了(不排除有特殊口味的人喜欢这种感觉呢)。好奇吗?好奇就自己动手试试看!

把这首歌折腾了这么久,还是得把原曲告诉大家的:是 K-391 / Alan Walker / Ahrix 的 End of Time.

到此这篇关于3行Python代码实现剪辑音乐的文章就介绍到这了,更多相关Python剪辑音乐内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python 音视频剪辑快速入门教程

    目录 一.引言 二.Moviepy 简介 三.Moviepy 安装 四.音视频的加载和保存 五.音视频数据的访问 六.音视频变换 1.Clip 的 fl 方法 2.Clip 的 fl_time 方法 3.剪辑颜色变换 4.剪辑大小变换 5.剪辑内容变换 七.剪辑合成 1.概述 2.将多个剪辑拼接 3.多个剪辑同屏播放 4.将一系列图像构造成视频 5.其他几种生成视频方法简介 八.小结 一.引言 在这个短视频和自媒体大行其道的年代,音视频剪辑成为了大佬们的必备工具,现在有很多音视频剪辑的软件,如剪

  • Python轻松搞定视频剪辑重复性工作问题

    目录 01 安装 02 剪辑 01 安装 对视频进行批量剪辑,需要三个库,分别是Moviepy库和Pathlib库,还有Tkinter库. 首先我们对这两个库进行安装,命令如下: pip install moviepy pip install pathlib 02 剪辑 上面我们已经安装好所需要的库了,现在开始来对视频进行剪辑操作. 视频剪辑: Moviepy库有一个VideoFileClip函数,将视频传入这个函数后,会返回一个VideoFileClip实例对象,该对象可以被subclip()

  • 基于Python实现丝滑换装视频剪辑

    目录 软硬件.技能需求 颜色变换说明 Python 应用插件 思路流程 MiVOS 模块交互式 看到人家用PR什么编辑软件做这种丝滑一键换装的视频,自己也想尝试一下.不过PR这破玩意太难用了,还不如敲代码来的省事. 最开始想用 moviepy 的 moviepy.video.fx.all.mask_color 蒙版处理,发现还要结合目标识别这个复杂度就有点上头了.然后换了一个思路进行处理之后就算成功了吧.来看看成品效果先. python 丝滑换衣算法演示 还是老套路先说机器配置,机器配置不够的玩

  • python基于moviepy实现音视频剪辑

    目录 实践步骤 完整代码 参考 实践步骤 1.寻找合适的Python库(安装是否麻烦.使用是否简便.执行会不会太久) moviepy 音视频库.分析需要用的API:代码示例 2.定义输入输出 输入:一个音视频文件的地址,需要剪出来的时间段 输出:剪辑片段的文件 3.设计执行流程并一步步实现(定义函数,与使用具体API相关) 读入并创建clip对象. 剪辑subclip,输入时间参数可以是时间格式的字符串. 导出write_videofile. 4.结论:时间太久,片段多长就花了多久的时间:CPU

  • 3行Python代码实现剪辑音乐

    目录 前言 1.音量变化 2.重复片段 3.渐进渐出 4.反转音乐 前言 你没看错,Python剪辑音乐,只需要3行语句就能瞬间完成,比如我要剪辑33秒到1分10秒的音乐片段: from pydub import AudioSegment song = AudioSegment.from_mp3("end_of_time.mp3") song[33,[object Object],1000].export('end_of_time_slice.mp3') 运行这个脚本,我们能瞬间完成剪

  • 21行Python代码实现拼写检查器

    引入 大家在使用谷歌或者百度搜索时,输入搜索内容时,谷歌总是能提供非常好的拼写检查,比如你输入 speling,谷歌会马上返回 spelling. 下面是用21行python代码实现的一个简易但是具备完整功能的拼写检查器. 代码 import re, collections def words(text): return re.findall('[a-z]+', text.lower()) def train(features): model = collections.defaultdict(

  • 1 行 Python 代码快速实现 FTP 服务器

    摘要: 当你想快速共享一个目录的时候,这是特别有用的,只需要1行代码即可实现. 当你想快速共享一个目录的时候,这是特别有用的,只需要1行代码即可实现. FTP 服务器,在此之前我都是使用Linux的vsftpd软件包来搭建FTP服务器的,现在发现了利用pyftpdlib可以更加简单的方法即可实现FTP服务器的功能. 环境要求 Python 2.7 Windows / Linux 环境搭建 一行代码实现FTP服务器 通过Python的-m选项作为一个简单的独立服务器来运行,当你想快速共享一个目录的

  • 50行Python代码实现人脸检测功能

    现在的人脸识别技术已经得到了非常广泛的应用,支付领域.身份验证.美颜相机里都有它的应用.用iPhone的同学们应该对下面的功能比较熟悉 iPhone的照片中有一个"人物"的功能,能够将照片里的人脸识别出来并分类,背后的原理也是人脸识别技术. 这篇文章主要介绍怎样用Python实现人脸检测.人脸检测是人脸识别的基础.人脸检测的目的是识别出照片里的人脸并定位面部特征点,人脸识别是在人脸检测的基础上进一步告诉你这个人是谁. 好了,介绍就到这里.接下来,开始准备我们的环境. 准备工作 本文的人

  • 15行Python代码带你轻松理解令牌桶算法

    在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送,令牌桶算法就实现了这个功能, 可控制发送到网络上数据的数目,并允许突发数据的发送. 什么是令牌 从名字上看令牌桶,大概就是一个装有令牌的桶吧,那么什么是令牌呢? 紫薇格格拿的令箭,可以发号施令,令行禁止.在计算机的世界中,令牌也有令行禁止的意思,有令牌,则相当于得到了进行操作的授权,没有令牌,就什么都不能做. 用令牌实现限速器 我们用1块令牌来代表发送1字节数据的资格,假设我们源源不断的发放令牌给程序,程

  • 10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)

    最近工作上有个需求,当爬虫程序遇到异常的时候,需要通知相应的人员进行修复.如果是国外可能是通过邮件的方式来通知,但国内除了万年不变的 qq 邮箱,大部分人都不会去再申请其他的账号,qq 邮箱也是闲的蛋疼的时候才会瞄一眼.你还记得上次看邮箱的内容是什么时候吗? 所以在国内最好的通知方式是通过手机短信,今天就教大家利用 python 10 行代码实现短信发送. Twilio 短信代理服务已经有非常多成熟的方案,比如国内的阿里云.这次我介绍的是国外的一个代理商「Twilio」,使用邮箱注册即送 15

  • 使用11行Python代码盗取了室友的U盘内容

    序言 那个猥琐的家伙整天把个U盘藏着当宝,到睡觉了就拿出来插到电脑上. 我决定想个办法看他U盘里都藏了什么,直接去抢U盘是不可能的,骗也是不可能的.那不是丢我Python程序员的脸? 我必须在电脑上智取,而且不能被他发现. 这个是我的思路: 当一个usb插入时,在后台自动把usb里的东西拷贝到本地或上传到某个服务器. 那么我就可以先借他电脑玩一会,然后把我写好的Python程序在电脑后台运行.每当有usb插入的时候,就自动拷贝文件. 如何判断U盘是否插入? 首先打开电脑终端,进入/Volumes

  • 500行Python代码打造刷脸考勤系统

    需求分析 "员工刷脸考勤"系统,采用Python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数据来标识每一个员工的面部信息,二是持久化地保存这些信息到数据库中去.更细地,还涉及表的设计;另一个基本要求是通过摄像头识别员工面部信息来完成考勤,这个问题基本可以通过遍历数据库里的员工面部数据与当前摄像头里的员工面部数据的比对来实现,但有一个问题就是假如摄像头里有多张人脸改怎么处理.扩展要求是导出每日的考勤表,可以拆分为两个部分,一个是存储考勤信

  • 10 行Python 代码实现 AI 目标检测技术【推荐】

    只需10行Python代码,我们就能实现计算机视觉中目标检测. from imageai.Detection import ObjectDetection import os execution_path = os.getcwd() detector = ObjectDetection() detector.setModelTypeAsRetinaNet() detector.setModelPath( os.path.join(execution_path , "resnet50_coco_b

  • 200行python代码实现2048游戏

    Python实战系列用于记录实战项目中的思路,代码实现,出现的问题与解决方案以及可行的改进方向 本文为第2篇–200行Python代码实现2048 一.分析与函数设计 1.1 游戏玩法 2048这款游戏的玩法很简单,每次可以选择上下左右滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢,系统也会在空白的地方乱数出现一个数字方块,相同数字的方块在靠拢.相撞时会相加.(介绍来自百度百科) 1.2 函数设计 _init _() 初始化4*4游戏地图,分数等游戏基本数据 is_gameover() 判

随机推荐