2012-06-26 35 views
12

Có cách nào để cắt video (mp4 hoặc 3gp) trên android, như chỉ sử dụng 5 giây cuối của phim ... trên iphone có thể sử dụng AVAssetExportSession nhưng trên android Tôi đã không tìm thấy bất cứ điều gì tương tự, chỉ có thể một số tài liệu tham khảo để ffmpeg thư viện mà có vẻ phức tạp. Có cách nào dễ dàng hơn để làm điều đó không?Android sdk cắt/cắt tập tin video

+0

thấy http://stackoverflow.com/a/21752769/2562861 – Shijil

Trả lời

8

Bạn có thể thực hiện việc này với thư viện mp4parser của mình. Có một cái nhìn tại ShortenExample nó thực hiện chính xác những gì tên cho thấy. Vì thư viện không thể mã hóa lại video, nó chỉ có thể cắt video ở I-frame. Vì vậy, các điểm trong thời gian mà bạn có thể thực hiện một cắt khá thô.

Trên Android 4.1 bạn có thể truy cập vào các codec phần cứng qua MediaCodec API mà có thể là một tùy chọn (nhưng tôi đã không nhìn thấy bất kỳ ví dụ về mà chưa)

+0

Đây có phải là chỉ cho các tập tin mp4 hoặc nó hoạt động cho các phần mở rộng khác? và tôi có thể tìm liên kết ShortenExample ở đâu? – Catalin

+0

Tệp 3gp về cơ bản là tệp MP4 với một số hạn chế nhỏ. Lib của tôi cũng hoạt động trên 3gpp (và quicktime) tập tin nhưng ** không ** trên container khác như avi hoặc mkv. –

+0

Tôi cần một thư viện chung có thể hoạt động với tất cả các định dạng video mà điện thoại android có thể lưu, như mp4, 3gp, mkv có thể: ( – Catalin

4

thử

Intent trimVideoIntent = new Intent("com.android.camera.action.TRIM"); 

// The key for the extra has been discovered from com.android.gallery3d.app.PhotoPage.KEY_MEDIA_ITEM_PATH 
trimVideoIntent.putExtra("media-item-path",FilePath); 
trimVideoIntent.setData(videoUri); 

// Check if the device can handle the Intent 
List<ResolveInfo> list = getPackageManager().queryIntentActivities(trimVideoIntent, 0); 
if (null != list && list.size() > 0) { 
    startActivity(trimVideoIntent); // Fires TrimVideo activity into being active 
}else { 
    Toast.makeText(this, "not supported",Toast.LENGTH_SHORT).show(); 
} 

công việc của mình trên gói gallery2 cài đặt các thiết bị

3

Chúng tôi có thể cắt video sử dụng ffmpeg trong Android.

Để tích hợp FFmpeg trong Android, chúng tôi có thể sử dụng các thư viện được biên dịch trước như ffmpeg-android.

Để cắt một đoạn video chúng ta có thể sử dụng dưới đây Command-

String[] complexCommand = {"-ss", "" + startMs/1000, "-y", "-i", inputFileAbsolutePath, "-t", "" + (endMs - startMs)/1000, "-s", "320x240", "-r", "15", "-vcodec", "mpeg4", "-b:v", "2097152", "-b:a", "48000", "-ac", "2", "-ar", "22050", outputFileAbsolutePath}; 

Ở đây,

-ss

tìm đến vị trí

-y

tập tin đầu ra mà không Overwrite hỏi.

-i

ffmpeg đọc từ một số bất kỳ đầu vào “tác phẩm” định bởi tùy chọn -i

-t

giới hạn thời gian của dữ liệu đọc từ tập tin đầu vào

-s

kích thước đầu ra video

-r

Set tốc độ khung hình

-vcodec

Đặt codec video.

-b: v

Đặt bitrate video

-b: a

Đặt bitrate âm thanh

-ac

Đặt số kênh âm thanh.

-ar

đặt tỷ lệ lấy mẫu cho dòng âm thanh nếu mã hóa

startMs

bắt đầu thời gian của video trong mili giây từ nơi bạn muốn cắt

endMs

cuối thời gian của video tính bằng mili giây mà bạn muốn cắt

Tôi đã tạo ra một dự án android mẫu trên video chỉnh sửa bằng FFMpeg trong đó bao gồm cắt video.Check nó dùng ngoài trời

https://github.com/bhuvnesh123/FFmpeg-Video-Editor-Android

và hướng dẫn của nó at-

https://androidlearnersite.wordpress.com/2017/03/17/ffmpeg-video-editor/