dev*_*dev 7 video java-native-interface android video-editing
我在whatsapp messenger中看到了独特的功能.在发送视频应用程序之前,允许用户选择帧,用户只能将那些选定的帧作为视频发送.
那么,我的问题是我们如何在帧中划分视频并再次从分割帧中分割视频?whatsapp messagnes是如何做的?
您可以使用ffmpeg-android剪切/裁剪视频.使用它添加
compile 'com.github.hiteshsondhi88.libffmpeg:FFmpegAndroid:0.2.5'
Run Code Online (Sandbox Code Playgroud)
依赖.
对于剪切视频,请运行此命令
execFFmpegCommand("-i " + path.getAbsolutePath() + " -ss " + startMs / 1000 + " -to " + endMs / 1000 + " -strict -2 -async 1 " + dest.getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
path原始视频的路径在哪里
.
startMs 是您要剪切的视频格式的初始时间(裁剪视频的开始时间)
endMs 是您要剪切的视频时间(裁剪视频的结束时间)
dest 是您要保存剪切/裁剪视频的路径
如果您的文件名或foldername包含空格,请使用String formatter来处理空格.
private void execFFmpegCommand(final String command) {
try {
ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {
@Override
public void onFailure(String s) {
Log.e("FFMPEG", "FAILED with output : " + s);
}
@Override
public void onSuccess(String s) {
Log.e("FFMPEG", "SUCCESS with output : " + s);
}
@Override
public void onProgress(String s) {
Log.e("FFMPEG", "Started command : ffmpeg " + command);
Log.e("FFMPEG", "progress : " + s);
}
@Override
public void onStart() {
Log.e("FFMPEG", "Started command : ffmpeg " + command);
}
@Override
public void onFinish() {
Log.e("FFMPEG", "Finished command : ffmpeg " + command);
}
});
} catch (FFmpegCommandAlreadyRunningException e) {
// do nothing for now
}
}
Run Code Online (Sandbox Code Playgroud)
在剪切视频之前,你必须通过调用下面的方法来加载FFMPEG onCreate()或者onCreateView().最好在AsyncTask中执行这个方法.
private void loadFFMpegBinary() {
try {
if (ffmpeg == null) {
ffmpeg = FFmpeg.getInstance(getActivity());
}
ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
@Override
public void onFailure() {
}
@Override
public void onSuccess() {
Log.e("FFMPEG", "ffmpeg : correct Loaded");
}
});
} catch (FFmpegNotSupportedException e) {
} catch (Exception e) {
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以制作RangeSeekbar,以允许用户使用anothem/android-range-seek-bar库从原始视频中选择裁剪视频的时间范围.
UPDATE
下面链接包含我在博客上写的ffmpeg视频编辑器教程,其中包含如何使用FFmpeg库剪切视频 -
https://androidlearnersite.wordpress.com/2017/03/17/ffmpeg-video-editor/
以下链接包含该教程的完整源代码 -
https://github.com/bhuvnesh123/FFmpeg-Video-Editor-Android
下面是在该turorial中创建的应用程序的playstore链接 -
https://play.google.com/store/apps/details?id=videoeditor.bhuvnesh.com.ffmpegvideoeditor
https://lists.ffmpeg.org/pipermail/libav-user/2012-May/001964.html
阅读“ffmpeg.c”中静态变量的问题...
我敢打赌你也有同样的问题,需要做一些事情(3个替代选择)来重置或GC那些变量:
获取加载 lib 的 java 类加载器并对其进行 GC
在c层中执行OP在上面链接中所做的操作
编写第二个共享库,在每个调用周期期间在第一个库上使用“dlsym”和“dlclose”
github ,请参阅此处的“自述文件”
| 归档时间: |
|
| 查看次数: |
11394 次 |
| 最近记录: |