【问题标题】:Convert from opus to ogg file using ffmpeg [python soundfile]使用 ffmpeg [python soundfile] 从 opus 转换为 ogg 文件
【发布时间】:2021-11-19 08:35:13
【问题描述】:

我在我的一个项目中使用 python soundfile 来处理音频文件。我有一个包含 opus 文件的数据集。

python soundfile 不能直接读取 opus 文件,但可以读取 ogg 文件。 (https://github.com/bastibe/python-soundfile/issues/252)

如何使用 ffmpeg 将所有 opus 文件转换为 ogg 文件?

我试过下面的命令,

 ffmpeg -i test_file_2.opus -c:a libvorbis -b:a 16k test_file_2.ogg

但我得到一个错误,

ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 7.3.0 (crosstool-NG 1.23.0.449-a04d0)
  configuration: --prefix=/opt/conda --cc=/opt/conda/conda-bld/ffmpeg_1597178665428/_build_env/bin/x86_64-conda_cos6-linux-gnu-cc --disable-doc --disable-openssl --enable-avresample --enable-gnutls --enable-hardcoded-tables --enable-libfreetype --enable-libopenh264 --enable-pic --enable-pthreads --enable-shared --disable-static --enable-version3 --enable-zlib --enable-libmp3lame
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
[ogg @ 0x55bad6b9cbc0] 543 bytes of comment header remain
Input #0, ogg, from 'test_file_2.opus':
  Duration: 00:00:14.10, start: 0.000000, bitrate: 34 kb/s
    Stream #0:0: Audio: opus, 48000 Hz, mono, fltp
    Metadata:
      album           : Onder Moeders Vleugels
      ENCODER_OPTIONS : --quiet
      artist          : Louisa May Alcott
      title           : 02 - Een vroolijk kerstfeest
      encoder         : opusenc from opus-tools 0.1.10;Lavf57.83.100
Unknown encoder 'libvorbis'

【问题讨论】:

    标签: audio ffmpeg ogg opus


    【解决方案1】:

    我现在正在使用 librosa 进行转换,但这非常慢:

    # converting opus to ogg files for reading audio files with python soundfile
    from glob import glob
    from tqdm import tqdm
    import soundfile as sf 
    import librosa
    import os
    
    for f in tqdm(glob("/Data/AUDIO_DATA/mls_dutch_opus/*/audio/*/*/*.opus") + glob("/Data/AUDIO_DATA/mls_german_opus/*/audio/*/*/*.opus")):
        audio, sr = librosa.load(f, res_type='kaiser_fast', sr = 16000)
        sf.write(f.replace(".opus", ".ogg"), audio, sr, format='ogg', subtype='vorbis')
        os.remove(f)
    

    【讨论】:

      【解决方案2】:

      未知编码器“libvorbis”

      您的 ffmpeg 不支持 libvorbisconfigure 行中缺少 --enable-libvorbis。 libvorbis 是一个输出 Vorbis 音频格式的音频编码器。 Vorbis 是 OGG/OGA 容器中通常使用的音频格式。 libvorbis 是推荐的 Vorbis 音频编码器。

      查找具有--enable-libvorbis 的 ffmpeg 新版本/包或重新编译 ffmpeg 并包含它。

      实验性 vorbis 编码器

      FFmpeg 有一个名为 vorbis 的内置编码器,但它被认为是实验性的,无法与 libvorbis 相提并论。如果您关心质量,请改用 libvorbis。如果你想尝试 vorbis:

      ffmpeg -i input.opus -c:a vorbis -strict experimental output.ogg
      

      或通过管道连接到 oggenc

      ffmpeg -i input.opus -f wav - | oggenc -o output.ogg -
      

      【讨论】:

        猜你喜欢
        • 2021-08-09
        • 2016-11-06
        • 2023-03-20
        • 2023-03-26
        • 2018-11-28
        • 2020-02-05
        • 2021-02-05
        • 2017-07-15
        • 1970-01-01
        相关资源
        最近更新 更多