java 单机接口限流处理方案
1040
2022-06-07
刚从B站上看过倒放挑战之后也想体验下,心血来潮一个晚上完成了基本的实现。其中倒放与播放部分使用了pydub这个音频库,十分快捷方便,但是它完整一套的配置让我还是踩了几个坑。特将其配置过程记录于此,方便大家。
Windows10
系统
< Pydub in Github >
Pydub
Anaconda
:打开Anaconda prompt
,activate
切换至工作环境下,键入pip install pydub
Pycharm
:setting
下project
,将pydub
安装进pip
环境
FFmpeg
(或选择libav
)FFmpeg
< FFmpeg官网 > :找到对应的系统版本下载。
将压缩包解压到任意目录。
将安装安装目录下的bin
文件夹添加到系统的Path
环境变量中。
如果添加环境变量成功后,打开cmd
,键入ffmpeg -version
,就可以看到版本信息。
FFmpeg
包
除了按完成以上下载之外,还需要在python
中导入FFmpeg
包
同上Pydub
包导入 - pip install FFmpeg
Pyaudio
Pydub
打开或保存WAV
文件。为了打开或保存非WAV
文件——比如MP3
——你需要ffmepg
或是libav
。而如果需要播放音频,则需要安装以下包:
simpleaudio
pyaudio
ffplay
(通常随ffmpeg
安装)
avplay
((通常随libav
安装)
官网是强烈推荐安装simpleaudio
,而我选择的是pyaudio
,因为之后程序的其他部分还需要用到,所以就直接选择了pyaudio
。
包安装同上Pydub
- pip install pyaudio
from pydub import AudioSegment
from pydub.playback import play
sound = AudioSegment.from_file("0.mp3", "mp3")
play(sound)
pydub
和ffmpeg
,但是缺少播放音频的包,安装后不再显示。ffmpeg
其中的一项,还缺少另外一项,安装后不再显示。mp4_version = AudioSegment.from_file("never_gonna_give_you_up.mp3", "mp3")
wma_version = AudioSegment.from_file("never_gonna_give_you_up.wav", "wav")
aac_version = AudioSegment.from_file("never_gonna_give_you_up.mp4", "mp4")
# pydub做任何操作的时间尺度都是毫秒
ten_seconds = 10 * 1000
first_10_seconds = song[:ten_seconds]
last_5_seconds = song[-5000:]
without_the_middle = beginning + end
# 声音增益6dB
beginning = first_10_seconds + 6
# 声音减弱3dB
end = last_5_seconds - 3
# 将片段重复两遍
do_it_over = with_style * 2
# 读取想要倒放的音频文件
ted = AudioSegment.from_file("ted.mp3")
# 将音频倒放赋给变量 backwards
backwards = ted.reverse()
awesome.export("mashup.mp3", format="mp3")
from pydub import AudioSegment
# i 从 0 到 9 取值
for i in range(10):
# 按顺序读取 00i.m4a 文件
temp = AudioSegment.from_file(f"00{i}.m4a")
# 将 00i.m4a 转换为 答案00i.mp3
temp.export(f"答案00{i}.mp3")
# 将音频倒放
backplay = temp.reverse()
# 将倒放音频存为 音谜00i.mp3
backplay.export(f"音谜00{i}.mp3")
# 打印个 done 提示完成
print("done")
from glob import glob
from pydub import AudioSegment
playlist_songs = [AudioSegment.from_mp3(mp3_file) for mp3_file in glob("*.mp3")]
first_song = playlist_songs.pop(0)
# 让我们只包含第一首歌的前30秒 (切片以毫秒为单位)
beginning_of_song = first_song[:30*1000]
playlist = beginning_of_song
for song in playlist_songs:
# 我们不想让结尾听起来像是突然停止,所以我们给它加上10秒的淡化
playlist = playlist.append(song, crossfade=(10 * 1000))
# 让我们给最后一首歌的结尾加上淡出
playlist = playlist.fade_out(30)
# 唔……我还想知道它有多长( len(audio_segment)返回值同样是以毫秒计的 )
playlist_length = len(playlist) / (1000*60)
# 现在保存下来!
out_f = open("%s_minute_playlist.mp3" % playlist_length, 'wb')
playlist.export(out_f, format='mp3')
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~