Cắt sắt ở Đê La Thành

Đóng dấu (watermark) cho hàng loạt video

Đóng dấu (watermark) là cách bảo vệ hiệu quả nhất khi bạn phải chuyển video chưa qua biên tập (raw footages) cho người khác xem thử. Nếu chỉ có vài cái thì bạn có thể làm thủ công mà chẳng phải đắn đo. Nhưng nếu là hàng chục, hàng trăm video khác nhau và phải để riêng từng cái thì đó rất có thể là một câu chuyện buồn.

Nếu có một tác vụ nào đó cứ lặp đi lặp lại thì cách tiết kiệm thời gian nhất là dùng dòng lệnh. Trong bài này, anh sẽ giới thiệu cách dùng ffmpeg trên Mac OS (và tương tự là Linux). Còn Windows thì anh không dùng nên không biết, haha.

Sau khi tải bản nhị phân về từ ffmpeg.org (ở thời điểm này là bản 4.3.1), bạn unzip, chmod +x và chuyển nó vào /usr/local/bin cho tiện dùng. Cách nhanh nhất là bạn mở Terminal ra và lần lượt nhập các dòng này:

cd ~/Downloads/
unzip ffmpeg-4.3.1.zip
chmod +x ffmpeg
sudo mv ffmpeg /user/local/bin/

Khi chạy ffmpeg lần đầu tiên thì MacOS sẽ báo là ứng dụng này bị chặn vì không tìm thấy thông tin nhà phát triển. Bạn phải vào System Preferences, chọn Security & Privacy và cho phép (allow) ffmpeg được phép chạy.

Chạy thử trước

Gì thì cũng cứ phải thử đã. Bạn chép một video vào thư mục Downloads, đặt tên tập tin là test.mp4 chẳng hạn. Trong Terminal, bạn chạy thử mấy dòng này:

ffmpeg -i test.mp4 -i watermark.png \
-filter_complex 'overlay=20:20' \
-s hd1080 \
output.mp4

Ở dòng thứ nhất bạn thấy có hai tập tin đầu vào, một là cái test.mp4 đã biết, hai là cái watermark.png. Đây là cái ảnh bạn dùng để làm dấu. Tốt nhất là bạn nên để sẵn opacity của nó khoảng 30% – 50% gì đấy. Kích thước khoảng 200 – 400px, tuỳ độ phân giải video gốc.

Ở dòng thứ hai thì “20:20” chính là toạ độ mà watermark.png sẽ được chèn vào khung hình của video. Nếu muốn nó ở chính giữa mà không phải cộng trừ gì bạn thay bằng “(main_w-overlay_w)/2:(main_h-overlay_h)/2” (không có ngoặc kép).

Dòng thứ ba bạn có thì dễ dàng đoán là độ phân giải của đầu ra.

Dòng cuối cùng thì khỏi phải nói, đấy là video đã được đóng dấu.

Có thể bạn sẽ thấy là tốc độ chuyển đổi rất chậm, cỡ 0,2x – 0,3x. Tức là một video 60 giây thì phải mất 3 phút mới chuyển xong.

Nếu muốn tiết kiệm thời gian xử lí, bạn thêm tuỳ chọn này vào trước dòng cuối cùng:

-preset ultrafast \

Nếu là video 4k60 thì tốc độ chuyển đổi cũng lên tầm 0,8x – 0,9x. Còn độ phân giải (resolution) nhỏ hơn thì gần như là 1x luôn. Nhưng bù lại thì cỡ tập tin (file size) của output.mp4 sẽ lớn hơn nhiều. Cái gì cũng có giá của nó.

Đóng dấu hàng loạt

Sau khi đã thử nghiệm chán chê thì cũng phải làm thật. Mà nếu không tự tin thì bạn nên thử tiếp với số lượng nhỏ.

Giả sử bạn có hàng tá video cần chuyển trong thư mục ABC-1 ở ổ cứng ngoài có tên là Videos. Bạn sẽ phải chuyển vào thư mục đó:

cd /Volumes/Videos/ABC-1

Ở đây bạn tạo một thư mục là Watermarked để lưu các video sẽ được đóng dấu.

mkdir Watermarked

Giả sử trong thư mục ABC-1 toàn là các tập tin video, bạn có thể tạo một vòng lặp như này để tự động đóng dấu tất cả các video đó:

for i in `ls -1 *.*`; do \
     echo "Watermarking $i" \
     ffmpeg -i "$i" -i ~/Downloads/watermark.png \
     -filter_complex 'overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2' \
     -s hd1080 \
     -preset ultrafast \
     -loglevel +quiet \
     "./Watermarked/$i"; \ 
done

À, tuỳ chọn -loglevel +quiet kia là để tắt hết các thông báo của ffmpeg. Bạn chỉ cần biết đang xử lí cái nào là đủ rồi.

Nếu bạn có khoảng 1 tiếng video 4k60 trong thư mục đấy thì, nếu không có gì khác lạ, cỡ 70 – 75 phút là xong.

Miễn trừ trách nhiệm

Mặc dù đã được kiểm tra kĩ lưỡng nhưng bài này cũng chỉ mang tính tham khảo. Nếu người đọc làm theo mà chẳng may làm hỏng hoặc mất dữ liệu, tác giả có quyền phủi tay 😀