AKATheIronHead 2019-10-17 10:02 采纳率: 0%
浏览 827

pydub无法打开wav文件

打算使用pydub批量处理录音文件格式,但是光是执行到打开录音文件就会报错。
代码:
from pydub import AudioSegment

sound = AudioSegment.from_file('D:\wavdownload\1b449bd73b866e73c997401c19462353.wav', format='wav')

报错:
Traceback (most recent call last):
File "D:/PycharmProjects/chaxunyemian/wavtomp.py", line 5, in
sound = AudioSegment.from_file('D:\wavdownload\1b449bd73b866e73c997401c19462353.wav', format='wav')
File "D:\Anaconda3\envs\baidujiami\lib\site-packages\pydub\audio_segment.py", line 704, in from_file
p.returncode, p_err))
pydub.exceptions.CouldntDecodeError: Decoding failed. ffmpeg returned error code: 1

Output from ffmpeg/avlib:

ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.1 (GCC) 20190807
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
Guessed Channel Layout for Input Stream #0.0 : mono
Input #0, wav, from 'D:\wavdownload\1b449bd73b866e73c997401c19462353.wav':
Duration: 00:01:17.70, bitrate: 64 kb/s
Stream #0:0: Audio: pcm_alaw ([6][0][0][0] / 0x0006), 8000 Hz, mono, s16, 64 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (pcm_alaw (native) -> pcm_s8 (native))
Press [q] to stop, [?] for help
[wav @ 000000000042b9c0] pcm_s8 codec not supported in WAVE format
Could not write header for output file #0 (incorrect codec parameters ?): Function not implemented
Error initializing output stream 0:0 --
Conversion failed!

是不是wav文件的编码有问题?我该如何解决

在cmd尝试用命令来转换格式是可以的:
ffmpeg -i 1b449bd73b866e73c997401c19462353.wav d:\wavdownload\1b449bd73b866e73c997401c19462353.mp3
执行这条语句拿到了MP3文件。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-29 22:30
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,首先确保你的系统已经安装了FFmpeg。如果你没有安装它,可以使用以下命令进行安装:

    pip install ffmpeg-python
    

    然后你可以按照以下步骤操作:

    1. 导入所需的库:
    from pydub import AudioSegment
    
    1. 加载wav文件并设置为AudioSegment对象:
    sound = AudioSegment.from_file('D:\wavdownload\1b449bd73b866e73c997401c19462353.wav', format='wav')
    
    1. 使用convert()方法将音频文件转换为其他格式(例如MP3):
    # 将音频文件转换为MP3
    sound.export("output.mp3", format="mp3")
    

    注意:在转换过程中可能会遇到错误,比如音频文件格式不支持等。如果出现错误,你可以检查文件的扩展名是否正确,并且是否有足够的权限访问文件。此外,确保你有足够的内存和磁盘空间来存储新的文件。

    以上就是如何使用pydub批量处理录音文件格式的方法。希望这对你有所帮助!

    评论

报告相同问题?