当用户通过我的应用程序播放视频时,我希望能够提取其中一部分。在播放视频时,用户可以指定开始和结束时间来剪切视频。那么,有没有办法根据持续时间来剪切视频并保存到SD卡中?
当用户通过我的应用程序播放视频时,我希望能够提取其中一部分。在播放视频时,用户可以指定开始和结束时间来剪切视频。那么,有没有办法根据持续时间来剪切视频并保存到SD卡中?
我认为可以使用MP4Parser来完成,它是纯Java编写的,可与Android一起使用,而且在这里有一个在Java中缩短视频的示例(作者为Sebastian-annies)。
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”获取它。
你可以尝试将ffmpeg编译并集成到你的项目中。我使用ffmpeg来剪辑视频和音频,速度非常快,不需要录制。我在Android上没有这方面的经验,但应该可以工作。这里是关于Android上ffmpeg的官方维基页面:
https://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20compile%20FFmpeg%20for%20Android
@Ravi --- 视频可以在Android内置的Videoview或Surfaceview类中播放。在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();
YOUR mholder 是 SurfaceHolder 持有者,用于附加表面视图
调用这两个方法将开始和停止录制,并将文件写入 /sdcard/recordvideooutput.3gpp
recorder.start();
recorder.stop();
请使用开发者指南http://developer.android.com/reference/android/media/MediaRecorder.html