Skip to content

Mở trình chỉnh sửa ​

ts
showEditor(filePath: string, config: EditorOptions): void

showEditor() hiển thị trình cắt native ở chế độ toàn màn hình. filePath có thể là đường dẫn cục bộ, URI file://, hoặc URL HTTPS nếu bạn đã cài package FFmpegKit https. Mọi tùy chọn đều không bắt buộc, nhưng bạn vẫn phải truyền một object ({} cũng được).

ts
import { showEditor } from 'react-native-video-trim';

showEditor(videoUri, {
  maxDuration: 60_000,
  minDuration: 3_000,
  autoplay: true,
  saveToPhoto: true,
  openShareSheetOnFinish: true,
  headerText: 'Cắt video của bạn',
});

Hàm trả về ngay. Những gì diễn ra sau đó được báo lại qua các sự kiện: onShow, onLoad, onStartTrimming, onFinishTrimming, onCancel, onHide, v.v. Gọi closeEditor() để đóng trình chỉnh sửa từ code.

Kiểu của các tùy chọn là EditorOptions. Các bảng dưới đây gom nhóm những tùy chọn hay dùng nhất; trang tài liệu API của EditorConfig liệt kê đầy đủ mọi trường.

Media và đầu ra ​

Tùy chọnKiểuMặc địnhMô tả
type'video' | 'audio''video'Loại media. 'audio' hiển thị dạng sóng.
outputExtstring'mp4'Phần mở rộng của tệp đầu ra, ví dụ 'mov', 'wav', 'm4a'.
maxDurationnumber-1 (không giới hạn)Độ dài tối đa của đoạn được chọn, tính bằng ms.
minDurationnumber-1Độ dài tối thiểu của đoạn được chọn, tính bằng ms. Dù đặt thế nào, trình chỉnh sửa cũng không cho chọn đoạn ngắn hơn 1 giây.
enablePreciseTrimmingbooleanfalseMã hóa lại để cắt chính xác đến từng khung hình. Xem Cắt chính xác.
removeAudiobooleanfalseBỏ âm thanh khỏi tệp đầu ra. Trình chỉnh sửa mở ở trạng thái tắt tiếng, và đầu ra vẫn không có tiếng dù người dùng bật lại âm thanh. Xem Tốc độ và tắt tiếng.
speednumber1.0Tốc độ ban đầu, từ 0.25 đến 4.

Phát lại ​

Tùy chọnKiểuMặc địnhMô tả
autoplaybooleanfalseTự động phát khi media đã tải xong.
jumpToPositionOnLoadnumber-1Tua đến vị trí này (ms) sau khi tải xong.
zoomOnWaitingDurationnumber5000Khi người dùng giữ yên tay kéo, dòng thời gian phóng to để chỉ hiển thị khoảng thời gian này (ms) quanh tay kéo, giúp chỉnh chính xác hơn.
enableHapticFeedbackbooleantrueRung phản hồi khi kéo tay kéo và khi chạm hai đầu dòng thời gian.
enableEditToolsbooleantrueHiển thị thanh công cụ (lật, xoay, cắt khung, tắt tiếng, tốc độ, hoàn tác, làm lại). Chỉ áp dụng cho video.

Khi người dùng lưu ​

Tùy chọnKiểuMặc địnhMô tả
saveToPhotobooleanfalseLưu đầu ra vào thư viện ảnh. Cần quyền truy cập.
openDocumentsOnFinishbooleanfalseMở trình chọn tài liệu của hệ thống để người dùng lưu tệp đầu ra.
openShareSheetOnFinishbooleanfalseMở bảng chia sẻ với tệp đầu ra.
closeWhenFinishbooleantrueĐóng trình chỉnh sửa sau khi cắt thành công.
removeAfterSavedToPhotobooleanfalseXóa tệp đầu ra sau khi đã lưu vào thư viện ảnh.
removeAfterFailedToSavePhotobooleanfalseXóa tệp đầu ra nếu lưu vào thư viện ảnh thất bại.
removeAfterSavedToDocumentsbooleanfalseXóa tệp đầu ra sau khi đã lưu qua trình chọn tài liệu.
removeAfterFailedToSaveDocumentsbooleanfalseXóa tệp đầu ra nếu lưu qua trình chọn tài liệu thất bại.
removeAfterSharedbooleanfalseXóa tệp đầu ra sau khi chia sẻ (chỉ iOS).
removeAfterFailedToSharebooleanfalseXóa tệp đầu ra nếu chia sẻ thất bại (chỉ iOS).

Văn bản và giao diện ​

