首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pyav和python将mp3转换为wav?

如何使用pyav和python将mp3转换为wav?
EN

Stack Overflow用户
提问于 2022-05-20 12:20:57
回答 1查看 319关注 0票数 0

我使用python和pyav将mp3转换为wav。我的代码如下:‘

代码语言:javascript
复制
def mp3_to_wav(mp3_path, wav_path):
 inp = av.open(mp3_path, 'r')
 out = av.open(wav_path, 'w')
 ostream = out.add_stream("pcm_s16le")

    for frame in inp.decode(audio=0):
        frame.pts = None

        for p in ostream.encode(frame):
            out.mux(p)

    for p in ostream.encode(None):
        out.mux(p)

    out.close()
}}

“”但是py魅力告诉我,时间戳在流0的数据包中是未设置的。这是不可取的,并将停止工作在未来。修正您的代码,以正确设置时间戳,编码器没有产生正确的pts,编造了一些。

我该怎么办?

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-26 02:46:21

代码语言:javascript
复制
# noinspection PyUnresolvedReferences
def to_wav(in_path: str, out_path: str = None, sample_rate: int = 16000) -> str:
    """Arbitrary media files to wav"""
    if out_path is None:
        out_path = os.path.splitext(in_path)[0] + '.wav'
    with av.open(in_path) as in_container:
        in_stream = in_container.streams.audio[0]
        with av.open(out_path, 'w', 'wav') as out_container:
            out_stream = out_container.add_stream(
                'pcm_s16le',
                rate=sample_rate,
                layout='mono'
            )
            for frame in in_container.decode(in_stream):
                for packet in out_stream.encode(frame):
                    out_container.mux(packet)

    return out_path
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72318828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档