ffmpegfs 是一个基于 FUSE 的文件系统,用于在打开时即时转码视频和音频

我最近偶然发现了 ffmpegfs 并发现它非常有用,所以我想我会写一篇关于它的文章,特别是因为没有其他文章关于它。

ffmpegfs 是一个免费和开源的基于 FUSE 的只读转码文件系统,它可以在打开和读取时即时转换音频和视频格式。 它支持多种格式,包括 MP4、WebM、OGG、MP3、OPUS、MOV、ProRes(Apple Prores 视频和 PCM 音频的 MOV 容器)和 WAV 等。

如果您的媒体收藏中有许多文件无法由某些硬件或软件直接播放(例如 DaVinci Resolve,它在免费的 Linux 版本中编解码器支持有限),这将非常有用 – 而不是对整个媒体收藏进行转码当文件被访问/播放时,可以使用 ffmpegfs 对文件进行动态转码。 您也可以使用它来轻松地转码文件:只需将一些文件放在您用作 ffmpegfs 输入目录的文件夹中,然后从 ffmpegfs 输出文件夹中复制文件,结果文件将被转码为您的格式已为 ffmpegfs 指定。

ffmpegfs 是用 C 和 C++ 编写的,并使用了 FUSE 库。 它还需要 FFmpeg 才能工作。 Libav 也受到支持,但目前被禁用,因为它似乎无法正常工作。 Libav 支持可能很快就会被取消。

这就是这个工具的工作原理。 ffmpegfs 命令挂载目录
IN_DIR

(其中包含您的媒体收藏)在
OUT_DIR

. 访问
OUT_DIR

显示内容
IN_DIR

,所有支持的媒体文件都会在访问时透明地重命名和转码为支持的目标格式之一。

ffmpegfs 特点:

  • 智能转码可以为视频和音频文件创建不同的输出格式. 例如,视频文件可以转换为 MOV,音频文件可以转换为 AIFF。 指定用 + 号分隔的视频和音频文件类型(例如: --desttype=mov+aiff)
  • “自动复制”进行智能流复制例如,如果对已经表示 H264 视频和/或 AAC 音频流的传输流进行转码,则可以简单地将其重新打包到 mp4 容器中而无需重新编码。 自动复制选项:OFF(从不复制流,始终进行转码)、MATCH(如果目标支持编解码器则复制流)、MATCHLIMIT(与 MATCH 相同,仅在目标不大时才复制,否则转码)、STRICT(如果编解码器与所需目标匹配,则复制流, 否则转码)和 STRICTLIMIT(与 STRICT 相同,仅在目标不大时才复制,否则转码)
  • 针对 Web 浏览器优化的内置转码配置文件 像 Firefox、MS Edge 和 IE 11+、Chrome、Safari、 Opera 或傲游
  • 指定视频和音频比特率、视频宽度和高度、去隔行、启用专辑封面到输出文件等
  • 具有各种选项的缓存
  • DVD/蓝光支持
  • 指定转码器线程数

计划在未来版本中支持 Microsoft Windows。

您可能喜欢的来自 Linux Uprising 的其他与 FFmpeg 相关的文章:

  • FFmpeg:如何裁剪视频,包括示例
  • FFmpeg:从原始格式的视频中提取音频或将其转换为 MP3 或 Ogg Vorbis
  • 如何使用 youtube-dl(命令行)下载 YouTube 播放列表并将其转换为 MP3

我们来看几个ffmpegfs的例子。

#1 使用 ffmpegfs 转码来自 ~/Videos 文件夹到 ~/ffmpegfs 进入 WebM (allow_other 允许所有用户,包括 root,访问文件; ro 将其安装为只读):

ffmpegfs --desttype=webm ~/Videos/Movies ~/ffmpegfs -o allow_other,ro