Tùy chọnKiểuMặc địnhMô tả
theme'dark' | 'light''dark'Theme của trình chỉnh sửa. Xem Theme và màu sắc.
headerTextstring''Tiêu đề ở đầu trình chỉnh sửa.
headerTextSizenumber16Cỡ chữ tiêu đề, tính bằng sp/pt.
headerTextColorchuỗi màutheo themeMàu tiêu đề.
trimmerColorchuỗi màu'#f1d247'Màu của khung cắt và các tay kéo.
handleIconColorchuỗi màutheo themeMàu của các mũi tên trên tay kéo.
cancelButtonTextstring'Cancel'Nhãn nút Hủy.
saveButtonTextstring'Save'Nhãn nút Lưu.
trimmingTextstring'Trimming video...'Văn bản trong hộp thoại tiến trình.
durationFormatstring'mm:ss.SSS'Định dạng của nhãn thời gian, xem bên dưới.
fullScreenModalIOSbooleanfalseiOS: hiển thị dạng modal toàn màn hình thay vì sheet.
changeStatusBarColorOnOpenbooleanfalseAndroid: chuyển thanh trạng thái sang màu đen khi trình chỉnh sửa đang mở.

Định dạng nhãn thời gian ​

durationFormat quyết định cách hiển thị các nhãn thời gian bắt đầu, hiện tại và kết thúc. Tùy chọn này không ảnh hưởng đến payload của sự kiện: payload luôn là số mili giây nguyên gốc.

Giá trịVí dụ
'mm:ss'01:23
'mm:ss.SS'01:23.45
'mm:ss.SSS' (mặc định)01:23.456
'hh:mm:ss'00:01:23
'hh:mm:ss.SSS'00:01:23.456

Giá trị không hợp lệ sẽ được thay bằng giá trị mặc định.

Hộp thoại xác nhận ​

Mọi hộp thoại đều có thể tắt đi hoặc đổi nội dung. Đây cũng là cách để bạn dịch trình chỉnh sửa sang ngôn ngữ khác.

Hộp thoạiBật/tắt bằngTùy chọn nội dung
Thoát trình chỉnh sửaenableCancelDialog (true)cancelDialogTitle, cancelDialogMessage, cancelDialogCancelText, cancelDialogConfirmText
LưuenableSaveDialog (true)saveDialogTitle, saveDialogMessage, saveDialogCancelText, saveDialogConfirmText
Hủy thao tác cắt đang chạyenableCancelTrimmingDialog (true)cancelTrimmingDialogTitle, cancelTrimmingDialogMessage, cancelTrimmingDialogCancelText, cancelTrimmingDialogConfirmText
Không tải được mediaalertOnFailToLoad (true)alertOnFailTitle, alertOnFailMessage, alertOnFailCloseText
ts
showEditor(videoUri, {
  cancelButtonText: 'Quay lại',
  saveButtonText: 'Xong',
  saveDialogTitle: 'Lưu video?',
  saveDialogMessage: 'Đoạn video đã chọn sẽ được lưu.',
  saveDialogCancelText: 'Không',
  saveDialogConfirmText: 'Lưu',
});

Tiến trình và hủy ​

Hộp thoại tiến trình khi đang cắtXác nhận trước khi hủy thao tác cắt

Trong lúc xử lý tệp, trình chỉnh sửa hiển thị hộp thoại tiến trình với nội dung trimmingText. Khi enableCancelTrimming là true (mặc định), người dùng có thể dừng giữa chừng; lúc đó trình chỉnh sửa phát sự kiện onCancelTrimming.

ts
showEditor(videoUri, {
  trimmingText: 'Đang xử lý video...',
  enableCancelTrimming: true,
  cancelTrimmingButtonText: 'Dừng',
  enableCancelTrimmingDialog: true,
});

Nếu muốn tự hiển thị UI tiến trình ở chỗ khác, hãy lắng nghe onStatistics. Sự kiện này cho biết FFmpeg đã xử lý đến vị trí nào (time, tính bằng ms) và với tốc độ bao nhiêu. Xem Sự kiện.

Ví dụ cấu hình đầy đủ ​

ts
showEditor(videoUri, {
  // khoảng cắt
  maxDuration: 60_000,
  minDuration: 3_000,

  // đầu ra
  saveToPhoto: true,
  removeAfterSavedToPhoto: true,
  openShareSheetOnFinish: true,

  // âm thanh và tốc độ
  removeAudio: false,
  speed: 1.0,

  // giao diện
  theme: 'light',
  headerText: 'Cắt video của bạn',
  cancelButtonText: 'Quay lại',
  saveButtonText: 'Xong',
  trimmerColor: '#007AFF',

  // hành vi
  autoplay: true,
  enableCancelTrimming: true,
});

Phát hành theo giấy phép MIT.