此命令生成一个具有1500k
比特率的文件。
ffmpeg -i 480P_600K_128632031.mp4 -t 6 -map 0:a -c:a libopus -b:a 32k -vbr on -compression_level 10 -ac 1 -ar 48000 480P_600K_128632031.opus
被-b:a 32k
忽略了。
完整输出,以防万一:
ffmpeg version 3.3.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.2.0 (Rev1, Built by MSYS2 project)
configuration: --prefix=/mingw64 --target-os=mingw32 --arch=x86_64 --disable-debug --disable-static --enable-avresample --enable-dxva2 --enable-d3d11va --enable-fontconfig --enable-gnutls --enable-gpl --enable-libass --enable-libbluray --enable-libcaca --enable-libcelt --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libx265 --enable-libxvid --enable-libvpx --enable-libwebp --enable-openal --enable-libwavpack --enable-pic
--enable-postproc --enable-runtime-cpudetect --enable-shared --enable-static --enable-swresample --enable-version3 --enable-zlib --disable-doc
libavutil 55. 58.100 / 55. 58.100
libavcodec 57. 89.100 / 57. 89.100
libavformat 57. 71.100 / 57. 71.100
libavdevice 57. 6.100 / 57. 6.100
libavfilter 6. 82.100 / 6. 82.100
libavresample 3. 5. 0 / 3. 5. 0
libswscale 4. 6.100 / 4. 6.100
libswresample 2. 7.100 / 2. 7.100
libpostproc 54. 5.100 / 54. 5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '480P_600K_128632031.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Duration: 00:27:04.38, start: 0.000000, bitrate: 516 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 854x480 [SAR 1280:1281 DAR 16:9], 379 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
File '480P_600K_128632031.opus' already exists. Overwrite ? [y/N] y
Stream mapping:
Stream #0:1 -> #0:0 (aac (native) -> opus (libopus))
Press [q] to stop, [?] for help
Output #0, opus, to '480P_600K_128632031.opus':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Stream #0:0(und): Audio: opus (libopus), 48000 Hz, mono, flt, 32 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc57.89.100 libopus
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
size= 17kB time=00:00:06.01 bitrate= 23.7kbits/s speed=46.5x
video:0kB audio:17kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 4.394640%
我的勺子太大了,呃,没关系。
答案1
您使用的是“-b:a 32k -vbr on”。您将恒定比特率请求与可变比特率请求混为一谈,并且无法识别“on”一词。
您可能需要“-b:a 32k”。
询问Mulvya 在 video.stackexchange.com肯定会有帮助的。
答案2
您的输出比特率似乎是 23.7 kBit/s,而不是 1500 KB/s。MediaInfo 报告的任何内容都是错误的,因为 ffmpeg 告诉您编码过程的(运行平均)比特率。
-b:a 32k
和都是-vbr on
的有效设置libopus
。ffmpeg -h encoder=libopus
详情请参阅。当仅指定 时-b:a 32k
,您将获得恒定比特率编码。
另外指定时-vbr on
,您启用 VBR 编码使用OPUS_SET_VBR
呼叫。 注意:
由于帧的长度必须是整数字节数,因此配置的比特率可能无法完全满足。