Add camera video input

This commit is contained in:
dece 2020-05-02 01:56:31 +02:00
parent 37d5c191e9
commit 00c95cf270

View file

@ -76,6 +76,7 @@ class MainActivity: AppCompatActivity() {
when (requestCode) { when (requestCode) {
REQ_PICK_IMG, REQ_PICK_VID -> handlePickResult(requestCode, resultCode, data) REQ_PICK_IMG, REQ_PICK_VID -> handlePickResult(requestCode, resultCode, data)
REQ_TAKE_IMG -> handleTakeImageResult(resultCode) REQ_TAKE_IMG -> handleTakeImageResult(resultCode)
REQ_TAKE_VID -> handleTakeVideoResult(resultCode, data)
else -> super.onActivityResult(requestCode, resultCode, data) else -> super.onActivityResult(requestCode, resultCode, data)
} }
} }
@ -155,7 +156,8 @@ class MainActivity: AppCompatActivity() {
startActivityForResult(captureIntent, REQ_TAKE_IMG) startActivityForResult(captureIntent, REQ_TAKE_IMG)
} }
buttonCameraVideo.id -> { buttonCameraVideo.id -> {
val captureIntent = Intent(MediaStore.ACTION_VIDEO_CAPTURE)
startActivityForResult(captureIntent, REQ_TAKE_VID)
} }
} }
} }
@ -187,6 +189,14 @@ class MainActivity: AppCompatActivity() {
processMedia(cameraImagePath, MediaType.IMAGE) processMedia(cameraImagePath, MediaType.IMAGE)
} }
private fun handleTakeVideoResult(resultCode: Int, data: Intent?) {
if (resultCode != Activity.RESULT_OK)
return
data?.data
?.let { processMedia(it, MediaType.VIDEO) }
?: return Unit. also { Log.e(TAG, "No data in intent or invalid URI") }
}
/** Process media at URI, copying to a local cache file for FFmpeg beforehand. */ /** Process media at URI, copying to a local cache file for FFmpeg beforehand. */
private fun processMedia(uri: Uri, type: MediaType) { private fun processMedia(uri: Uri, type: MediaType) {
val uriPath = uri.path val uriPath = uri.path
@ -211,7 +221,15 @@ class MainActivity: AppCompatActivity() {
videoLayout.visibility = View.GONE videoLayout.visibility = View.GONE
Toast.makeText(this, R.string.please_wait, Toast.LENGTH_SHORT).show() Toast.makeText(this, R.string.please_wait, Toast.LENGTH_SHORT).show()
val extension = getFileExtension(path) val extension = getFileExtension(path).let {
if (it.isEmpty())
when (type) {
MediaType.IMAGE -> "jpg"
MediaType.VIDEO -> "mp4"
}
else
it
}
val outputFile1 = File.createTempFile("output1", ".$extension", mediaCacheDir) val outputFile1 = File.createTempFile("output1", ".$extension", mediaCacheDir)
MirrorTask(WeakReference(this), type, 1) MirrorTask(WeakReference(this), type, 1)
.execute(path, outputFile1.canonicalPath, VF1) .execute(path, outputFile1.canonicalPath, VF1)
@ -302,7 +320,15 @@ class MainActivity: AppCompatActivity() {
return return
} }
val extension = getFileExtension(path).let { if (it.isEmpty()) "xxx" else it } val extension = getFileExtension(path).let {
if (it.isEmpty())
when (type) {
MediaType.IMAGE -> "jpg"
MediaType.VIDEO -> "mp4"
}
else
it
}
val outputFile = File(mediaDir.canonicalPath, "${System.currentTimeMillis()}.$extension") val outputFile = File(mediaDir.canonicalPath, "${System.currentTimeMillis()}.$extension")
if (!outputFile.createNewFile()) { if (!outputFile.createNewFile()) {
Log.e(TAG, "Failed to create new file: $outputFile") Log.e(TAG, "Failed to create new file: $outputFile")