ユーザーがアプリケーションを介してそのビデオを再生しているときに、ビデオの一部を抽出したいと考えています。ビデオの再生中に、ユーザーはビデオをカットする開始時間と終了時間を指定できます。期間に基づいてビデオをカットしてSDカードに保存する方法はありますか?
5 に答える
ffmpeg をコンパイルしてプロジェクトに統合してみてください。私は ffmpeg を使用してビデオとオーディオをカットしました。非常に高速で、記録は必要ありません。Androidでの経験はありませんが、うまくいくはずです。ここに、Android での ffmpeg に関する公式 wiki ページがあります。
https://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20compile%20FFmpeg%20for%20Android
Android は、動画のトリミングに Mp4Parser/isoParser を使用します。ここでは、動画をトリミングする例を示しますapp/TrimVideo.javaであり、前述のように、「git clone https://android.googlesource.com/platform/external/mp4parser」から取得できる isoParser を使用しています。
これは純粋に Java で記述されたMP4Parserを使用して実行できると思います。これはAndroid で使用できます。Javaでビデオを短縮する例もここにあります By Sebastian-annies
@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ホルダーです
これら 2 つのメソッドを呼び出すと、録画が開始および停止され、ファイルが /sdcard/recordvideooutput.3gpp に書き込まれます。
recorder.start();
recorder.stop();
開発者ガイドを使用http://developer.android.com/reference/android/media/MediaRecorder.html