Trang chủ Công nghệ Làm việc với mkvtoolnix

Làm việc với mkvtoolnix

241
0

Nhiệm vụ xử lý seri phim 200 tập. Mỗi file phim có 2 luồng audio, cần bỏ đi 1 luồng audio tiêng Anh để khi tải lên Drive sẽ xem online được với tiếng Việt.

10 triệu tiền điện được giảm ngay 150K! Xin anh em 5 giây để Ngọc giới thiệu. Anh em được giảm 1.5% giá trị hóa đơn khi thanh toán tiền điện tại đây. Không giới hạn số tiền đâu nhé, 100 triệu vẫn được giảm 1.5tr.

Công cụ được sử dụng là MKVToolNix, môi trường VPS Linux 22.04 LTS của Linode, tạo 1 volumes 500GB để lưu dữ liệu (/mnt/ngoc).

Sử dụng Transmission để tải torrent về VPS.

Tạo 1 thư mục tổng để xử lý hàng loạt cho nhanh và di chuyển toàn bộ file qua đó:

cd /mnt/ngoc
mkdir main
mv *.mkv main

MKVTOOLNIX

Dòng lệnh để cài đặt:

sudo apt update
sudo apt install mkvtoolnix
Bạn đang đọc bài viết trên lucngoc.com. Năm 2024, Ngọc sẽ đẩy mạnh nội dung trên kênh Youtube, anh em đăng ký kênh để cập nhật nội dung hay nhé!

Để xem thông tin các luồng trong tập tin mkv ta dùng lệnh, vòng lặp for sẽ chạy lần lượt tất cả các file mkv trong thư mục, ta có thể dùng for f in *S01* (các file có tên chứa S01) để xử lý các file của từng season:

for f in *.mkv; do mkvmerge -i "$f"; done

Để xem chi tiết các luồng trong tập tin mkv ta dùng lệnh:

for f in *.mkv; do mkvmerge -J "$f"; done

Lệnh mkvmerge có dạng:

mkvmerge -o <đích> <tham số> <nguồn>

Các tham số cần quan tâm:

-D loại bỏ video
-A loại bỏ audio
-S loại bỏ sub
-T loại bỏ tag
-M loại bỏ attachment
--no-chapters loại bỏ chapters
-A -S -T -M --no-chapters loại bỏ hết chỉ lấy video
-a vie -s vi,en chỉ giữ lại audio vi và sub vi, en (und chỉ các track không được xác định ngôn ngữ)

Ví dụ để loại bỏ luồng âm thanh có id số 1, ta chạy lệnh:

for f in *.mkv; do mkvmerge -o "output/$f" -a 3,4,5 "$f"; done

Tham số -a 3,4,5 sẽ chỉ lấy các luồng âm thanh có id là 3, 4, 5 (nếu id đó không phải là âm thanh sẽ tự động được bỏ qua).

Ta cũng có thể chỉ đích danh các luồng âm thanh theo ngôn ngữ, dòng lệnh dưới đây sẽ chỉ lấy audio ngôn ngữ là tiếng Việt và sub tiếng Việt hoặc tiếng Anh:

for f in *.mkv; do mkvmerge -o "output/$f" -a vie -s vie,eng "$f"; done

Để remuxing 2 file lại ta dùng lệnh:

mkvmerge -o <đích> <file1> <file2>

MKVPROPEDIT

mkvpropedit là công cụ giúp chỉnh sửa các thuộc tính của file và các track, câu lệnh dưới đây sẽ đặt các thuộc tính của track 1 làm mặc định:

# Điều chỉnh cách track
for f in *.mkv; do mkvpropedit \
--edit track:1 \
--set name="" \
--set language="vi" \
--set flag-default=1 \
--set flag-enabled=1 \
--set flag-forced=1 \
"$f"; done

Hoặc loại bỏ tiêu đề của tập tin:

for f in *.mkv; do mkvpropedit -d title "$f"; done

BÀI TẬP TÌNH HUỐNG

Game of Thrones/
├─ S01E01/
│  ├─ S01E01.mp4
│  ├─ vi.srt
│  ├─ en.srt
├─ S01E02/
│  ├─ S01E02.mp4
│  ├─ vi.srt
│  ├─ en.srt
├─ .../

Minh họa ta có thư mục phim gồm rất nhiều các tập, mỗi tập là một thư mục với tập tin mp4, phụ đề tiếng Việt vi.srt và tiếng Anh en.srt. Ta cần dùng mkvmerge để mux chúng lại thành 1 tập tin .mkv và đưa ra thư mục chính.

Việc dùng lệnh rất đơn giản thay vì hàng loạt các thao tác kéo thả chọn tập tin trên GUI:

cd .../"Game of Thrones"
for f in *; do \
mkvmerge -o $f.mkv $f/*.mp4 \
--default-track 0:yes --forced-display-flag 0:yes --language 0:vi $f/vi.srt \
--default-track 0:no --language 0:en $f/en.srt ; done

* ở đây là đại diện cho tên thư mục.

Mở rộng trong trường hợp bạn mux nhiều thành phần audio, sub:

!for f in *; do mkvmerge -o $f.mkv $f/*.mp4 \
--default-track 0:yes --forced-display-flag 0:yes --language 0:vi $f/vi.mkv \
--default-track 0:no --language 0:en $f/en.m4a \
--default-track 0:yes --forced-display-flag 0:yes --language 0:vi $f/vi.srt \
--default-track 0:no --language 0:en $f/en.srt; done

CUT VÀ NỐI VIDEO VỚI MKVTOOLNIX

Đây là một trong những thứ đầy “ma thuật”. Cut nối video sẽ đi kèm cả phụ đề và các kênh âm thanh. Việc này sẽ không bao gồm việc recode lại video nên tốc độ khá nhanh, bù lại có thể mất một vài khung hình.

Câu lệnh tương đối đơn giản, sau khi chạy bạn sẽ thu được 1 file gồm các phân đoạn có thời gian liệt kê.

mkvmerge -o <tập tin đích> --split parts:00:15:23-00:18:51,+01:32:48-01:45:05 <tập tin nguồn>

Nối các file video cùng thông số:

$ mkvmerge -o full.mkv file1.mkv +file2.mkv

LỆNH RENAME BỎ KÝ TỰ SAU –

Lệnh này thường xử lý để đổi tên phim dạng “Silo S01E01 – Freedom Day.mkv” thành “Silo S01E01.mkv”

for file in *; do
    ext=.${file##*.}  
    [ "$ext" = ".$file" ] && ext="" 
    nostr=${file%% -*}         
    mv "$file" "$nostr$ext"
done

Tham khảo thêm về mkvtoolnix tại đây.

Liên kết chia sẻ nhanh:
DMCA.com Protection Status
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận