Điểm:9

Cách an toàn nhất để cài đặt ffmpeg ổn định mới nhất (>= 4.3) trên Ubuntu 20.04 (ppa không hoạt động)?

lá cờ mx

tôi đang cố gắng sử dụng ffmkv, yêu cầu phiên bản ffmpeg hỗ trợ zscale.

README của họ cho biết đây là mặc định trong phiên bản 18.04, nhưng phiên bản của tôi dưới 20.04 là 4.2.4-1ubuntu0.1, dường như không bao gồm hỗ trợ zscale.

nếu tôi chạy apt-get cài đặt ffmpeg, nó nói rằng ffmpeg đã là phiên bản mới nhất (7:4.2.4-1ubuntu0.1). nhưng rõ ràng từ ffmpeg.org rằng bản phát hành ổn định hiện tại là 4.3.2-0.

Tôi đã thử thêm ppa:jonathonf/ffmpeg-4 để nhận bản mới nhất nhưng không cập nhật được ("không có tệp Phát hành").

Cách an toàn nhất để cập nhật nó là gì? Lý tưởng nhất là có một PPA sẽ hoạt động mà Google của tôi không xuất hiện. Hoặc, tôi có nên tải xuống không ffmpeg_4.3.2-0+deb11u2ubuntu1_amd64.deb tập tin và cài đặt nó với dpkg?

Tôi luôn hoang tưởng về việc cài đặt bất kỳ thứ gì ở kênh phụ, đặc biệt khi nó liên quan đến bất kỳ thứ gì liên quan đến Video. Cách tốt nhất "sẽ không phá vỡ các bản cập nhật APT hệ thống trong tương lai" để cài đặt ffmpeg ổn định hiện tại là gì?

marcelm avatar
lá cờ cn
_"README của họ cho biết đây là mặc định trong 18.04, nhưng..."_ - Thực ra, [readme đó](https://github.com/Fmstrat/ffmkv#readme) cho biết hỗ trợ zscale _not_ được hỗ trợ trong 18.04 theo mặc định (điều này hợp lý, vì [hỗ trợ zscale là một tính năng mới của ffmpeg 4.3.1](https://ko-fi.com/post/FFmpeg-4-3-1-available-now-with-zscale-support- R6R52I7J7)).
lá cờ mx
@marcelm oh WOW, điều đó thật mơ hồ! Điều đó có thể dễ dàng được giải thích theo cách khác. :)
lá cờ in
Điều đó chỉ áp dụng cho ppa đó. FFmpeg đã thêm zscale trong 3.0
Điểm:6
lá cờ zw

Có các PPA khác với ffmpeg mới hơn. Gần đây nhất là FFmpeg 4 - công cụ đa phương tiện (Xenial & mới hơn) từ Rob Savoury. Để thêm PPA này vào hệ thống của bạn, hãy sử dụng các lệnh bên dưới:

Sudo add-apt-repository ppa:savoury1/ffmpeg4
sudo apt-get cập nhật
Sudo apt-get cài đặt ffmpeg

Kết quả là bạn sẽ nhận được phiên bản với --enable-libzimg biên dịch cờ và ffmkv sẽ không phàn nàn về "sự thay đổi độ phân giải hoặc chuyển đổi HDR sang SDR".

Lưu ý: bạn có thể tìm kiếm PPA tự mình sử dụng ứng dụng cục bộ đặc biệt có tên Quản lý PPA Y, .

lá cờ mx
Cảm ơn, điều này dường như làm việc tuyệt vời!
lá cờ mx
uh-oh - sau khi nâng cấp ffmpeg, tôi chỉ nhận thấy rằng nó đã hỏng KDEnlive - bây giờ nó không thể kết xuất thành mp4 ("Bộ giải mã video không được hỗ trợ: libx264"). Tôi có cần cài thêm thư viện nào khác không?
N0rbert avatar
lá cờ zw
Nó phụ thuộc vào cách KDEnlive được cài đặt.
lá cờ mx
Nó đã tìm ra; có vẻ như MLT cần được cập nhật. Tôi vừa thêm PPA kdenlive và nâng cấp phiên bản của nó, và bây giờ tất cả dường như đã hoạt động
Điểm:5
lá cờ jp

