通过 FFMPEG 从 mp4 中提取 mp3 不应用音频比特率

Extracting mp3 from mp4 via FFMPEG doesn't apply audio bitrate

我想从任何 mp4 文件中提取简化的单声道低比特率低频和基本上低尺寸的音频。我使用以下 FFMPEG 命令,但生成的音频不知何故有 2 个通道,其比特率与 mp4 中的原始音频相同。

ffmpeg.exe -report -y -i "{mp4}" -vn -acodec libmp3lame -ac 1 -ab 64k -ar 24000 -f mp3 output "{mp3}"

这是我的报告:

ffmpeg started on 2021-07-17 at 18:30:20
Report written to "ffmpeg-20210717-183020.log"
Log level: 48
Command line:
"C:\ffmpeg\bin\ffmpeg.exe" -report -y -i "C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Video1.mp4" -vn -acodec libmp3lame -ac 1 -ab 64k -f mp3 output "C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Audio.mp3"
ffmpeg version 4.3.1-2021-01-01-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10.2.0 (Rev5, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-l  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
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Splitting the commandline.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option '-i' ... matched as input url with argument 'C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Video1.mp4'.
Reading option '-vn' ... matched as option 'vn' (disable video) with argument '1'.
Reading option '-acodec' ... matched as option 'acodec' (force audio codec ('copy' to copy stream)) with argument 'libmp3lame'.
Reading option '-ac' ... matched as option 'ac' (set number of audio channels) with argument '1'.
Reading option '-ab' ... matched as option 'ab' (audio bitrate (please use -b:a)) with argument '64k'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'mp3'.
Reading option 'output' ... matched as output url.
Reading option 'C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Audio.mp3' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Video1.mp4.
Successfully parsed a group of options.
Opening an input file: C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Video1.mp4.
[NULL @ 000002e7d956ed40] Opening 'C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Video1.mp4' for reading
[file @ 000002e7d956fd80] Setting default whitelist 'file,crypto,data'
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002e7d956ed40] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002e7d956ed40] ISO: File Type Major Brand: mp42
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002e7d956ed40] Unknown dref type 0x206c7275 size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002e7d956ed40] Setting codecpar->delay to 1 for stream st: 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002e7d956ed40] Unknown dref type 0x206c7275 size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002e7d956ed40] Before avformat_find_stream_info() pos: 139797 bytes read:65536 seeks:1 nb_streams:2
[h264 @ 000002e7d9570c00] nal_unit_type: 7(SPS), nal_ref_idc: 3
[h264 @ 000002e7d9570c00] nal_unit_type: 8(PPS), nal_ref_idc: 3
[h264 @ 000002e7d9570c00] nal_unit_type: 5(IDR), nal_ref_idc: 3
[h264 @ 000002e7d9570c00] Format yuv420p chosen by get_format().
[h264 @ 000002e7d9570c00] Reinit context to 1920x1088, pix_fmt: yuv420p
[h264 @ 000002e7d9570c00] no picture 
[h264 @ 000002e7d9570c00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[h264 @ 000002e7d9570c00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[h264 @ 000002e7d9570c00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[h264 @ 000002e7d9570c00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[h264 @ 000002e7d9570c00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2
[h264 @ 000002e7d9570c00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[h264 @ 000002e7d9570c00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002e7d956ed40] All info found
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002e7d956ed40] After avformat_find_stream_info() pos: 158020 bytes read:65536 seeks:1 frames:11
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Video1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    creation_time   : 2020-11-24T06:56:49.000000Z
  Duration: 00:00:56.45, start: 0.000000, bitrate: 893 kb/s
    Stream #0:0(eng), 10, 1/30000: Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 749 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2020-11-24T06:56:49.000000Z
      handler_name    : Mainconcept Video Media Handler
      encoder         : AVC Coding
    Stream #0:1(eng), 1, 1/44100: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
    Metadata:
      creation_time   : 2020-11-24T06:56:49.000000Z
      handler_name    : #Mainconcept MP4 Sound Media Handler
Successfully opened the file.
Parsing a group of options: output url output.
Applying option vn (disable video) with argument 1.
Applying option acodec (force audio codec ('copy' to copy stream)) with argument libmp3lame.
Applying option ac (set number of audio channels) with argument 1.
Applying option ab (audio bitrate (please use -b:a)) with argument 64k.
Applying option f (force format) with argument mp3.
Successfully parsed a group of options.
Opening an output file: output.
[file @ 000002e7d958e340] Setting default whitelist 'file,crypto,data'
Successfully opened the file.
Parsing a group of options: output url C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Audio.mp3.
Successfully parsed a group of options.
Opening an output file: C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Audio.mp3.
[file @ 000002e7da1bc480] Setting default whitelist 'file,crypto,data'
Successfully opened the file.
Stream mapping:
  Stream #0:1 -> #0:0 (aac (native) -> mp3 (libmp3lame))
  Stream #0:1 -> #1:0 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
detected 8 logical cores
[graph_0_in_0_1 @ 000002e7dac2b7c0] Setting 'time_base' to value '1/44100'
[graph_0_in_0_1 @ 000002e7dac2b7c0] Setting 'sample_rate' to value '44100'
[graph_0_in_0_1 @ 000002e7dac2b7c0] Setting 'sample_fmt' to value 'fltp'
[graph_0_in_0_1 @ 000002e7dac2b7c0] Setting 'channel_layout' to value '0x3'
[graph_0_in_0_1 @ 000002e7dac2b7c0] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
[format_out_0_0 @ 000002e7dac2b8c0] Setting 'sample_fmts' to value 's32p|fltp|s16p'
[format_out_0_0 @ 000002e7dac2b8c0] Setting 'sample_rates' to value '44100|48000|32000|22050|24000|16000|11025|12000|8000'
[format_out_0_0 @ 000002e7dac2b8c0] Setting 'channel_layouts' to value '0x4'
[format_out_0_0 @ 000002e7dac2b8c0] auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_0'
[AVFilterGraph @ 000002e7da1bdfc0] query_formats: 4 queried, 7 merged, 3 already done, 0 delayed
[auto_resampler_0 @ 000002e7d958edc0] [SWR @ 000002e7d95fd240] Using fltp internally between filters
[auto_resampler_0 @ 000002e7d958edc0] [SWR @ 000002e7d95fd240] Matrix coefficients:
[auto_resampler_0 @ 000002e7d958edc0] [SWR @ 000002e7d95fd240] FC: FL:0.707107 FR:0.707107 
[auto_resampler_0 @ 000002e7d958edc0] ch:2 chl:stereo fmt:fltp r:44100Hz -> ch:1 chl:mono fmt:fltp r:44100Hz
Output #0, mp3, to 'output':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    TSSE            : Lavf58.45.100
    Stream #0:0(eng), 0, 1/44100: Audio: mp3 (libmp3lame), 44100 Hz, mono, fltp, 64 kb/s (default)
    Metadata:
      creation_time   : 2020-11-24T06:56:49.000000Z
      handler_name    : #Mainconcept MP4 Sound Media Handler
      encoder         : Lavc58.91.100 libmp3lame
[graph_1_in_0_1 @ 000002e7d9a5bf00] Setting 'time_base' to value '1/44100'
[graph_1_in_0_1 @ 000002e7d9a5bf00] Setting 'sample_rate' to value '44100'
[graph_1_in_0_1 @ 000002e7d9a5bf00] Setting 'sample_fmt' to value 'fltp'
[graph_1_in_0_1 @ 000002e7d9a5bf00] Setting 'channel_layout' to value '0x3'
[graph_1_in_0_1 @ 000002e7d9a5bf00] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
[format_out_1_0 @ 000002e7da1b8580] Setting 'sample_fmts' to value 's32p|fltp|s16p'
[format_out_1_0 @ 000002e7da1b8580] Setting 'sample_rates' to value '44100|48000|32000|22050|24000|16000|11025|12000|8000'
[format_out_1_0 @ 000002e7da1b8580] Setting 'channel_layouts' to value '0x4|0x3'
[AVFilterGraph @ 000002e7da1be5c0] query_formats: 4 queried, 9 merged, 0 already done, 0 delayed
Output #1, mp3, to 'C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Audio.mp3':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    TSSE            : Lavf58.45.100
    Stream #1:0(eng), 0, 1/44100: Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp (default)
    Metadata:
      creation_time   : 2020-11-24T06:56:49.000000Z
      handler_name    : #Mainconcept MP4 Sound Media Handler
      encoder         : Lavc58.91.100 libmp3lame
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
size=     129kB time=00:00:16.40 bitrate=  64.2kbits/s speed=32.8x    
size=     254kB time=00:00:32.49 bitrate=  64.1kbits/s speed=32.5x    
size=     256kB time=00:00:47.83 bitrate=  43.8kbits/s speed=31.8x    
[out_0_0 @ 000002e7d95b3d40] EOF on sink link out_0_0:default.
[out_1_0 @ 000002e7d9bae780] EOF on sink link out_1_0:default.
No more output streams to write to, finishing.
[libmp3lame @ 000002e7d958dbc0] Trying to remove 175 more samples than there are in the queue
[libmp3lame @ 000002e7da1bb940] Trying to remove 175 more samples than there are in the queue
size=     442kB time=00:00:56.45 bitrate=  64.1kbits/s speed=  33x    
video:0kB audio:1324kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Input file #0 (C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Video1.mp4):
  Input stream #0:0 (video): 10 packets read (17858 bytes); 
  Input stream #0:1 (audio): 2431 packets read (886147 bytes); 2431 frames decoded (2489344 samples); 
  Total: 2441 packets (904005 bytes) demuxed
Output file #0 (output):
  Output stream #0:0 (audio): 2161 frames encoded (2489344 samples); 2162 packets muxed (451813 bytes); 
  Total: 2162 packets (451813 bytes) muxed
Output file #1 (C:/Users/ScottRobertson/Desktop/VirtualExhibition/Final Booth Data/1-Abidi (gold)/Video/Audio.mp3):
  Output stream #1:0 (audio): 2161 frames encoded (2489344 samples); 2162 packets muxed (903627 bytes); 
  Total: 2162 packets (903627 bytes) muxed
2431 frames successfully decoded, 0 decoding errors
[AVIOContext @ 000002e7d958e400] Statistics: 2 seeks, 3 writeouts
[AVIOContext @ 000002e7da1bc580] Statistics: 2 seeks, 5 writeouts
[AVIOContext @ 000002e7d9578040] Statistics: 2725576 bytes read, 65 seeks

如何强制设置所需的音频比特率?

此外,为什么有 2 个输出名为 Output file #0Output file #1,为什么 #0 没有任何路径?

删除命令中的 output 一词。

这不是一个选项名称; ffmpeg 将其视为输出目标的名称,因为它不会紧跟 -option.

形式的标记