Docker搭建FFmpeg

embedded/2024/12/23 0:24:07/

FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的完整解决方案。FFmpeg 包含了领先的音视频编解码库libavcodec,可以用于各种视频格式的转换。

应用场景包括:

  • 视频转换:把视频从一种格式转换成另一种格式。
  • 视频压缩:减少视频文件的存储大小。
  • 视频拼接:将多个视频文件合并为一个。
  • 实时流处理:用于直播流的捕获和编码。
  • 视频抓取:从视频文件中提取音频或者图片。
  • 批量处理视频文件:自动化处理大量的视频文件。

使用 Docker CLI 搭建 FFmpeg

步骤 1: 拉取 FFmpeg Docker 镜像

docker pull jrottenberg/ffmpeg

步骤 2: 使用 Docker 运行 FFmpeg 容器

docker run -it --rm -v $(pwd):/tmp/workdir jrottenberg/ffmpeg -i input.mp4 output.avi

参数解释:

  • -it: 交互式运行容器,并分配一个伪终端。
  • --rm: 容器退出时自动清理容器文件系统。
  • -v $(pwd):/tmp/workdir: 将当前目录挂载到容器/tmp/workdir,以便于容器访问宿主机的文件。
  • jrottenberg/ffmpeg: 使用的 FFmpeg Docker 镜像名称。
  • -i input.mp4: 指定输入文件。
  • output.avi: 指定输出文件。

使用 Docker Compose 搭建 FFmpeg

创建一个名为 docker-compose.yml 的文件,并填入以下内容:

version: '3'
services:ffmpeg:image: jrottenberg/ffmpegvolumes:- .:/tmp/workdircommand: ffmpeg -i input.mp4 output.avistdin_open: truetty: true

参数解释:

  • version: 指定使用的 Docker Compose API 版本。
  • services: 定义了要运行的服务列表。
  • ffmpeg: 服务的名字。
  • image: 指定使用的 Docker 镜像。
  • volumes: 映射宿主机当前目录到容器/tmp/workdir
  • command: 容器启动后执行的命令,这里是运行 FFmpeg 进行视频转换。
  • stdin_open (对应 -i): 保持 STDIN 打开即使没有附加。
  • tty (对应 -t): 分配一个伪 TTY,等同于 Docker CLI 的 -t

步骤 3: 使用 Docker Compose 运行服务

docker-compose up

当需要停止并移除容器和网络时,可以使用:

docker-compose down

以上命令将会启动 FFmpeg 服务,并执行定义在 command 中的 FFmpeg 命令。通过挂载当前目录,可以轻松地处理宿主机中的视频文件。


http://www.ppmy.cn/embedded/1776.html

相关文章

flask应用上下文

Flask框架中的应用上下文(Application Context)是指在Flask应用程序运行过程中,为特定的Flask应用实例(即 Flask 类的实例)创建的一个上下文环境,它包含了与该应用相关的配置信息、服务连接(如数…

前端CSS基础2(CSS基本选择器和复合选择器)

前端CSS基础2(CSS基本选择器和复合选择器) HTML和HTML的区别和联系HTML元素和CSS属性CSS基本选择器ID选择器类选择器标签选择器群组选择器通配选择器层次选择器属性选择器伪类选择器伪元素选择器 CSS复合选择器交集选择器并集选择器后代选择器子元素选择…

【代码随想录】【单调栈】day58:每日温度和下一个最大元素

单调栈:栈里的元素是递增或者是递减的 适用于寻找当前元素的右边或左边第一个大的或者第一个小的元素,计算那个元素和当前元素的距离 如果是寻找大的元素,就构造递增的单调栈(从栈头到栈底)保证栈头是最小的 每日温…

java通过minio下载pdf附件

java通过minio下载pdf附件 文章目录 java通过minio下载pdf附件一、java通过minio下载pdf附件getObject方法 一、java通过minio下载pdf附件getObject方法 Resourceprivate MinioClient minioClient;/*** 通过minio下载pdf附件* param fileName:"sdgregrtgfr.pdf" 为…

LeetCode 面试题 02.07. 链表相交

LeetCode 面试题 02.07. 链表相交 1、题目 力扣题目链接:面试题 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交…

阿里云2核2G服务器可以干什么?

阿里云2核2G服务器可以干什么?2核2G云服务器可以用来搭建网站、爬虫、邮件服务器、接口服务器、个人博客、企业官网、数据库应用、大数据计算、AI人工智能、论坛、电子商务、AI、LLM大语言模型、测试环境等,目前2核2G阿里云服务器61元一年,老…

简述Kafka的高可靠性

什么叫可靠性? 大家都知道,系统架构有三高:「高性能、高并发和高可用」,三者的重要性不言而喻。 对于任意系统,想要同时满足三高都是一件非常困难的事情,大型业务系统或者传统中间件都会搭建复杂的架构来…

webSocket + springboot+vue3用法

领导安排个任务&#xff0c;大屏显示数据&#xff0c;要与后台数据一致&#xff0c;所以用到了websocket&#xff0c;涉及的前后端代码整理如下&#xff0c;希望对大家有所帮助。 后端代码 pom文件添加依赖 <!--websocket依赖--> <dependency><groupId>or…