Skip to content

Commit db89fc6

Browse files
committed
chore: clean code
1 parent c9f6209 commit db89fc6

6 files changed

Lines changed: 59 additions & 57 deletions

File tree

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ dependencies {
3737
implementation "androidx.appcompat:appcompat:1.0.0-beta01"
3838
implementation "androidx.constraintlayout:constraintlayout:1.1.2"
3939
implementation "io.reactivex.rxjava2:rxjava:2.2.0"
40+
implementation "io.reactivex.rxjava2:rxandroid:2.0.2"
4041

4142
implementation project(":library")
4243
}

app/src/main/java/cn/gavinliu/ffmpegbox/MainActivity.kt

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import androidx.appcompat.app.AppCompatActivity
44
import android.os.Bundle
55
import android.util.Log
66
import cn.quickits.ffmpeg.box.FFmpegBox
7+
import cn.quickits.ffmpeg.box.data.Success
8+
import cn.quickits.ffmpeg.box.util.FileUtils
9+
import io.reactivex.android.schedulers.AndroidSchedulers
710
import kotlinx.android.synthetic.main.activity_main.*
811

912
class MainActivity : AppCompatActivity() {
@@ -12,14 +15,21 @@ class MainActivity : AppCompatActivity() {
1215
super.onCreate(savedInstanceState)
1316
setContentView(R.layout.activity_main)
1417

15-
load.setOnClickListener {
16-
FFmpegBox.get().loadBinary()
17-
}
18-
1918
execute.setOnClickListener {
20-
FFmpegBox.get().version().subscribe { version ->
21-
Log.d("MainActivity", version)
22-
}
19+
FFmpegBox.get().version()
20+
.observeOn(AndroidSchedulers.mainThread())
21+
.subscribe { version ->
22+
msg.text = version
23+
}
24+
25+
// FFmpegBox.get().exec(arrayOf(FileUtils.getFFmpegFilePath(),
26+
// "-i", "/sdcard/screenshots.mp4",
27+
// "-vcodec", "copy",
28+
// "/sdcard/screenshots.avi"
29+
// )).subscribe { status ->
30+
// Log.d("MainActivity", "${status.msg} ${status is Success}")
31+
// }
32+
2333
}
2434
}
2535
}

app/src/main/res/layout/activity_main.xml

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,24 @@
66
android:layout_height="match_parent"
77
tools:context=".MainActivity">
88

9-
<TextView
10-
android:id="@+id/load"
11-
android:layout_width="wrap_content"
12-
android:layout_height="wrap_content"
13-
android:text="Load Binary"
14-
app:layout_constraintBottom_toBottomOf="parent"
15-
app:layout_constraintLeft_toLeftOf="parent"
16-
app:layout_constraintRight_toRightOf="parent"
17-
app:layout_constraintTop_toTopOf="parent" />
18-
19-
<TextView
9+
<Button
2010
android:id="@+id/execute"
2111
android:layout_width="wrap_content"
2212
android:layout_height="wrap_content"
2313
android:layout_marginTop="8dp"
24-
android:text="execute"
14+
android:text="Version" />
15+
16+
<ScrollView
17+
android:layout_width="match_parent"
18+
android:layout_height="0dp"
2519
app:layout_constraintBottom_toBottomOf="parent"
26-
app:layout_constraintLeft_toLeftOf="parent"
27-
app:layout_constraintRight_toRightOf="parent"
28-
app:layout_constraintTop_toBottomOf="@+id/load" />
20+
app:layout_constraintTop_toBottomOf="@+id/execute">
21+
22+
<TextView
23+
android:id="@+id/msg"
24+
android:layout_width="match_parent"
25+
android:layout_height="wrap_content" />
26+
27+
</ScrollView>
2928

3029
</androidx.constraintlayout.widget.ConstraintLayout>

library/src/main/java/cn/quickits/ffmpeg/box/FFmpegBinaryLoader.kt

Lines changed: 0 additions & 28 deletions
This file was deleted.

library/src/main/java/cn/quickits/ffmpeg/box/FFmpegBox.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,14 @@ import io.reactivex.Flowable
1010

1111
class FFmpegBox {
1212

13-
fun loadBinary() {
14-
FFmpegBinaryLoader().execute()
13+
fun exec(cmd: Array<String>): Flowable<Status> {
14+
var newCmd = arrayOf(FileUtils.getFFmpegFilePath())
15+
newCmd = newCmd.plus(cmd)
16+
return FFmpegBoxSpec.instance().commanderBox.exec(newCmd)
1517
}
1618

17-
fun exec(cmd: Array<String>): Flowable<Status> = FFmpegBoxSpec.instance().commanderBox.exec(cmd)
18-
1919
fun version(): Flowable<String> {
20-
val cmd = arrayOf(FileUtils.getFFmpegFilePath(), "-version")
21-
return exec(cmd).filter { it is Success }.map { it.msg }
20+
return exec(arrayOf("-version")).filter { it is Success }.map { it.msg }
2221
}
2322

2423
companion object {

library/src/main/java/cn/quickits/ffmpeg/box/data/Commander.kt

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.quickits.ffmpeg.box.data
22

3+
import cn.quickits.ffmpeg.box.util.FileUtils
34
import cn.quickits.ffmpeg.box.util.ProcessUtils
45
import io.reactivex.Flowable
56
import io.reactivex.disposables.Disposable
@@ -20,6 +21,12 @@ class Commander(val cmd: Array<String>) {
2021
fun exec() {
2122
if (disposable == null) {
2223
disposable = Flowable.just(cmd)
24+
.map {
25+
if (!loadBinary()) {
26+
throw RuntimeException()
27+
}
28+
it
29+
}
2330
.map { Runtime.getRuntime().exec(it) }
2431
.map { process ->
2532
checkAndUpdate(process)
@@ -37,7 +44,7 @@ class Commander(val cmd: Array<String>) {
3744

3845
}
3946
.doFinally {
40-
47+
disposable = null
4148
}
4249
.subscribe({ emitStatus(it) }, {
4350
emitStatus(Failed(it.message ?: ""))
@@ -71,4 +78,18 @@ class Commander(val cmd: Array<String>) {
7178
}
7279
}
7380

81+
private fun loadBinary(): Boolean {
82+
val ffmpegFile = FileUtils.getFFmpegFile()
83+
84+
if (!ffmpegFile.exists()) {
85+
if (FileUtils.copyBinaryFromAssetsToData()) {
86+
if (ffmpegFile.canExecute() || ffmpegFile.setExecutable(true)) {
87+
return true
88+
}
89+
}
90+
}
91+
92+
return ffmpegFile.exists() && ffmpegFile.canExecute()
93+
}
94+
7495
}

0 commit comments

Comments
 (0)