Khắc phục sự cố
"The package doesn't seem to be linked"
Native module không có trong bản build.
- iOS: chạy
npx pod-install ios, rồi build lại. - Build lại ứng dụng sau khi cài đặt hoặc nâng cấp package. Reload Metro không nạp lại code native.
- Expo: dùng development build hoặc
npx expo run:ios/npx expo run:android. Expo Go không thể nạp thư viện này.
Trình chỉnh sửa mở rồi đóng ngay, hoặc hiển thị "Fail to load media"
- Kiểm tra tệp bằng
isValidFile()trước. - Với URL
https://, hãy cài package FFmpegKithttpstrên cả hai nền tảng và kiểm tra kết nối mạng của thiết bị. - Một số picker trả về URI tạm thời, có thể hết hạn sau một lúc. Nếu không mở tệp ngay, hãy sao chép tệp vào bộ nhớ của ứng dụng trước.
maxDuration có vẻ không hoạt động
Giá trị thời gian tính bằng mili giây. maxDuration: 30 cho phép 30 ms; giá trị bạn cần là 30_000. Trình chỉnh sửa không bao giờ cho phép chọn đoạn ngắn hơn 1 giây, bất kể minDuration là gì.
showEditor(uri) throw lỗi
Truyền một object tùy chọn, kể cả khi rỗng: showEditor(uri, {}).
Điểm cắt sớm hoặc muộn hơn đoạn đã chọn
Khi không bật cắt chính xác, điểm cắt sẽ bám theo keyframe. Hãy bật enablePreciseTrimming.
Lưu vào thư viện ảnh thất bại
- iOS: thêm
NSPhotoLibraryUsageDescriptionvàoInfo.plist. Xử lý mãNO_PHOTO_PERMISSIONtrongonError. - Android 9 trở xuống: khai báo
WRITE_EXTERNAL_STORAGE(xem Cài đặt).
Xuất mp3 thất bại
Các bản build FFmpegKit mặc định không có libmp3lame. Hãy dùng m4a hoặc wav, hoặc chuyển sang một package FFmpegKit có kèm thư viện này.
merge() hoặc mixAudio() thất bại với URL
Cả hai hàm chỉ nhận tệp cục bộ. Hãy tải các tệp đầu vào về máy trước.
Android: mã hóa lại thất bại trên một thiết bị cụ thể
Thư viện đã tự thử lại với HEVC rồi đến MPEG-4 phần mềm; xem Cơ chế dự phòng bộ mã hóa trên Android. Hãy thu thập log từ onLog (hoặc logcat với tag VideoTrimmerUtil) và đính kèm khi mở issue.
Android: bảng chia sẻ xung đột với FileProvider của tôi
Thư viện dùng provider riêng (${applicationId}.videotrimprovider) và tên resource riêng, nên không xung đột với provider của bạn. Nếu bạn từng làm theo tài liệu cho bản 8.2.1 trở về trước, hãy xem ghi chú nâng cấp trong Cài đặt.
Lỗi build sau khi thay đổi phiên bản SDK
Hãy đảm bảo các giá trị ext gốc (compileSdkVersion, minSdkVersion, targetSdkVersion, kotlinVersion) khớp với yêu cầu của phiên bản React Native bạn đang dùng. Thư viện dùng các giá trị này như mô tả trong Cài đặt.
Mẹo tối ưu hiệu năng
- Dùng headless
trim()cho các tác vụ xử lý hàng loạt không cần UI. - Cắt bằng stream copy gần như tức thì; cắt chính xác, đổi tốc độ, biến đổi hình ảnh,
compress()vàmerge()đều mã hóa lại và mất nhiều thời gian hơn với tệp lớn. - Xóa các tệp đầu ra không còn dùng, hoặc gọi
cleanFiles()định kỳ. - Nén video dung lượng lớn trước khi upload.
Vẫn chưa giải quyết được?
Hãy tìm hoặc mở issue trên GitHub, ghi rõ nền tảng, kiến trúc, phiên bản thư viện và output của onError / onLog.