如何使用开始和剪切功能修剪视频在Android中以编程方式结束时间? [英] How to trim the video with start & end time in android programmatically?
问题描述
我想以编程方式在android中根据开始时间和结束时间来修剪本地视频,我尝试在下面附加一些链接,但对我没有用.请让我知道任何可用的库或示例代码来克服这个问题?>
引用链接:
- Android sdk剪切/修剪视频文件
- 如何使用FFMPEG库修剪视频android?
- https://superuser.com/questions/377343/cut-part-from-video-file-from-start-position-to-end-position-with-ffmpeg
提前谢谢!
使用FFMPEG库解决您的问题.感谢您的写作心思,使ffmpeg对于Android变得简单1. 实现'com.writingminds:FFmpegAndroid:0.3.2'
-
初始化ffmpeg
private void setUpFFmpeg(){ffmpeg = FFmpeg.getInstance(context);尝试 {ffmpeg.loadBinary(new LoadBinaryResponseHandler(){@Override公共无效onStart(){Log.d("Event","onStart");}@Override公共无效onFailure(){Log.d("Event","onFailure");}@Override公共无效onSuccess(){Log.d("Event","onSuccess");}@Override公共无效onFinish(){Log.d("Event","onFinish");}});} catch(FFmpegNotSupportedException e){//处理设备不支持FFmpeg的情况}}
-
使用 FFMPEG命令,例如上面发布的@Mahesh Keshvala.做得好@Mahesh
-
然后
execFFmpegBinary(complexCommand);
将像这样private void execFFmpegBinary(String []命令){尝试 {ffmpeg.execute(commands,new ExecuteBinaryResponseHandler(){@Override公共无效onStart(){Log.d("Event","onStart");}@Overridepublic void onProgress(String message){Log.e("Event","onProgress-" +消息);}@Overridepublic void onFailure(String message){Log.e("Event","onFailure-" +消息);}@Overridepublic void onSuccess(String message){Log.e("Event","onSuccess-" +消息);}@Override公共无效onFinish(){Log.e("Event","onFinish");}});} catch(FFmpegCommandAlreadyRunningException e){//处理FFmpeg是否已在运行}}
尝试剪切视频的命令
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};
要了解有关ffmpeg android的更多信息,请参考此链接
I want to trim the local video based on start and end time in android programmatically ,I tried below attached few links but haven't worked for me.Please let me know any working libraries or sample code to overcome this?
Refereed links:
- Android sdk cut/trim video file
- How to trim the video using FFMPEG library in android?
- https://superuser.com/questions/377343/cut-part-from-video-file-from-start-position-to-end-position-with-ffmpeg
Thanks in advance!
Use FFMPEG library to solve your problem. Thanks for writingminds to make ffmpeg simple for android
1. implementation 'com.writingminds:FFmpegAndroid:0.3.2'
initialize ffmpeg
private void setUpFFmpeg() { ffmpeg = FFmpeg.getInstance(context); try { ffmpeg.loadBinary(new LoadBinaryResponseHandler() { @Override public void onStart() { Log.d("Event ", "onStart"); } @Override public void onFailure() { Log.d("Event ", "onFailure"); } @Override public void onSuccess() { Log.d("Event ", "onSuccess"); } @Override public void onFinish() { Log.d("Event ", "onFinish"); } }); } catch (FFmpegNotSupportedException e) { // Handle if FFmpeg is not supported by device } }
use FFMPEG command like @Mahesh Keshvala posted above. Good work @Mahesh
then
execFFmpegBinary(complexCommand);
will be like thisprivate void execFFmpegBinary(String[] command){ try { ffmpeg.execute(commands, new ExecuteBinaryResponseHandler() { @Override public void onStart() { Log.d("Event ", "onStart"); } @Override public void onProgress(String message) { Log.e("Event ", "onProgress - " + message); } @Override public void onFailure(String message) { Log.e("Event ", "onFailure - " + message); } @Override public void onSuccess(String message) { Log.e("Event ", "onSuccess - " + message); } @Override public void onFinish() { Log.e("Event ", "onFinish"); } }); } catch (FFmpegCommandAlreadyRunningException e) { // Handle if FFmpeg is already running } }
try command for cut video
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};
to know more about ffmpeg android refer this link
这篇关于如何使用开始和剪切功能修剪视频在Android中以编程方式结束时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!