当用户通过我的应用程序播放视频时,我想提取视频的一部分。在播放视频时,用户可以指定开始和结束持续时间来剪切视频。那么有什么方法可以根据持续时间剪切视频并保存到 SD 卡?
5 回答
我认为这可以使用MP4Parser来完成,它纯粹是用 java 编写的,并且可以与 android 一起使用,这里还有一个在 java 中做视频缩短的例子 作者Sebastian-annies
您可以尝试将 ffmpeg 编译并集成到您的项目中。我使用 ffmpeg 剪切视频和音频,速度非常快,无需录制。我没有在 android 上做这件事的经验,但它应该可以工作。这里有关于 ffmpeg 在 android 上的官方 wiki 页面:
https://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20compile%20FFmpeg%20for%20Android
使用这个Android-video_trimmer库。它也支持 Android 10
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 ”中获得它
@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