在 Python 上使用 FFMPEG 将 MKV 转换为 MP3 时出现'unsupported input sample rate set'错误



我在尝试通过python将一些mkv文件转换为mp3时遇到了这个错误。几乎所有文件都已转换,但有些文件正面临此问题
https://cdn.discordapp.com/attachments/663255565451001866/788424224661569596/Error.txt

请帮我解决这个问题。

从上面的discord链接中提取的ffmpeg输出:

ffmpeg version git-2020-06-04-7f81785 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.1 (GCC) 20200523
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-libsrt --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-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil      56. 49.100 / 56. 49.100
libavcodec     58. 90.100 / 58. 90.100
libavformat    58. 44.100 / 58. 44.100
libavdevice    58.  9.103 / 58.  9.103
libavfilter     7. 84.100 /  7. 84.100
libswscale      5.  6.101 /  5.  6.101
libswresample   3.  6.100 /  3.  6.100
libpostproc    55.  6.100 / 55.  6.100
Input #0, matroska,webm, from 'J:DC EDOriginal45 'Kimi no Egao ga Nani Yori mo Suki Datta' by 'Chicago Poodle'.mkv':
Metadata:
title           : 045 'Kimi no Egao ga Nani Yori mo Suki Datta' by 'Chicago Poodle'.mkv
COPYRIGHT       : © 2013 APTX4869 Fansub
creation_time   : 2020-11-18T05:03:06.000000Z
COMPOSER        : Chicago Poodle
ENCODER         : Lavf58.44.100
Duration: 00:01:20.04, start: 0.000000, bitrate: 2023 kb/s
Stream #0:0(jpn): Video: hevc (Main), yuv420p(tv), 1440x1080 [SAR 4:3 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)
Metadata:
title           : VIDEO[AVC]
ENCODER         : Lavc58.90.100 libx265
BPS-eng         : 1831510
DURATION-eng    : 00:01:20.039000000
NUMBER_OF_FRAMES-eng: 1919
NUMBER_OF_BYTES-eng: 18324032
_STATISTICS_WRITING_APP-eng: mkvmerge v49.0.0 ('Sick Of Losing Soulmates') 64-bit
_STATISTICS_WRITING_DATE_UTC-eng: 2020-11-18 05:03:06
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:1(jpn): Audio: aac (LC), 96000 Hz, stereo, fltp (default)
Metadata:
title           : AUDIO[AAC]
BPS-eng         : 188626
DURATION-eng    : 00:01:19.999000000
NUMBER_OF_FRAMES-eng: 3750
NUMBER_OF_BYTES-eng: 1886246
_STATISTICS_WRITING_APP-eng: mkvmerge v49.0.0 ('Sick Of Losing Soulmates') 64-bit
_STATISTICS_WRITING_DATE_UTC-eng: 2020-11-18 05:03:06
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream mapping:
Stream #0:1 -> #0:0 (aac (native) -> mp3 (mp3_mf))
Press [q] to stop, [?] for help
[mp3_mf @ 000002142f4a5fc0] MFT name: 'MP3 Encoder ACM Wrapper MFT'
[mp3_mf @ 000002142f4a5fc0] unsupported input sample rate set
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

您使用的编码器mp3_mf是MediaFoundation mp3编码器。看起来像是一个挑剔、麻烦的编码器。即使添加了-ar 48000,它仍可能失败,并出现错误nb_samples (1024) != frame_size (0)

要修复它,请使用不同的MP3编码器。使用输出选项-c:a libmp3lame(如果使用了-c:a mp3_mf,则不要使用(。

ffmpeg -i input.mkv -c:a libmp3lame output.mp3

libmp3lame将自动选择适当的采样率,因此无需添加-ar

正如输出所暗示的(unsupported input sample rate set(,问题是输入的采样率为96kHz,但mp3只能支持高达48kHz的采样率。

-ar 44100放在命令行中的输入和输出文件之间,它应该对您有效。如果您需要输出特定的采样率,只需将44100更改为48000、32000。

请参阅https://ffmpeg.org/ffmpeg.html#Audio-更多详细信息的选项。

FWIW,当你问这样的问题时,你应该在描述中粘贴完整的、未经编辑的ffmpeg命令行和输出——这通常是获得任何有用帮助的先决条件。

最新更新