前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫有用的库:pydub,处理音视频的库

Python爬虫有用的库:pydub,处理音视频的库

原创
作者头像
远方的星
修改2021-08-16 10:25:54
1.5K0
修改2021-08-16 10:25:54
举报

Pydub

新手使用的话,可能会遇到一些问题,我写了一篇关于依赖库ffmpeg的文章,可以参考一下:

python库ffmpeg的错误解决方法

常用的一些用法

1、打开音频文件
  • 第一种方法:
代码语言:txt
复制
from pydub import AudioSegment

wav_version = AudioSegment.from_wav("文件路径.wav")
mp3_version = AudioSegment.from_mp3("文件路径.mp3")
ogg_version = AudioSegment.from_ogg("文件路径.ogg")
flv_version = AudioSegment.from_flv("文件路径.flv")
mp4_version = AudioSegment.from_file("文件路径.mp4", "mp4")
wma_version = AudioSegment.from_file("文件路径.wma", "wma")
aac_version = AudioSegment.from_file("文件路径.aiff", "aac")
  • 第二种方法:
代码语言:txt
复制
mp3_audio = AudioSegment.from_file("文件路径.mp3", format="mp3")
# 还可以更精确的读取
raw_audio = AudioSegment.from_file("/path/to/sound.raw", format="raw",frame_rate=44100, channels=2, sample_width=2)

frame_rate:采样率,其值一般为44100 (44.1kHz - CD音频), 或是 48000 (48kHz -DVD音频) channels:声道,1--表示单声道,2--表示双声道 sample_width:取样的字节数,1--表示8-bit音频,2--表示16-bit音频,4--表示32-bit音频。

格式不限于此,它支持ffmpeg库所支持的文件。

==ffmpeg支持的文件参考==:http://www.ffmpeg.org/general.html#File-Formats

2、保存文件
代码语言:txt
复制
song.export("文件路径.mp3", format="mp3")
# 更精确的保存
file_handle = song.export("保存的路径.mp3",
                           format="mp3",
                           bitrate="192k",
                           tags={"album": "The Bends", "artist": "Radiohead"},       
                           cover="图片文件路径.jpg")

bitrate:可以设置编码时使用的编码器,具体可以参考ffmpeg文档 tag:给编码器提供媒体信息标签,不是所有的格式都可以使用的 cover:给音频文件添加封面

3、一些简单的音频处理

==pydub中做任何的操作的时间尺度都是毫秒级==

  • ①、对音频段进行接片
代码语言:txt
复制
from pydub import AudioSegment
# 读取一个mp3文件
song = AudioSegment.from_mp3("文件路径.mp3")
# 设定一个10s的单位时间
ten_seconds = 10 * 1000
# 进行切片处理
first_10_seconds = song[:ten_seconds]
last_5_seconds = song[-5000:]
  • ②、对音视频的音量大小进行处理
代码语言:txt
复制
from pydub import AudioSegment
# 读取一个mp3文件
song = AudioSegment.from_mp3("文件路径.mp3")
# 设定一个10s的单位时间
ten_seconds = 10 * 1000
# 进行切片处理
first_10_seconds = song[:ten_seconds]
last_5_seconds = song[-5000:]
# 对前10秒的声音调高3dB,后5秒的声音降低3dB
first_10_seconds_new = first_10_seconds + 6
last_5_seconds_new = last_5_seconds - 3
  • ③、淡入淡出
代码语言:txt
复制
from pydub import AudioSegment
# 读取一个mp3文件
song = AudioSegment.from_mp3("文件路径.mp3")
# 2秒淡入3秒淡出
result = song.fade_in(2000).fade_out(3000)
  • ④、获取音频的长度、响度、声道数、取样数、帧速率、采样率、帧数
代码语言:txt
复制
from pydub import AudioSegment
# 读取一个mp3文件
sound = AudioSegment.from_mp3("文件路径.mp3")
# 获取长度
len_s = sound.duration_seconds
# 获取响度
loudness = sound.dBFS
# 获取声道数
channel_count = sound.channels
# 取样数
bytes_per_sample = sound.sample_width
# 获取帧速率
frames_per_second = sound.frame_rate
# 获取采样率
bytes_per_frame = sound.frame_width
# 获取帧数,这个例子是返回200毫秒中帧的数目
number_of_frames = sound.frame_count(ms=200)
  • ⑤、音频的连接
代码语言:txt
复制
# 直接用+相连就可以
song_link = song_1 + song_2
  • ⑥、音频重复
代码语言:txt
复制
# 直接用*就可以,n代表重复几次
song_repeat = song * n
  • ⑦、创建一个静音的音频
代码语言:txt
复制
# 1000即代表1秒,不要忘了,这里都是以毫秒作为单位进行操作的
song = AudioSegment.silent(duration=1000)
  • ⑧、创建一个持续时间为0的AudioSegment对象
代码语言:txt
复制
empty = AudioSegment.empty()

可以用于将许多的音频集合在一起循环

代码语言:txt
复制
# 存放三个音频文件
sounds = [song_1, song_2, song_3]
# 创建一个持续时间为0的对象
empty = AudioSegment.empty()
for sound in sounds:
    empty += sound

参考

参考一:

pydub--GitHub

参考二:

最好用的python音频库之一:pydub的中文文档(含API)

参考三:

ffmpeg文档

作者:远方的星 CSDN:https://blog.csdn.net/qq_44921056

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用的一些用法
    • 1、打开音频文件
      • 2、保存文件
        • 3、一些简单的音频处理
        • 参考
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档