编码库是什么一个概念?
发布于 6 年前 作者 qijianzhong 6506 次浏览 来自 问答

最近express 项目用到 “ffmpeg” 这个模块 ,文档说明“需要已经安装了ffmpeg(包括libmp3lame或libx264等所有必要的编码库)”,请问这个是怎么一个概念?是要在电脑环境配置那里设置码?还是只是通过 npm 就能下载?

5 回复

请问这个是怎么一个概念?

简单来说,就是指对不同格式的支持。 libmp3lame 是处理 mp3 格式音频的,而“处理”,包括“编码”与“解码”两部分,有时,这两部分需要的 lib 是不同的。 这个不是设置的, ffmpeg 是一个应用程序啊(它可能提供有某种方式的 remote rpc 方式,跟 openoffice 那种一样),你可以理解成它是一个“播放器”,这个播放器可以支持哪些格式,就是“编码库 / 解码库”决定的。一般编译 ffmpeg 时通过选项来指定相关的编码库/解码库。如果你是直接二进制安装,那么支持的“编码库/解码库”已经确定了。

  • ffmpeg -decoders 可以查看当前支持的“解码库”。
  • ffmpeg -encoders 可以查看当前支持的“编码库”。
  • ffmpeg -formats 可以查看当前支持的“格式”。
  • ffmpeg -devices 可以查看当前支持的“设备”,录屏什么的,就是看是否对“桌面”这个设备有支持。

@yszou 比如说我只需要处理 mp3 格式音频,那我只是在npm 下载 ffmpeg 模块足够了码?还是要在电脑的其他地方安装一些其他什么码?

@yszou libmp3lame 这个怎么安装啊?是用npm 码。还是上网下载手动安装

我用了 ffmpeg 模块官方提供的一个用法 try { var process = new ffmpeg(’./test.mp4’); process.then(function (video) { // Video metadata console.log(video.metadata); // FFmpeg configuration console.log(video.info_configuration); }, function (err) { console.log('Error: ’ + err); }); } catch (e) { console.log(e.code); console.log(e.msg); };

**打印video.metadata的对象里面的属性都是空值**

@qijianzhong

前面说了嘛,这些库是在 ffmpeg 编译时用到的。你先看看目前的 ffmpeg 有哪些格式的支持。 安装的方式,可以自己去下源码,或者直接用一些软件源管理工具,比如 ubuntu 是 sudo apt-get install libmp3lame-dev 可以下载 dev 相关文件。

ffmpeg 项目官网是在 http://ffmpeg.org ,至于 nodejs 的模块,不太清楚它是从哪一层去包的。看 http://blog.csdn.net/fareise/article/details/53188785 这里的介绍, node-fluent-ffmpeg 只是开进程跑 shell 而已啊。

回到顶部