-1

私のアプリでは、私の実際の要件は、ビデオ ファイルを記録し、メールを介して別のユーザーと共有することです..しかし、現在、ビデオ ファイルを記録し、そのファイルをメールの友人または誰かと共有することができます.私の共有ファイルは、実際のデバイスで再生されることがあります。実際のデバイスでプレイしない場合もあります。これは、ファイルのダウンロード時にファイル サイズを縮小するために発生します。オーディオとビデオの不適切なエンコード、ファイルの出力形式、またはメールの添付ファイルへの送信の問題の可能性があります...

問題はどこだ?私を助けてください....

記録開始時のコードは次のとおりです。

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setOutputFile("/sdcard/myvideo.3gp");
mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.

ファイルをメールに送信するコードは次のとおりです。

fileshare = new File("/sdcard/myvideo.3gp");
File filelocation = fileshare ;
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("video/3gp");
sharingIntent.putExtra(Intent.EXTRA_EMAIL, "xxxxxxxxx@gmail.com" );
sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+filelocation.getAbsolutePath()));
startActivity(Intent.createChooser(sharingIntent, "Send email"));
4

1 に答える 1

1

アプリでどのように実行しているかはわかりませんが、MediaRecorder がファイルの書き込みを完了するまで待ってから、他の操作を行う必要があります。AsyncTask でファイルのバイト 4 が >0 であるかどうかを確認することでこれを行うことができます。または、信頼性は低くなりますが、何らかの遅延を設定することもできます。

于 2012-11-10T14:36:58.567 に答える