giải pháp đơn giản

  1. Tải xuống một bản đã được biên dịch ffmpeg từ johnvansickle.com. hỗ trợ zscale được bao gồm.
  2. Đặt đã tải xuống ffmpeg vào của bạn CON ĐƯỜNG bằng cách di chuyển đã tải xuống ffmpeg vào trong /usr/local/bin hoặc ~/thùng (đăng nhập lại hoặc chạy nguồn ~/.profile nếu bạn di chuyển nó vào ~/thùng).

Điều này sẽ không can thiệp vào bất kỳ tệp hệ thống hoặc gói nào khác. Để gỡ cài đặt, chỉ cần xóa ffmpeg tập tin.

Tôi không phải là một fan hâm mộ lớn của PPA. Chúng có thể lộn xộn, thường quá mức cần thiết và có thể gây ra vấn đề bằng cách can thiệp vào hệ thống quản lý gói.

lá cờ us
Nó không dễ bảo trì nhưng nó chắc chắn là một sửa chữa nhanh chóng và tốt đẹp. Cảm ơn!
Avatar avatar
lá cờ ph
Tôi đã tải xuống `ffmpeg-release-amd64-static.tar.xz`, giải nén bản dựng vào một thư mục mới `ffmpeg` và tải thư mục đó lên `/usr/local/bin/ffmpeg`. Bây giờ khi cố gắng bắt đầu ffmpeg với `/usr/local/bin/ffmpeg/ffmpeg`, tôi nhận được `Quyền bị từ chối`. Nếu tôi thử `Sudo /usr/local/bin/ffmpeg/ffmpeg`, tôi nhận được `không tìm thấy lệnh`. Làm thế nào để chạy ffmpeg?
Avatar avatar
lá cờ ph
Chạy được rồi Chỉ cần thay đổi quyền của tệp thi hành `ffmpeg` thành `744`.
Avatar avatar
lá cờ ph
Nếu bạn sử dụng ffmpeg với PHP và `shell_exec(ffmpeg...)` thì bạn cần sử dụng quyền đối với tệp `777`.
Điểm:2
lá cờ ru

Đây là một gói snap cho ffmpeg. Phiên bản hiện tại trong kênh "ổn định" là 4.3.1 nhưng không liệt kê --enable-zimg trong cấu hình bản dựng của nó như được in bằng -phiên bản, vì vậy nó có thể không hoạt động. Tuy nhiên, kênh "cạnh" của gói snap đó chứa phiên bản dựa trên ffmpeg 4.4 với --enable-zimg. Vì vậy, việc cài đặt sẽ dễ dàng như

snap cài đặt ffmpeg --channel edge
Điểm:2
lá cờ in

Có lẽ cách tốt nhất để lấy một bản sao của FFmpeg và bộ lọc zscale là sử dụng, nhưng sửa đổi một chút, FFmpeg trac xuất sắc hướng dẫn biên soạn. Hướng dẫn này sẽ không phải can thiệp vào các thư viện hệ thống.

Điều này có thể được thực hiện chỉ trong hai bước đơn giản:

1. Cài đặt zimg:

Khi cài đặt danh sách dài các phụ thuộc trong hướng dẫn, hãy thêm phần sau vào Mà còn Tải về hình ảnh zimage:

   mkdir -p ~/ffmpeg_sources && \
   cd ~/ffmpeg_sources && \
   wget https://github.com/sekrit-twc/zimg/archive/refs/tags/release-3.0.2.tar.gz && \
   tar xvf phát hành-3.0.2.tar.gz && \
   cd zimg-phát hành-3.0.2 && \
   ./autogen.sh && \
   ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
   chế tạo && \
   thực hiện cài đặt

Điều này cài đặt một bản sao cục bộ của zimg FFmpeg đó sẽ nhận khi nó được biên dịch.

2. Biên dịch FFmpeg:

theo dõi đầy đủ Hướng dẫn truy tìm FFmpeg và khi bạn đến phần FFmpeg được biên dịch, chỉ cần thêm phần sau vào ./configure chuỗi:

   --enable-libzimg

