我的目标是有一个脚本,可以接收音频文件并将其音量增加50%。
我目前使用以下AutoHotKey代码片段将文件编码为MP3:
run_string := "bash -c """"c:Program FilesVideoLANVLCvlc.exe"" -I dummy """ . file_path . """ --sout='#transcode{acodec=mp3,vcodec=dummy}:standard{access=file,mux=raw,dst=""" . file_path . ".mp3""}' vlc://quit"""
我如何修改这一行,使其不仅编码为mp3,而且还将文件的体积增加50%?我试着设置--volume 150
,但它只是让文件播放,而我不想播放,我想把它保存在那个音量。
如果你有建议的其他windows兼容的工具来修改音频,可以做到这一点,(以及如何做到这一点的说明)我将很高兴听到他们。
建议您使用ffmpeg。它是非常强大的,跨平台的32或64位,音频和视频转换器。可以从Zeranoe下载FFmpeg - Builds
下面的示例命令用于从视频中提取音频,或支持音量增加或减少的音频转换器。
从视频中提取音频到MP3,或将音频转换为MP3 (sample InputFilePath_VideoOrAudio = "e:video.mp4" or "e:audio.m4a")
e:ffmpegffmpeg.exe -y -i "InputFilePath_VideoOrAudio" -acodec libmp3lame -ab 192k -ar 48000 -sn -dn -vn "E:out.mp3"
在提取add -af "volume=1.5"参数时,将音频从视频提取为MP3并将音量增加150%。
e:ffmpegffmpeg.exe -y -i "InputFilePath_VideoOrAudio" -acodec libmp3lame -ab 192k -ar 48000 -sn -dn -vn -af "volume=1.5" "E:out.mp3"
音频转换器参数列表(mp3,ogg,ac3,wma,flac,wav,aiff,m4a....)。要改变音量水平,同时转换为音频添加-af "volume=VolumeValue"参数。
VolumeValue=0.5减少音量%50
VolumeValue=1.5增加音量%150
VolumeValue=2.0增加音量%200,依此类推
e:ffmpegffmpeg.exe -y -i "InputFilePath_VideoOrAudio" -acodec libmp3lame -ab 192k -ar 48000 -sn -dn -vn -af "E:out.mp3"
e:ffmpegffmpeg.exe -y -i "InputFilePath_VideoOrAudio" -acodec ac3 -ab 192k -ar 48000 -sn -dn -vn "E:out.ac3"
e:ffmpegffmpeg.exe -y -i "InputFilePath_VideoOrAudio" -f ogg -acodec libvorbis -ab 192k -ar 48000 -sn -dn -vn "E:out.ogg"
e:ffmpegffmpeg.exe -y -i "InputFilePath_VideoOrAudio" -acodec wmav2 -ab 192k -ar 48000 -sn -dn -vn "E:out.wma"
e:ffmpegffmpeg.exe -y -i "InputFilePath_VideoOrAudio" -acodec flac -sn -dn -vn "E:out.flac"
e:ffmpegffmpeg.exe -y -i "InputFilePath_VideoOrAudio" -sn -dn -vn "E:out.wav"
e:ffmpegffmpeg.exe -y -i "InputFilePath_VideoOrAudio" -f aiff -sn -dn -vn "E:out.aiff"
e:ffmpegffmpeg.exe -y -i "InputFilePath_VideoOrAudio" -acodec aac -ab 192k -ar 48000 -sn -dn -vn "E:out.m4a"
注1:一些编解码器可能是实验性的,在这种情况下,您应该使用-strict experimental或-strict -2参数。
注2:-ab参数表示音频比特率。某些设备无法播放比特率大于-ab 192k的音频文件。使用-ab 128k或-ab 192k与-ar 44100参数来生成可以在大多数移动设备上播放的音频文件。-ac 2参数表示立体声-ac 1表示单声道
转换输入文件的特定部分使用-ss 00:00:00和-t参数。-ss表示Start From -t表示持续时间。重要提示:参数-ss应该放在-i参数之前,否则ffmpeg会缓慢地寻找-ss的位置。
示例:假设输入文件持续时间为00:20:00(20分钟)
仅使用-ss 00:05:00表示将输入文件从第5分钟开始转换到输入文件的末尾。输出文件的持续时间为15分钟。
using -ss 00:05:00 with -t 120或-t 00:02:00表示转换120秒,从第5分钟开始。输出文件的持续时间为120秒。
e:ffmpegffmpeg.exe -y -ss 00:05:00 -i "InputFilePath_VideoOrAudio" -t 120 -acodec libmp3lame -ab 192k -ar 48000 -sn -dn -vn -af "E:out.mp3"
注:-y表示提前YES到ffmpeg的是/否问题等输出文件已经存在,重写?使用-y参数ffmpeg在不询问用户的情况下重写已经存在的输出文件。
-sn禁用字幕,-vn禁用视频,-dn禁用输出文件的数据流。
如果你只是想要一个CLI工具,那么你可以使用ffmpeg:
ffmpeg.exe -i test.mp3 -af volume=1.5 loud.mp3
^ ^ ^
input new volume level output name
如果你想能够以编程方式做到这一点,看看你的配置文件,我推断python应该不是一个问题:)
因此,您可以将漂亮的pydub
模块与ffmpeg(或它也支持的avconv)一起用于您的任务。
例句:
from pydub import AudioSegment
AudioSegment.converter = r"C:PATH_TO_FFMPEG_DIRbinffmpeg.exe"
sound = AudioSegment.from_mp3("test.mp3") # <- the input file
new = sound.export("loud.mp3", format="mp3", parameters=["-vol", "384"]) # 384 <-> 150% volume
new.flush()
new.close()
384
的原因是ffmpeg文档声明
-vol volume change audio volume (256=normal)
所以256*1.5 = 384
刚刚在我的windows 7机器上测试了这个…
希望这对你有帮助。
VLC中的"——volume"选项实际上并不会像您想象的那样改变输出视频的音量。您要做的是添加压缩器过滤器,然后设置"compressor- make -gain"。将其设置为1-24的值,这取决于您希望视频的声音有多大。所以你的命令应该是这样的:
run_string := "bash -c """"c:Program FilesVideoLANVLCvlc.exe"" -I dummy """ . file_path . """ --sout='#transcode{acodec=mp3,vcodec=dummy,afilter=compressor}:standard{access=file,mux=raw,dst=""" . file_path . ".mp3 --compressor-makeup-gain=20""}' vlc://quit"""
顺便说一下,对于那些试图弄清楚如何使用VLC来增加视频文件中音频音量的人来说,你可以这样做:
"C:Program Files (x86)VideoLANVLCvlc.exe" yoursourcefile.mp4 :sout=#transcode{acodec=mp3,ab=128,channels=2,samplerate=44100,afilter=compressor}:file{dst=outputfilename.mp4} :sout-all :sout-keep --compressor-makeup-gain=20
将"yoursourcfile .mp4"one_answers"outputfilename.mp4"替换为您自己的文件名。根据我的经验,在我运行这个命令的一半时间里,VLC崩溃了,所以如果它在你身上崩溃了,你可能需要尝试不止一次。
在一个目录上运行这个命令,一个接一个地增加该目录上的所有文件的容量(否则它会占用所有的CPU)
FOR %f IN (*) DO (start/wait " "C:Program Files(x86) VideoLAN VLC vlc.exe"% f:多= #码{acodec = mp3, afilter =压缩机}:文件{dst f =提高%}: south -all: south -keep——play-and-exit——compressor-make -gain=10)
我相信mp3gain有一个命令行选项。您可以将其作为生成的文件的单独传递运行:
http://mp3gain.sourceforge.net/