多くの検索にもかかわらず、そのオーディオを抽出する前にビデオを撮影するためにどのように、私は別の活動の.WAVとしてのオーディオを抽出する前フィルム映像にできるAndroidのプロトタイプを開発することができていません。アンドロイドは:
私はこれまで、Androidのカメラアプリケーションに依存する簡単な撮影活動を開発しました。私の戦略は、FFMPEGを使用する前に、ビデオのUriをExtraとして次のアクティビティに入れることでしたが、私はUriとFFMPEGの間で移行することはできません。確かに、私はAndroidスタジオ初心者ですから、どのコンセプトを使うのかまだ分かりません。
ここに私のビデオ録画のコードがあります。
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.Toast;
import android.widget.VideoView;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import static java.security.AccessController.getContext;
public class RecordActivity extends Activity{
static final int REQUEST_VIDEO_CAPTURE = 0;
VideoView mVideoView = null;
Uri videoUri = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mVideoView = (VideoView) findViewById(R.id.videoVieww);
setContentView(R.layout.activity_record);
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
Toast.makeText(RecordActivity.this, String.valueOf(Build.VERSION.SDK_INT) , Toast.LENGTH_SHORT).show();
takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);
if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
videoUri = intent.getData();
Intent intentForFilterActivity = new Intent(RecordActivity.this, FilterActivity.class);
intentForFilterActivity.putExtra("VideoToFilter", videoUri.getPath());
startActivity(intentForFilterActivity);
}
}
}
ここでは、音声抽出アクティビティのコードを示します。追加の機能を使用して屋外のノイズをフィルタリングすることを最終目的としているため、「FilterActivity」と呼ばれています。 WritingMindsのFFMPEG実装を使用しています。 https://github.com/WritingMinds/ffmpeg-android-java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.test.ActivityUnitTestCase;
import android.widget.Toast;
import com.github.hiteshsondhi88.libffmpeg.ExecuteBinaryResponseHandler;
import com.github.hiteshsondhi88.libffmpeg.FFmpeg;
import com.github.hiteshsondhi88.libffmpeg.exceptions.FFmpegCommandAlreadyRunningException;
public class FilterActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_filter);
Intent intentVideo = getIntent();
String pathIn = intentVideo.getStringExtra("VideoToFilter");
FFmpeg ffmpeg = FFmpeg.getInstance(FilterActivity.this);
try {
String[] cmdExtract = {"-i " + pathIn + " extracted.wav"};
ffmpeg.execute(cmdExtract, new ExecuteBinaryResponseHandler() {
@Override
public void onStart() {}
@Override
public void onProgress(String message) {}
@Override
public void onFailure(String message) {
Toast.makeText(FilterActivity.this, "Failure !", Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess(String message) {}
@Override
public void onFinish() {}
});
} catch (FFmpegCommandAlreadyRunningException e) {
}
}
}
と私はいつも "失敗!" 取得しますメッセージ。
コードの一部が極端に悪く見える場合があります。これまでに書いたように、私はAndroid Studioの初心者です。
修正がありますか?それとも単なる戦略ですか?
ありがとうございます!