Và điều này sẽ đủ để kích hoạt bộ lọc zscale.

3. Thử nghiệm, thử nghiệm...

Bản thân FFmpeg có thể được kiểm tra sự hiện diện của bộ lọc zscale:

andrew@ithaca:~$ ffmpeg -filters 2> /dev/null |grep zscale
 ..C zscale V->V Áp dụng thay đổi kích thước, không gian màu và chuyển đổi độ sâu bit.
andrew@ithaca:~$ 

tôi đã thử nghiệm ffmkv chính nó với một kích thước lớn cao cấp:

andrew@ithaca:~$ ffmkv --preset 'Tối đa 4K, âm thanh gốc, 4GB mỗi giờ VBR, HDR' input.mkv output.mkv
Âm thanh là Stream Copy VBR, kích thước tệp sẽ lớn hơn ước tính.
Đang xử lý lượt 1 của video VBR, thời gian còn lại chỉ là thời gian còn lại cho lượt 1.
Quá trình sẽ hoạt động 100% trong khi ffmpeg đóng các chức năng.
chuyển đổi ffmpeg của input.mkv bắt đầu vào ngày 30/08/21 7:53:05 chiều
input.mkv có 1248 khung, hiện đang chuyển đổi
ffmpeg: 1253 trên 1248 khung hình ở 24 khung hình/giây, tiến độ: 100% và ETA: 0h 0m 0s     
ffmpeg đã dừng vào ngày 30/08/21 7:54:06 CH

Đang xử lý lượt 2 của video VBR, thời gian còn lại là tổng thời gian còn lại.
Quá trình sẽ hoạt động 100% trong khi ffmpeg đóng các chức năng.
chuyển đổi ffmpeg của input.mkv bắt đầu vào ngày 30/08/21 7:54:06 CH
input.mkv có 1248 khung, hiện đang chuyển đổi
ffmpeg: 1253 trên 1248 khung hình ở 23 khung hình/giây, tiến độ: 100% và ETA: 0h 0m 0s     
ffmpeg đã dừng vào ngày 30/08/21 7:55:06 CH
andrew@ithaca:~$ 

Và tất cả đều ổn :)

Điểm:0
lá cờ us

Việc thêm PPA bên ngoài là rất rủi ro và thường thì chúng có thể gây ra sự cố với cài đặt hiện tại của bạn.

Nếu bạn đang triển khai ứng dụng của mình và cần một phiên bản cụ thể, bạn có thể sử dụng phương pháp này.

Trước tiên, chúng tôi sẽ tải xuống bản dựng tĩnh gpl mới nhất từ ​​một trong các nhà xây dựng chính thức BtbN. Sau đó, chúng tôi sẽ giải nén tập tin trong /usr/local/ffmpeg và tạo Liên kết tượng trưng đến các nhị phân vào /usr/bin danh mục.

Đây là một quá trình cài đặt thủ công. Bạn có thể tạo tập lệnh theo tất cả các bước được đề cập tại đây:

1. Xóa gói đã cài đặt trước đó bằng apt

Sudo apt remove --purge --auto-remove -y ffmpeg

2. Tạo một thư mục tạm thời và di chuyển đến đó

mkdir -vp ~/tmp
cd ~/tmp

3. Lấy tên tệp và phiên bản

## Xác định tên kho lưu trữ
REPO_NAME='BtbN/FFmpeg-Bản dựng'

## Xác định URL của bản phát hành mới nhất
LR_URL="https://api.github.com/repos/${REPO_NAME}/releases/latest"

## Nhận phiên bản mới nhất
version=$(curl -s "${LR_URL}" \
| grep -m 1 ffmpeg-n \
| cắt -d ':' -f2 \
| cắt -d '-' -f2 \
| tr -d 'n' \
| { đọc v; tiếng vang ${v::-2}; })

## Lấy tên tệp
dl_filename=$(curl -s "${LR_URL}" \
| grep "name.*linux64-gpl-${version}.tar.xz" \
| cắt -d ':' -f2 \
| { đọc n; tiếng vang ${n:1:-2}; })

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

