Python——初识音频剪辑

1

曲折的音频剪辑历程

我就百度搜音频剪辑软件,首页随便下载一个就开始cut,按照夫人的要求cut掉几段可省略的。然后问题来了!!!

cut完要导出,提示要付费,心里千万只?奔袭而过,这么low的软件功能还要收费??想着十块八块就直接算了,耽误我时间,结果注册了一看要30元,而且有效期只有3个月???

我还是自己写个代码来cut吧,一劳永逸。

然后我就网上开始搜罗资料,写啊写,剪啊剪,本来中午要推送的按键精灵帖子,愣是拖到了晚上(当然coding不难,难的是用户需求频繁变更

索性,把python的一起发了吧……

代码实现了剪切片段、片段合并,感兴趣的小伙伴可以直接拿去试用。

最末一段的倍速播放函数,AudioSegment模块研究半天没找到有加速相关的函数,于是就用了一个视频相关的模块去处理??反正最后是倍速成功了,不过有报出一个异常,时间关系就先不求甚解吧,欢迎各路大神来指点一二。

2

coding

#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
# @Time    : 2019-09-01 10:25
# @Author  : Ed Frey
# @File    : clips.py
# @Software: PyCharm
from pydub import AudioSegment
from moviepy.editor import *

def slice(start,end,input_path,output_path):
    '''
    to cut a slice of audio needed, from start time to end time ,unit is millisecond.
    :param start:
    :param end:
    :param input_path:
    :param output_path:
    :return:
    '''
    input_music = AudioSegment.from_mp3(input_path)
    output_music = input_music[start:end]
    output_music.export(output_path, format="mp3")
    # print(len(output_music), output_music.channels)
    
    
def merge(output_path,input_path_list=[]):
    '''
    to merge different slices in path_list together by order
    :param output_path:
    :param path_list:
    :return:
    '''
    if input_path_list is None:
        return None
    playlist = AudioSegment.empty()
    for sound in input_path_list:
        input_music = AudioSegment.from_mp3(sound)
        playlist += input_music
    playlist.export(output_path, format="mp3")
    # print(len(playlist), playlist.channels)
    # 如果需要对音频做封面、填写专辑名称、作者信息,可以用下方的格式输出
    # output_music.export("/Users/Ed_Frey/Desktop/mp3_cut/audio_clip/combine_3.mp3", format="mp3", bitrate="192k",
    # tags={"album": "专辑名称", "artist": "歌手"}, cover="/photo.jpeg")
    return True
def speedup(input_path,output_path,rate):
    '''
    to speedup video playing.
    :param input_path:
    :param output_path:
    :param rate:
    :return:
    '''
    mp3 = VideoFileClip(input_path)
    result = mp3.fl_time(lambda t:rate*t,apply_to=['mask','video','audio']).set_end(mp3.end/rate)
    result.write_videofile(output_path)
if __name__=="__main__":
    input_path = "/Users/Ed_Frey/Desktop/mp3_cut/audio_clip/jingwei.mp3"
    output_path = "/Users/Ed_Frey/Desktop/mp3_cut/audio_clip/output1.mp3"
    start = 183000
    end = 238600
    slice(start,end,input_path,output_path)
# merge(output_path,path_list=["/Users/Ed_Frey/Desktop/mp3_cut/audio_clip/output1.mp3",
#                              "/Users/Ed_Frey/Desktop/mp3_cut/audio_clip/output2.mp3",
#                              "/Users/Ed_Frey/Desktop/mp3_cut/audio_clip/output3.mp3",
#                              "/Users/Ed_Frey/Desktop/mp3_cut/audio_clip/output4.mp3"])
#

PS: 因为这次剪辑的故事要拿去评选,所以昨天临时下架了,等后面再播放给大家听。

开头的故事也一样精彩吧~是前一阵刚去电台录播的一段故事

奔跑的键盘侠原创作品 | 尽情分享朋友圈 | 转载请联系授权

原文发布于微信公众号 - 奔跑的键盘侠(runningkeyboardhero)

原文发表时间:2019-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券