将Webm转码为音频文件(fluent-ffmpeg)

时间:2017-07-03 16:43:17

标签: node.js ffmpeg fluent-ffmpeg

我有一个视频文件,当我通过ffprobe命令检查时,它的属性如下所示; 我的目的是仅采用音频文件,其大小不应超过100mb。 在NPM项目中有没有正确的方法呢?

perms :: [a] -> [[a]]
perms [] = [[]]
perms [a] = [[a]]
perms [a,b] = [[a,b],[b,a]]
perms xs = concatMap f [0..length xs - 1] where
  f i = map ((xs!!i):) $ perms $ exclude i xs
  exclude n xs = take (n) xs ++ drop (n+1) xs

1 个答案:

答案 0 :(得分:2)

使用fluent-ffmpeg的API

您可以使用noVideo()方法告诉ffmpeg使用“无视频”生成输出。

ffmpeg('/path/to/file.avi').noVideo();

使用ffmpeg的CLI API

我不确定fluent-ffmpeg,但使用ffmpeg,您可以使用-map选项来指示输出中您想要输入的内容。因此,对于您的示例,获取仅包含来自输​​入的第一个音频流的MP3文件的命令将是:

ffmpeg -i 2.webm -map 0:a:0 out.mp3

或者,您可以使用-vn选项告诉ffmpeg不包含视频流;但我喜欢说清楚。那么你的命令就是:

ffmpeg -i 2.webm -vn out.mp3

您还可以使用-acodec选项来指定要使用的编码器,例如AAC或其他任何编码器。如果您没有给出足够的选项,ffmpeg会通过查看您给出的扩展名来使用最佳猜测。

至于限制文件大小,我不确定这样做的干净方法,但视频制作StackExchange上的这个问题可能会有所帮助:How to limit file size with ffmpeg?。它建议你玩你的比特率,直到你得到你想要的大小。我想你可以提前计算出正确的比特率。