简单的解决方案

简单的解决方案

我正在尝试使用韓國,这需要支持zscale的ffmpeg版本。

他们的 README 说这是 18.04 下的默认设置,但我的 20.04 下的版本是 4.2.4-1ubuntu0.1,似乎不包含 zscale 支持。

如果我运行apt-get install ffmpeg,它会说,ffmpeg is already the newest version (7:4.2.4-1ubuntu0.1).但从 ffmpeg.org 可以清楚地看出,当前的稳定版本是4.3.2-0

我尝试添加ppa:jonathonf/ffmpeg-4以获取最新版本,但更新失败(“没有发布文件”)。

最安全的更新方法是什么?理想情况下,有一个可以使用的 PPA,而我在谷歌上搜索没有找到。或者,我应该下载该ffmpeg_4.3.2-0+deb11u2ubuntu1_amd64.deb文件并使用 dpkg 安装它吗?

我总是对侧信道安装任何东西都很担心,尤其是当它涉及与视频有关的东西时。安装当前稳定的 ffmpeg 的最佳“不会破坏未来系统 APT 更新”方法是什么?

答案1

还有其他 PPA 带有较新的 ffmpeg。最新的是FFmpeg 4 - 媒体工具(Xenial 及更新版本)作者:Rob Savoury。要将此 PPA 添加到您的系统,请使用以下命令:

sudo add-apt-repository ppa:savoury1/ffmpeg4
sudo apt-get update
sudo apt-get install ffmpeg

因此你将获得以下版本--enable-libzimg编译标志,ffmkv不会抱怨“HDR 到 SDR 的转换或分辨率变化”。

注意:你可以搜索 PPA自己使用名为Y PPA 经理,。

答案2

简单的解决方案

  1. 下载已经编译ffmpeg好的johnvansickle.com.包括 zscale 支持。
  2. 将下载的内容移入 或 ,将下载的内容放入您的ffmpeg(如果移入 ,请重新登录或运行)。PATHffmpeg/usr/local/bin~/binsource ~/.profile~/bin

这不会干扰任何系统文件或其他软件包。要卸载,只需删除该ffmpeg文件即可。

我不太喜欢 PPA。它们可能很混乱,而且往往有点过度,可能会引起问题通过干扰包管理系统。

答案3

有一个ffmpeg 的 snap 包。“稳定”频道中的当前版本是 4.3.1,但其构建配置中未列出--enable-zimg带有 的版本-version,因此可能无法使用。但是,该 snap 包的“edge”频道包含一个基于 ffmpeg 4.4 的版本,带有--enable-zimg。因此安装非常简单

snap install ffmpeg --channel edge

答案4

添加外部 PPA 非常危险,它们通常可能会导致您当前安装出现问题。

如果您正在部署您的应用程序并且需要特定版本,您可以使用此方法。

首先,我们将从以下网站之一下载最新的 gpl 静态构建版本:官方建设者 BtbN。然后我们将提取文件/usr/local/ffmpeg并创建符号链接将二进制文件放入/usr/bin目录中。

这是一个手动安装过程。您可以按照此处提到的所有步骤创建脚本:

1. 删除之前使用 apt 安装的软件包

sudo apt remove --purge --auto-remove -y ffmpeg

2. 创建临时目录并移动到该目录

mkdir -vp ~/tmp
cd ~/tmp

3.获取文件名和版本

## Define repository name
REPO_NAME='BtbN/FFmpeg-Builds'

## Define the URL of the latest release
LR_URL="https://api.github.com/repos/${REPO_NAME}/releases/latest"

## Get the latest version
version=$(curl -s "${LR_URL}" \
| grep -m 1 ffmpeg-n \
| cut -d ':' -f2 \
| cut -d '-' -f2 \
| tr -d 'n' \
| { read v; echo ${v::-2}; })

## Get the filename
dl_filename=$(curl -s "${LR_URL}" \
| grep "name.*linux64-gpl-${version}.tar.xz" \
| cut -d ':' -f2 \
| { read n; echo ${n:1:-2}; })

dl_name="${dl_filename::-7}"

4.下载文件

## Download the latest tar.xz
curl -s "${LR_URL}" \
| grep "browser_download_url.*linux64-gpl-${version}.tar.xz" \
| cut -d ':' -f 2,3 \
| tr -d '"' \
| wget -qi - -O $dl_filename

