摘要:我正在尝试将输出限制为 3mb,.outputOptions('-fs 3000000')
但对我不起作用,文件以119260428
119mb 的大小返回。
这是您自己尝试的代码,您所需要的只是test.mp3
足够大,结果testoutput.ogg
> 3mb:
var ffmpeg = require("fluent-ffmpeg");
var command = ffmpeg();
var convertToOGG = function(){
var fileName = 'test.mp3'
ffmpeg.ffprobe(fileName, function(err, metadata) {
command
.input(fileName)
.inputFormat("mp3")
.audioChannels(1)
.outputOptions('-fs', 3000000)
.output('testoutput.ogg')
.on("progress", function(progress) {
console.log("Processing: " + progress.timemark);
})
.on("error", function(err, stdout, stderr) {
console.log("Cannot process video: " + err.message);
})
.on("end", function(stdout, stderr) {
ffmpeg.ffprobe('testoutput.ogg', function(err,metadata){
if(metadata.format.size >= 3000000){
console.log("didn't work")
}
})
})
.run();
});
};
convertToOGG();
根据fluent-ffmpeg 文档,您应该能够在输出选项中使用 ffmpeg 命令:outputOption()
此方法允许将任何与输出相关的选项传递给 ffmpeg。您可以使用单个参数调用它来传递单个选项,可选地使用空格分隔的参数:
/* Single option */
ffmpeg('/path/to/file.avi').outputOptions('-someOption');
-fs limit_size (output) 设置文件大小限制,以字节表示。超出限制后不再写入更多字节块。输出文件的大小略大于请求的文件大小。
它没有给我任何错误,只是似乎忽略了 99mb 的文件大小限制并输出了一个 119.3mb 的文件。
编辑 - 看起来-fs 3000000
正在为 mp3 工作到 wav,但仍然不会对 ogg 做 mp3。这是在终端中运行命令的输出:
✗ ffmpeg -i test.mp3 -fs 3000000 testoutput.ogg
ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 34.100 / 55. 34.100
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.100 / 57. 56.100
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libavresample 3. 1. 0 / 3. 1. 0
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
libpostproc 54. 1.100 / 54. 1.100
[mp3 @ 0x7fc6a4000000] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'test.mp3':
Metadata:
lyrics-eng : xxx
title : xxx
artist : xxx
album_artist : xxx
album : xxx
genre : xxx
Duration: 03:27:28.74, start: 0.000000, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, mono, s16p, 128 kb/s
Stream #0:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 540x360, 90k tbr, 90k tbn, 90k tbc
Metadata:
title : Array
comment : Cover (front)
[swscaler @ 0x7fc6a4808800] deprecated pixel format used, make sure you did set range correctly
[ogg @ 0x7fc6a3815800] Frame rate very high for a muxer not efficiently supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync 2
Output #0, ogg, to 'testoutput.ogg':
Metadata:
lyrics-eng : xxx
title : xxx
artist : xxx
album_artist : xxx
album : xxx
genre : xxx
encoder : Lavf57.56.100
Stream #0:0: Video: theora (libtheora), yuv444p, 540x360, q=2-31, 200 kb/s, 90k fps, 90k tbn, 90k tbc
Metadata:
title : Array
DESCRIPTION : Cover (front)
encoder : Lavc57.64.101 libtheora
lyrics-eng : xxx
artist : xxx
ALBUMARTIST : xxx
album : xxx
genre : xxx
Stream #0:1: Audio: vorbis (libvorbis), 44100 Hz, mono, fltp
Metadata:
encoder : Lavc57.64.101 libvorbis
lyrics-eng : xxx
title : xxx
artist : xxx
ALBUMARTIST : xxx
album : xxx
genre : xxx
Stream mapping:
Stream #0:1 -> #0:0 (mjpeg (native) -> theora (libtheora))
Stream #0:0 -> #0:1 (mp3 (native) -> vorbis (libvorbis))
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=-0.0 Lsize= 116465kB time=03:27:28.71 bitrate= 76.6kbits/s speed=61.2x
video:9kB audio:114907kB subtitle:0kB other streams:0kB global headers:6kB muxing overhead: 1.347787%