使用 PyDub 时出错:WAVE 格式不支持 pcm_s8 编解码器
Posted
技术标签:
【中文标题】使用 PyDub 时出错:WAVE 格式不支持 pcm_s8 编解码器【英文标题】:Error using PyDub: pcm_s8 codec not supported in WAVE format 【发布时间】:2019-08-30 03:59:24 【问题描述】:试图读入 WAVE 文件。
Pydub 在过去几个月里一直运行良好,直到我遇到无法导入 Python 的特定 WAVE 文件格式(但在 windows 媒体播放器和其他播放器上播放时没有问题)。
from pydub import Audiosegment
file = r"NICE_Dev.wav"
print(utils.mediainfo(file))
try:
data = AudioSegment.from_file(file)
except Exception as e:
print(e)
错误信息是:
ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8.3.1 (GCC) 20190414
configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --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
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Guessed Channel Layout for Input Stream #0.0 : mono
Input #0, wav, from 'NICE_Dev.wav':
Duration: 00:25:55.39, bitrate: 64 kb/s
Stream #0:0: Audio: pcm_mulaw ([7][0][0][0] / 0x0007), 8000 Hz, mono, s16, 64 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (pcm_mulaw (native) -> pcm_s8 (native))
Press [q] to stop, [?] for help
[wav @ 00000265db3c1bc0] 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!
我相信这是由于编码pcm_s8,但我不知道如何解决这个问题,使用“utils.mediainfo”的音频文件的详细信息是:
'index': '0', 'codec_name': 'pcm_mulaw', 'codec_long_name': 'PCM mu-law /
G.711 mu-law', 'profile': 'unknown', 'codec_type': 'audio', 'codec_time_base':
'1/8000', 'codec_tag_string': '[7][0][0][0]', 'codec_tag': '0x0007',
'sample_fmt': 's16', 'sample_rate': '8000', 'channels': '1', 'channel_layout':
'unknown', 'bits_per_sample': '8', 'id': 'N/A', 'r_frame_rate': '0/0',
'avg_frame_rate': '0/0', 'time_base': '1/8000', 'start_pts': 'N/A',
'start_time': 'N/A', 'duration_ts': '12443128', 'duration': '1555.391000',
'bit_rate': '64000', 'max_bit_rate': 'N/A', 'bits_per_raw_sample': 'N/A',
'nb_frames': 'N/A', 'nb_read_frames': 'N/A', 'nb_read_packets': 'N/A',
'DISPOSITION': 'default': '0', 'dub': '0', 'original': '0', 'comment': '0',
'lyrics': '0', 'karaoke': '0', 'forced': '0', 'hearing_impaired': '0',
'visual_impaired': '0', 'clean_effects': '0', 'attached_pic': '0',
'timed_thumbnails': '0', 'filename': 'NICE_Dev.wav', 'nb_streams': '1',
'nb_programs': '0', 'format_name': 'wav', 'format_long_name': 'WAV / WAVE
(Waveform Audio)', 'size': '12443174', 'probe_score': '99'
【问题讨论】:
【参考方案1】:问题已解决 - 不知道为什么,但标准输入不适用于某些 WAV 编码,通过使用未记录的方法 from_file_using_temporary_files() 解决
【讨论】:
对于有类似问题的用户,您应该提供“另一种方法”的详细信息 我遇到了这个错误。具体来说,了解您是如何解决的会很有帮助。 尝试使用未记录的方法 from_file_using_temporary_files 传递一个临时文件而不是使用标准输入以上是关于使用 PyDub 时出错:WAVE 格式不支持 pcm_s8 编解码器的主要内容,如果未能解决你的问题,请参考以下文章