5. 定义包安装路径

pkg_path='/usr/local/ffmpeg'
pkg_lib_path='/usr/lib/ffmpeg'

6. 解压并安装下载的版本

sudo rm -rf $pkg_path && tar -xvf $dl_filename
sudo mv -v $dl_name $pkg_path

7. 将二进制文件添加到系统二进制文件和库目录中

sudo ln -sv "${pkg_path}" "${pkg_lib_path}"
sudo ln -sv "${pkg_lib_path}/bin/ffmpeg" '/usr/bin/ffmpeg'
sudo ln -sv "${pkg_lib_path}/bin/ffplay" '/usr/bin/ffplay'
sudo ln -sv "${pkg_lib_path}/bin/ffprobe" '/usr/bin/ffprobe'

8. 测试您的新版本。

ffmpeg -version | grep 'ffmpeg version'

现在您可以创建一个名为的脚本ffmpeg-install-latest.sh

#!/bin/bash

## Define package name
PKG_NAME='ffmpeg'

## Define system local path
LOCAL_PATH='/usr/local'

## Define system library path
LIB_PATH='/usr/lib'

## Define system binary path
BIN_PATH='/usr/bin'

## Define user home dir
USER_HOME_DIR=$(getent passwd ${SUDO_USER:-$USER} | cut -d: -f6)

## Define repository name
REPO_NAME='BtbN/FFmpeg-Builds'

## Define URL releases
RELEASES_URL="https://api.github.com/repos/${REPO_NAME}/releases"

## Define URL of the latest release
## LR_URL="https://api.github.com/repos/${REPO_NAME}/releases/latest"
LR_URL="${RELEASES_URL}/latest"

## Define temporal directory
TMP_DIR='tmp'

## Move to the temporal directory
tmp_path="${USER_HOME_DIR}/${TMP_DIR}"
mkdir -vp $tmp_path
cd $tmp_path

## Get the latest version and build
full_version=$(curl -s "${LR_URL}" \
| grep -m 1 ffmpeg-n \
| cut -d ':' -f2 \
| cut -d '-' -f2 \
| tr -d 'n')

version="${full_version::-2}"
build="${full_version:4:1}"

echo  'Latest version: '$full_version

## Get the filename
dl_filename=$(curl -s "${LR_URL}" \
| grep "name.*linux64-gpl-${version}.tar.xz" \
| cut -d ':' -f2 \
| { read n; echo ${n:1:-2}; })

dl_name="${dl_filename::-7}"

echo 'File to download: '$dl_filename

## Download the latest
## Base on: echo $(curl -s "${LR_URL}"" | grep "browser_download_url.*ffmpeg-n4\.4\.1.*linux64-gpl-4\.4\.tar.xz" | cut -d ':' -f 2,3 | tr -d '"')
curl -s "${LR_URL}" \
| grep "browser_download_url.*linux64-gpl-${version}.tar.xz" \
| cut -d ':' -f 2,3 \
| tr -d '"' \
| wget -qi - -O $dl_filename

## Remove previous package installed using apt
status="$(dpkg-query -W --showformat='${db:Status-Status}' ${PKG_NAME} 2>&1)"
if [ $? = 0 ] || [ "${status}" = installed ]; then
  sudo apt remove --purge --auto-remove -y "${PKG_NAME}"
fi

## Define package installation paths
pkg_path="${LOCAL_PATH}/${PKG_NAME}"
pkg_lib_path="${LIB_PATH}/${PKG_NAME}"

## Extract and install the downloaded version
sudo rm -rf $pkg_path && tar -xvf $dl_filename
sudo mv -v $dl_name $pkg_path

## Add binary files to system binary and library directories
sudo ln -sv "${pkg_path}" "${pkg_lib_path}"
sudo ln -sv "${pkg_lib_path}/bin/ffmpeg" "${BIN_PATH}/ffmpeg"
sudo ln -sv "${pkg_lib_path}/bin/ffplay" "${BIN_PATH}/ffplay"
sudo ln -sv "${pkg_lib_path}/bin/ffprobe" "${BIN_PATH}/ffprobe"

## Test your new version.
ffmpeg -version | grep 'ffmpeg version'

相关内容