无法让 MLT 框架处理 Docker 容器中的音频

Can't get MLT Framework to process audio in Docker container

我正在使用 Docker 创建一个使用 melt 命令进行视频处理的容器。当前输出的所有视频不包含任何音频。

这是 Docker 文件:

FROM ubuntu
RUN apt-get update
RUN apt-get install -y melt swh-plugins
WORKDIR /input
CMD [ "melt", "input.mp4", "-consumer", "avformat:/output/output.mp4" ]

当我 运行 容器时,出现以下错误:

consumer_avformat.c: Unable to encode audio - disabling audio output.

我想这能告诉你很多。但是,我已经尝试 运行 将命令设置为:

melt input.mp4 -consumer avformat:/output/output.mp4 acodec=libmp3lame

...当我这样做时,我没有收到错误,但输出文件中仍然没有音频。

因为我不太了解音频处理,所以我不确定我是否缺少插件或不知何故没有指定要求。对于了解 Docker 和多媒体的人来说应该是一个相对容易的修复。

在第一个实例中,音频输出可能默认为 aac,但在大多数版本的 libavcodec 中,aac 要求您还说 "strict=experimental"。如果您明确设置 acodec=aac,melt 会自动为您添加。很快,libavcodec aac 编码器将退出实验状态(如果最近几天还没有的话)。一般来说,您指定的编码参数不足。

第二种情况,你怎么知道没有声音? Quicktime 不支持 MP4 中的 MP3,可能还有一些其他媒体播放器。

事实证明,我需要将 ubuntu-restricted-extras 包安装到我的 Dockerfile 中。一旦到位,一切都会按预期进行。