docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker安装部署FFmpeg

Docker版FFmpeg安装部署的详细步骤

作者:十年磨一剑2020

项目组开发过程用因为要使用音频格式转换功能,FFmpeg是常见的音视频处理工具,本文就来介绍一下Docker版FFmpeg安装部署的详细步骤,感兴趣的可以了解一下

背景

项目组开发过程用因为要使用音频格式转换功能,通过查阅相关资料,最终选择使用 FFmpeg

FFmpeg介绍

官网:https://ffmpeg.org

FFmpeg是一套开源的、跨平台的多媒体解决方案,可以用于录制、转换和流式传输音频和视频。支持Linux、Windows和macOS操作系统。

作为一个强大的多媒体工具集,FFmpeg提供了广泛的功能和工具,使开发者能够进行各种音视频处理任务,例如:

FFmpeg提供了命令行工具,也可以通过C/C++的库进行集成。此外,还有许多基于FFmpeg的第三方工具和框架可用,使得音视频处理变得更加简单和便捷。

关于ffmpeg的安装,有的人可能要折腾很久,甚至折腾一个礼拜,究其原因,基本都是编译安装惹的祸。

项目开发团队成员中,有使用Windows、Ubuntu、macOS等系统进行开发,测试、生产环境可能是CentOS、Fedora、Ubuntu、Windows等系统的情况。考虑到未来可能有其他成员接手项目,如果每个人都花时间安装FFmpeg,因为环境差异不知道得折腾多久。为了提高生产率(降本增效),于是决定使用docker安装ffmpeg。

1. 搜索镜像

前提:已经安装docker

使用 docker search --no-trunc ffmpeg 命令搜索 ffmpeg 并查看完整镜像描述

(base) mjl@ubuntu:~$ docker search --no-trunc ffmpeg
NAME                                      DESCRIPTION                                                                                    STARS     OFFICIAL   AUTOMATED
jrottenberg/ffmpeg                        FFmpeg 2.8 - 3.x - 4.x Copyright (c) 2000-2017 the FFmpeg developers                           419                  [OK]
linuxserver/ffmpeg                                                                                                                       106                  
opencoconut/ffmpeg                        Minimal FFmpeg Docker image built on Alpine Linux                                              30                   [OK]
nachochip/ffmpeg                          ffmpeg (x264, fdk-aac) inside debian                                                           14                   [OK]
nightseas/ffmpeg                          FFmpeg with CUDA encoder/decoder support.                                                      8                    [OK]
selenium/video                            Image with ffmpeg meant to be used with a Dynamic Grid                                         7                    
alfg/ffmpeg                               An FFmpeg Dockerfile from source. Built on Alpine Linux.                                       6                    [OK]
jellyfin/ffmpeg                                                                                                                          4                    
datarhei/ffmpeg                           FFmpeg Development Image for H.264-Processing                                                  4                    
rafalkrypa/ffmpeg                         Latest FFmpeg static build on minimal Alpine Linux container                                   3                    
sjourdan/ffmpeg                           FFmpeg on Alpine Docker Image                                                                  3                    [OK]
ffmpeg/coverity                           Environment for automated coverity testing of FFmpeg.                                          2                    [OK]
mycujoo/ffmpeg-docker                     ffmpeg docker container                                                                        0                    [OK]
krickwix/ffmpeg                                                                                                                          0                    
nicholasrobinson/ffmpeg-homebridge        A Homebridge Dockerfile built on oznu/docker-homebridge with FFmpeg copied from alfg/ffmpeg.   0                    
azamserver/nextcloud-imagemagick-ffmpeg   A Nextcloud docker image with ImageMagick & FFmpeg preinstalled                                0                    
jamesarems/ffmpeg                         CentOS 8 based ffmpeg server                                                                   0                    
onlinetvrecorder/ffmpeg                                                                                                                  0                    
vulhub/ffmpeg                                                                                                                            0                    
ffmpegextrah/ffmpeg                                                                                                                      0                    
ffmpegclearu/ffmpeg                                                                                                                      0                    
thinkz/ffmpeg                             ffmpeg with librtmp                                                                            0                    
umnelevator/ffmpeg                                                                                                                       0                    
nicolasarnaud4viseo/ffmpeg                                                                                                               0                    
chpkg/ffmpeg-to-s3                                                                               0         

2. 拉取镜像

