typecho 发布的文章

在 Docker 内部安装 ffmpeg,取决于你是想在现有的运行容器中临时安装,还是想一劳永逸地写入 Dockerfile 重新构建。

以下是针对不同主流基础镜像(Ubuntu/Debian 和 Alpine)的具体操作方法:
方案一:修改 Dockerfile(推荐,一劳永逸)

这是最正规的做法。在你的 Dockerfile 中,根据你使用的基础镜像类型,添加对应的安装命令。

  1. 如果你的镜像基于 Ubuntu / Debian / Python (默认)

绝大多数 Python 镜像(如 python:3.12)都是基于 Debian 的。

在 Dockerfile 中加入以下代码:
Dockerfile

更新软件源并安装 ffmpeg

RUN apt-get update && \

apt-get install -y ffmpeg && \
rm -rf /var/lib/apt/lists/*

💡 提示: rm -rf /var/lib/apt/lists/* 是为了清理缓存,让你的 Docker 镜像体积更小。
  1. 如果你的镜像基于 Alpine

Alpine 镜像非常轻量,很多精简版镜像会使用它(比如 python:3.12-alpine)。

在 Dockerfile 中加入:
Dockerfile

Alpine 使用 apk 作为包管理器

RUN apk update && \

apk add --no-cache ffmpeg

修改完 Dockerfile 后,记得在终端运行以下命令重新构建镜像:
Bash

docker build -t my-app:latest .

方案二:进入正在运行的容器中手动安装(临时有效)

如果你不想重新构建镜像,只是想临时进容器让程序跑起来,可以直接进去安装。但请注意:一旦容器被销毁(docker rm),安装的 ffmpeg 就会消失。

  1. 进入容器内部

首先,通过 docker ps 找到你容器的 CONTAINER ID 或 NAMES,然后运行:
Bash

假设你的容器名字叫 my_tiktok_app

docker exec -it my_tiktok_app /bin/bash

(如果报错说找不到 bash,就把最后面的 /bin/bash 换成 /bin/sh)

  1. 在容器内执行安装命令

进入容器的终端后,根据系统类型执行:

如果是 Debian/Ubuntu 系统:
Bash

apt-get update && apt-get install -y ffmpeg

如果是 Alpine 系统:
Bash

apk add --no-cache ffmpeg

安装完成后,输入 exit 退出容器。此时你的 Python 脚本应该就能正常检测到 ffmpeg 并开始下载直播了。
方案三:如果你是用 Docker Compose 启动的

如果你是用 docker-compose.yml 启动的项目,且该项目支持通过环境变量或配置进行构建,你可以查看项目的 docker-compose.yml。

如果它使用的是 image: xxx(直接拉取镜像),你可能需要将 image 改为 build 模式,指向你修改后的 Dockerfile:
YAML

version: '3'
services:
downloader:

build: .  # 指向本地包含修改后 Dockerfile 的目录
volumes:
  - .:/app

验证安装是否成功

无论用哪种方法,安装完成后你可以在容器内运行以下命令验证:
Bash

docker exec -it <你的容器名> ffmpeg -version

如果打印出了 ffmpeg version x.x.x 的版本信息,就说明大功告成了!

Ubuntu 系统上安装 ffmpeg 非常简单,因为官方软件源里已经自带了。最常用的有以下两种方式,推荐使用 APT 安装(最快速省心)。
方法一:通过官方 APT 源安装(推荐,最省心)

这是最标准、最稳定的安装方式,系统会自动处理好所有依赖。

打开终端,依次运行以下命令:

更新软件源列表(确保能获取到最新版本的软件):
Bash

sudo apt update

安装 FFmpeg:
Bash

sudo apt install ffmpeg

验证是否安装成功:
安装完成后,输入以下命令查看版本:
Bash

ffmpeg -version

如果终端输出了 ffmpeg version ... 以及一长串配置信息,就说明安装成功了!

方法二:通过 Snap 安装(版本更新)

如果你需要使用比较新版的 FFmpeg 功能,而 Ubuntu 自带的 APT 源版本较老,可以使用 Canonical 官方维护的 Snap 商店进行安装:
Bash

sudo snap install ffmpeg

常见问题排查

报错:“无法定位软件包 ffmpeg” (Unable to locate package ffmpeg)
这通常是因为没有开启 Ubuntu 的 universe(社区维护)软件源。可以通过以下命令开启并重试:
Bash

sudo add-apt-repository universe
sudo apt update
sudo apt install ffmpeg

如何测试它能否正常工作?
你可以尝试用它来查看一个视频文件的信息:
Bash

ffmpeg -i 你的视频文件.mp4

你目前是在配置什么特定的多媒体环境吗(比如跑 Python 脚本、剪辑或做推流)?如果在安装或后续使用中遇到报错,随时把错误信息发给我。

在 Ubuntu 中为谷歌浏览器(Google Chrome)设置 HTTP 代理,其实有一个底层逻辑需要先明确:谷歌浏览器在 Linux 系统下,默认没有独立的代理配置界面,它会直接读取 Ubuntu 系统的全局代理设置。

根据你的使用习惯,有以下三种最主流的设置方法:

方法一:通过 Ubuntu 图形界面(最简单,影响整个系统)
这是最直接的方式。修改后,不仅 Chrome 会走代理,系统自带的软件更新、部分应用商店流量也会跟随。

打开 Ubuntu 的 设置 (Settings)。

在左侧栏中点击 网络 (Network)。

找到 网络代理 (Network Proxy) 项,点击右侧的齿轮(设置)图标。

将代理模式从 “无 (Disabled)” 切换为 “手动 (Manual)”。

在 HTTP Proxy 和 HTTPS Proxy 栏中分别填入你的代理信息:

Address: 127.0.0.1(如果是本机代理,如 v2rayA 开放的端口)

Port: 20171(以你实际的 HTTP 代理端口为准)

关闭该设置窗口,打开或重启 Chrome 浏览器即可生效。

方法二:使用命令行参数启动 Chrome(只影响 Chrome,不影响系统)
如果你不想让整个 Ubuntu 系统都挂上代理,只想让 Chrome 浏览器走 HTTP 代理,可以通过终端带参数来启动 Chrome。

打开终端,执行以下命令(将 127.0.0.1:20171 替换为你实际的代理地址):

Bash
google-chrome --proxy-server="http://127.0.0.1:20171"
💡 进阶:如何不用每次都敲命令?
如果你觉得每次开终端很麻烦,可以修改 Chrome 的快捷方式图标(.desktop 文件):

复制快捷方式到用户目录:

Bash
cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications/
编辑该文件:

Bash
nano ~/.local/share/applications/google-chrome.desktop
找到所有的 Exec=/usr/bin/google-chrome-stable 行(通常有三处),在后面加上参数,修改为:

Plaintext
Exec=/usr/bin/google-chrome-stable --proxy-server="http://127.0.0.1:20171" %U
保存退出(Ctrl+O 回车,Ctrl+X)。以后在应用程序菜单里直接点击 Chrome 图标,启动时就会自带代理。

方法三:使用浏览器扩展(最灵活,推荐配合分流)
如果你之前已经成功通过“加载已解压的扩展程序”安装好了 SwitchyOmega,那么这是最完美的解决方案,因为你可以自由控制“哪些网站走代理,哪些网站直连”。

点击 Chrome 右上角的 SwitchyOmega 扩展图标,进入 选项 (Options)。

点击左侧的情景模式 proxy(或者新建一个 HTTP 情景模式)。

关键设置:

代理协议:选择 HTTP

代理服务器:127.0.0.1

端口:20171(例如 v2rayA 的默认 HTTP 端口)

点击左下角的 应用选项 (Apply changes)。

切换启用:点击浏览器右上角的 SwitchyOmega 图标,将状态从“直接连接”切换为 proxy(全局代理)或 auto switch(自动分流)。

注意事项:如果使用了方法三(插件),建议将方法一(系统代理)保持为“无(Disabled)”,这样可以防止代理规则发生冲突。

一、脚本安装(https://github.com/v2fly/fhs-install-v2ray
1、sudo -i切换到root模式再安装,否则出错
安裝和更新 V2Ray
2、// 安裝執行檔和 .dat 資料檔

bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

安裝最新發行的 geoip.dat 和 geosite.dat
3、// 只更新 .dat 資料檔

bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-dat-release.sh)

4、移除 V2Ray

bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) --remove

二、配置v2ray(https://github.com/v2fly/v2ray-examples)
1、编辑/usr/local/etc/v2ray/config.json
客户端配置举例:

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 10809,
      "listen": "127.0.0.1",
      "protocol": "http",
      "settings": {
        "timeout": 360
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "http",
      "settings": {
        "servers": [
          {
            "address": "你的HTTP代理服务器IP",
            "port": 8080
          }
        ]
      }
    }
  ]
}