Xin thứ lỗi cho sự chậm trễ của tôi đến bữa tiệc, đây là điều mà tôi đã làm việc với việc ghi lại màn hình lossless muộn
Ban đầu tôi đã sử dụng OBS để ghi lại màn hình của mình trong suốt năm 2019 chủ yếu để tải lên các bản ghi / truyền màn hình lên youtube, tuy nhiên gần đây tôi đã bắt đầu thử nghiệm sử dụng ffmpeg để ghi lại màn hình của mình và mic chưa thử nghiệm ghi âm thanh trên máy tính để bàn .
Tôi đã bắt đầu với cài đặt vanilla ffmpeg để ghi lại màn hình của mình, nhưng cài đặt GOP stock của bản ghi khiến nó cực kỳ đau đớn khi chỉnh sửa bản ghi trong trình chỉnh sửa NLE / NLA như shotcut để tôi quay lại và đọc lại tài liệu chụp màn hình trên wiki ffmpeg , và nhận thấy rằng các bản ghi âm màn hình có thể được chụp lossless sử dụng các codec x264 miễn là -crf 0
các CRF được thiết lập để 0 mà tôi tin rằng phương tiện ffmpeg sẽ sử dụng bộ giải mã x264 sẽ không áp dụng bất kỳ nén lossy đoạn ghi âm. Ngoài ra wiki đề nghị sử dụng -preset ultrafast
kết hợp với -crf 0
cài đặt lệnh ffmpeg. Tôi đã thử nghiệm với các cài đặt này tối qua và chất lượng hình ảnh / kích thước tệp là tuyệt vời.
Tôi đã ghi lại màn hình 4K 3840 x 2160 màn hình của mình ở tốc độ 30 khung hình / giây và tốc độ bit hoàn toàn có thể quản lý được, tức là. Tôi không nghĩ nó đã vượt quá 10MB / giây và thời gian ghi một phút là ~ 48 MB, đây là kích thước tệp hoàn toàn chấp nhận được để lưu trữ các bản ghi.
Hãy cẩn thận
- rõ ràng nếu bạn không thích sử dụng một dòng lệnh thì điều này có thể sẽ không dành cho bạn, vì tôi thấy việc dựa vào GUI để giao diện với ffmpeg không phải là một điều khả thi vì hầu hết các GUI tôi đã thử nghiệm đã lỗi thời.
- Ngoài ra, hiện tại tôi có vấn đề với việc ghi mic và màn hình âm thanh cùng một lúc theo một quy trình / lệnh ffmpeg duy nhất, vì vậy tôi phải chia lệnh thành hai lệnh riêng biệt / được xử lý và khởi động chúng đồng thời để giữ cho âm thanh / video được đồng bộ hóa.
- Tôi chạy macOS 10.13.6 và tôi đang sử dụng trình điều khiển web Nvidia vì vậy đó có thể là vấn đề tại sao tôi xử lý ffmpeg / lệnh duy nhất của màn hình ghi âm và mic đồng thời bị lỗi. Không hoàn toàn chắc chắn vấn đề là gì. 🤷♂️
- Tôi chưa đưa ra giải pháp để ghi lại âm thanh trong một codec không mất dữ liệu, nhưng đó chắc chắn sẽ là nhiệm vụ tiếp theo của tôi để nghiên cứu
- Ngoài ra, tôi muốn chuyển đổi tất cả các bản ghi trước ffmpeg & OBS bằng kỹ thuật mới này để bảo quản chúng cho mục đích lưu trữ.
Bạn đề cập đến việc chuyển đổi bản ghi của mình thành GIF động, tôi đã sử dụng dự án sau đây để chuyển đổi bản ghi màn hình nhỏ thành GIF sẽ chỉ hoạt động với bản ghi dựa trên thiết bị đầu cuối và đã có kết quả dễ chịu khi sử dụng. Nó thậm chí còn có một thùng chứa docker giúp sử dụng nó khá đơn giản cho các hệ điều hành khác nhau.
Tôi đã thử nghiệm sử dụng ffmpeg để chuyển đổi và ghi lại iPhone thành GIF hoạt hình trong một thời gian trước, điều này rất hữu ích để tải GIF lên github vì tôi tin rằng github không hỗ trợ tải lên các tệp video như Mov mkv hoặc mp4 .
Ngoài ra, tôi đã tìm kiếm nhanh trên codec QTRLE và có vẻ như nó không tương thích với định dạng chứa MP4 , vì vậy nếu sử dụng một thứ gì đó không phải là MOV, bạn có thể xem xét sử dụng một codec khác.
Command lệnh dưới đây sẽ yêu cầu được cài đặt đồng thời .
concurrently --kill-others \
"ffmpeg -f avfoundation -capture_cursor 1 \
-capture_mouse_clicks 1 \
-framerate 30
-i "1:" -c:v libx264 -crf 0 -preset ultrafast \
lossless-screen-rec.mkv 2>/dev/null" \
"ffmpeg -f avfoundation -i ":3" \
-acodec alac \
lossless-mic-.m4a 2>/dev/null"
lệnh trên sẽ chụp màn hình máy tính một cách dễ dàng bằng x264 và sử dụng alac để thu tín hiệu đầu vào micrô một cách dễ dàng. cả hai định dạng đều hoạt động tốt để chỉnh sửa trong trình chỉnh sửa NLA / NLE như shotcut.
⚠️ ":3"
và 1:
sẽ khác nhau cho mỗi hệ thống chạy hệ điều hành MacOS
Để có danh sách các thiết bị chụp trên macOS
ffmpeg -f avfoundation -list_devices true -i ""
Dù sao tôi biết đây là rất nhiều thông tin, nhưng tôi nghĩ tôi đã chia sẻ thông tin này vì thực tế là tôi đã sử dụng ffmpeg gần như hàng ngày trong vài tuần qua nên tôi nghĩ tôi đã chia sẻ những gì tôi đã học được, và để lại thông tin này đối với tôi trong tương lai 👴🏻