从上面的搜索结果中我们可以看到第一行 jrottenberg/ffmpeg 的 Stars 最多, 果断就用它了。

使用 docker pull jrottenberg/ffmpeg 命令拉取镜像(提前换好速度快的镜像源,否则就耐心等待吧):

(base) mjl@ubuntu:~$ docker pull jrottenberg/ffmpeg
Using default tag: latest
latest: Pulling from jrottenberg/ffmpeg
7b722c1070cd: Pull complete 
5fbf74db61f1: Pull complete 
ed41cb72e5c9: Pull complete 
7ea47a67709e: Pull complete 
c56548ea744b: Pull complete 
24130a6ef4f3: Pull complete 
2d757c4d9a11: Pull complete 
Digest: sha256:21eb739725c43bd7187982e5fa4b5371b495d1d1f6f61ae1719ca794817f8641
Status: Downloaded newer image for jrottenberg/ffmpeg:latest
docker.io/jrottenberg/ffmpeg:latest

3. 导出镜像

拉取完成后,使用 docker image ls 列出本地已经下载的镜像。我们看到有一个jrottenberg/ffmpeg镜像,大小为218MB。

(base) mjl@ubuntu:~$ docker image ls
REPOSITORY                                  TAG          IMAGE ID       CREATED         SIZE
jrottenberg/ffmpeg                          latest       2100506dfbea   4 years ago     218MB

我们需要将该镜像导出成 tar 包。可以使用以下命令导出:

(base) mjl@ubuntu:~$ docker save -o ffmpeg.tar jrottenberg/ffmpeg:latest

导出为 ffmpeg.tar 文件:

(base) mjl@ubuntu:~$ ll
-rw-------   1 mjl mjl 222621696  5月  3 22:27 ffmpeg.tar

导出的 tar 包可以通过 scp 或者 ftp 将其传输至离线服务器。

4. 加载镜像

在服务器中,使用 docker image ls 列出本地已经下载的镜像,可以看到服务器上只有一个 hello-word 镜像(如下所示)。

(base) [root@10-23-2-211 ~]# docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    bf756fb1ae65   3 years ago   13.3kB

接下来使用 docker load -i ffmpeg.tar 将 tar 包导入 Docker 中:

(base) [root@10-23-2-211 ~]# docker load -i ffmpeg.tar 
0de2edf7bff4: Loading layer [==================================================>]  121.3MB/121.3MB
b2fd8b4c3da7: Loading layer [==================================================>]  15.87kB/15.87kB
f67191ae09b8: Loading layer [==================================================>]  11.78kB/11.78kB
68dda0c9a8cd: Loading layer [==================================================>]  3.072kB/3.072kB
1c86e8f0fce5: Loading layer [==================================================>]  2.048kB/2.048kB
e38e18db08fb: Loading layer [==================================================>]  31.93MB/31.93MB
b0e2549b869a: Loading layer [==================================================>]  69.36MB/69.36MB
Loaded image: jrottenberg/ffmpeg:latest

导入完成后,我们继续使用 docker image ls 命令查询是否成功导入:

(base) [root@10-23-2-211 ~]# docker image ls
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
hello-world          latest    bf756fb1ae65   3 years ago   13.3kB
jrottenberg/ffmpeg   latest    2100506dfbea   4 years ago   218MB

从上面的输出结果中可以看出多了一个 jrottenberg/ffmpeg 镜像,大小218MB,说明导入成功。

5. 启动容器

使用 docker ps 查看运行的容器:

(base) [root@10-23-2-211 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

启动容器:

(base) [root@10-23-2-211 ~]# docker run -itd --name app_ffmpeg -p 8066:8080 -v /home/mjl/ffmpeg/:/mnt/app/ --entrypoint='bash' jrottenberg/ffmpeg
2cd7573a3c44da0ccfacd1e46cb40a523dfaf99dc0e298db3053f473a0ecd11e

再次使用 docker ps 查看运行的容器:

(base) [root@10-23-2-211 ~]# docker ps
CONTAINER ID   IMAGE                COMMAND   CREATED         STATUS         PORTS                    NAMES
2cd7573a3c44   jrottenberg/ffmpeg   "bash"    4 seconds ago   Up 3 seconds   0.0.0.0:8066->8080/tcp   app_ffmpeg

此时容器已启动。

到此这篇关于Docker版FFmpeg安装部署的详细步骤的文章就介绍到这了,更多相关Docker安装部署FFmpeg内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文