我想在用户通过我的应用程序播放视频时提取视频的某些部分。播放视频时,用户可以指定开始和结束持续时间来剪切视频。那么有什么方法可以根据时长剪切视频并保存到 SD 卡吗?
您可以尝试编译 ffmpeg 并将其集成到您的项目中。我用ffmpeg来剪切视频和音频,速度非常快,不需要录制。我没有在 Android 上执行此操作的经验,但它应该可以工作。这里有关于 android 上 ffmpeg 的官方 wiki 页面:
https://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20compile%20FFmpeg%20for%20Android
Android 使用 Mp4Parser/isoParser 来修剪视频 这是修剪视频的示例 https://android.googlesource.com/platform/packages/apps/Gallery2/+/android-4.4.2_r2/src/com/android/ gallery3d/app/TrimVideo.java 正如前面提到的,他使用 isoParser,你可以从“git clone https://android.googlesource.com/platform/external/mp4parser”获取它
我认为可以使用 MP4Parser 来完成,它纯粹用 java 编写,可以与 android 一起使用,而且 here 是用 java 进行视频缩短的示例 作者 Sebastian-annies
使用这个Android-video_trimmer库。它也支持Android 10
@Ravi --- 视频可以在 videoview 或 surfaceview android 内置类中播放。在 SurfaceView 中,您可以启动一个线程,从您选择的位置使用 MediaRecorder 来录制视频
MediaRecorder recorder = new MediaRecorder();
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
recorder.setOutputFile("/sdcard/recordvideooutput.3gpp");
recorder.setPreviewDisplay(mHolder.getSurface());
recorder.prepare();
您的 mholder 是用于附加表面视图的 SurfaceHolder 支架
调用这两个方法将开始和停止录制,文件将写入/sdcard/recordvideooutput.3gpp
recorder.start();
recorder.stop();
使用开发人员指南 http://developer.android.com/reference/android/media/MediaRecorder.html