4. Tải xuống tệp

## Tải xuống tar.xz mới nhất
cuộn tròn -s "${LR_URL}" \
| grep "browser_download_url.*linux64-gpl-${version}.tar.xz" \
| cắt -d ':' -f 2,3 \
| tr -d '"' \
| wget -qi - -O $dl_filename

5. Xác định đường dẫn cài đặt gói

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

6. Giải nén và cài đặt phiên bản vừa tải về

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

7. Thêm tệp nhị phân vào thư mục thư viện và nhị phân hệ thống

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. Kiểm tra phiên bản mới của bạn.

phiên bản ffmpeg | grep 'phiên bản ffmpeg'

Bây giờ bạn có thể tạo một tập lệnh có tên ffmpeg-install-latest.sh:

#!/bin/bash

## Xác định tên gói
PKG_NAME='ffmpeg'

## Xác định đường dẫn cục bộ của hệ thống
LOCAL_PATH='/usr/local'

## Xác định đường dẫn thư viện hệ thống
LIB_PATH='/usr/lib'

## Xác định đường dẫn nhị phân hệ thống
BIN_PATH='/usr/bin'

## Xác định thư mục nhà của người dùng
USER_HOME_DIR=$(getent passwd ${SUDO_USER:-$USER} | cut -d: -f6)

## Xác định tên kho lưu trữ
REPO_NAME='BtbN/FFmpeg-Bản dựng'

## Xác định bản phát hành URL
RELEASES_URL="https://api.github.com/repos/${REPO_NAME}/releases"

## Xác định URL của bản phát hành mới nhất
## LR_URL="https://api.github.com/repos/${REPO_NAME}/releases/latest"
LR_URL="${RELEASES_URL}/mới nhất"

## Xác định thư mục tạm thời
TMP_DIR='tmp'

## Di chuyển đến thư mục tạm thời
tmp_path="${USER_HOME_DIR}/${TMP_DIR}"
mkdir -vp $tmp_path
cd $tmp_path

## Nhận phiên bản mới nhất và xây dựng
full_version=$(curl -s "${LR_URL}" \
| grep -m 1 ffmpeg-n \
| cắt -d ':' -f2 \
| cắt -d '-' -f2 \
| tr -d 'n')

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

echo 'Phiên bản mới nhất: '$full_version

## Lấy tên tệp
dl_filename=$(curl -s "${LR_URL}" \
| grep "name.*linux64-gpl-${version}.tar.xz" \
| cắt -d ':' -f2 \
| { đọc n; tiếng vang ${n:1:-2}; })

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

echo 'Tệp cần tải xuống: '$dl_filename

## Tải xuống bản mới nhất
## Dựa trên: echo $(curl -s "${LR_URL}"" | grep "browser_download_url.*ffmpeg-n4\.4\.1.*linux64-gpl-4\.4\.tar.xz" | cắt -d ':' -f 2,3 | tr -d '"')
cuộn tròn -s "${LR_URL}" \
| grep "browser_download_url.*linux64-gpl-${version}.tar.xz" \
| cắt -d ':' -f 2,3 \
| tr -d '"' \
| wget -qi - -O $dl_filename

## Xóa gói trước đó đã cài đặt bằng apt
status="$(dpkg-query -W --showformat='${db:Status-Status}' ${PKG_NAME} 2>&1)"
nếu [ $? = 0 ] || [ "${status}" = đã cài đặt ]; sau đó
  Sudo apt remove --purge --auto-remove -y "${PKG_NAME}"
fi

## Xác định đường dẫn cài đặt gói
pkg_path="${LOCAL_PATH}/${PKG_NAME}"
pkg_lib_path="${LIB_PATH}/${PKG_NAME}"

## Giải nén và cài đặt phiên bản đã tải xuống
sudo rm -rf $pkg_path && tar -xvf $dl_filename
sudo mv -v $dl_name $pkg_path

## Thêm tệp nhị phân vào thư mục thư viện và nhị phân hệ thống
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"

## Kiểm tra phiên bản mới của bạn.
phiên bản ffmpeg | grep 'phiên bản ffmpeg'

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.