react-native-video-trim là gì?
react-native-video-trim là thư viện React Native dùng để cắt tệp video và âm thanh. Thư viện cho bạn hai cách làm việc với media:
- Màn hình chỉnh sửa native.
showEditor()mở trình cắt toàn màn hình với dòng thời gian thumbnail (hoặc dạng sóng âm thanh), phát lại, thu phóng, thanh công cụ chỉnh sửa (lật, xoay, cắt khung, tắt tiếng, tốc độ, hoàn tác, làm lại) và hộp thoại xác nhận lưu hoặc hủy. Người dùng chọn đoạn cần giữ, còn bạn nhận tệp đầu ra qua các sự kiện. - Headless API. Các hàm như
trim(),compress(),merge()vàmixAudio()xử lý tệp mà không cần UI và trả về Promise.
Trên cả hai nền tảng, việc xử lý media đều chạy bằng FFmpegKit. Mỗi khi cần mã hóa lại video, thư viện dùng bộ mã hóa phần cứng H.264, kèm cơ chế dự phòng tự động trên Android.
Nền tảng và kiến trúc
| Hỗ trợ | |
|---|---|
| iOS | Có (Swift, AVFoundation, FFmpegKit) |
| Android | Có (Kotlin, MediaCodec, FFmpegKit), min SDK 24 |
| New Architecture (TurboModules) | Có |
| Old Architecture (Bridge) | Có, xem Old Architecture |
| Expo | Development build và expo prebuild. Không hỗ trợ Expo Go. |
Bạn có thể làm gì
| Tính năng | Xem ở đâu |
|---|---|
| Cắt video và âm thanh trên dòng thời gian trực quan | Trình chỉnh sửa, trim() |
| Dạng sóng cho tệp âm thanh | Cắt âm thanh |
| Lật, xoay 90°, cắt khung tự do, hoàn tác và làm lại | Lật, xoay, cắt khung |
| Cắt chính xác đến từng khung hình | Cắt chính xác |
| Bỏ track âm thanh, đổi tốc độ (0.25x đến 4x) | Tốc độ và tắt tiếng |
| Nén theo preset hoặc theo bitrate và kích thước cụ thể | compress() |
| Lấy một khung hình dưới dạng JPEG hoặc PNG | getFrameAt() |
| Tách track âm thanh | extractAudio() |
| Chuyển một đoạn video thành GIF | toGif() |
| Nối nhiều clip | merge() |
| Thêm nhạc nền hoặc lời thuyết minh | mixAudio() |
| Lưu vào thư viện ảnh, lưu qua trình chọn tài liệu, chia sẻ | Lưu và quản lý tệp |
| Giao diện tối và sáng, màu tùy chỉnh | Theme và màu sắc |
| Nguồn HTTPS | Tệp từ xa |
Các phần ghép lại với nhau thế nào
text
your app ── showEditor(uri, options) ──▶ native editor ──▶ events (onLoad, onFinishTrimming, onError, ...)
── trim / compress / merge ... ──▶ FFmpegKit ──▶ Promise<{ outputPath, ... }>
── saveToPhoto / saveToDocuments / share / deleteFile ──▶ output filesMọi API tạo ra tệp đều trả về hoặc báo lại outputPath tuyệt đối của tệp đó. Đầu ra của trình chỉnh sửa và của trim() được giữ lại cho đến khi bạn xóa; đầu ra của các headless API còn lại được ghi vào thư mục cache. Xem Lưu và quản lý tệp.
Bước tiếp theo
- Cài đặt thư viện
- Mở trình chỉnh sửa trong năm phút
- Xem tài liệu API được sinh tự động
Ghi công
Trình chỉnh sửa trên Android dựa trên Android-Video-Trimmer, còn UI trên iOS dựa trên VideoTrimmerControl.