-
Notifications
You must be signed in to change notification settings - Fork 172
Description
2025-06-20 18:57:31.815 5838-7118 TranscodeEngine I transcode(): called...
2025-06-20 18:57:31.853 5838-7118 TranscodeEngine I Created Tracks, Segments, Timer...
2025-06-20 18:57:31.856 5838-7118 TranscodeEngine I Set up the DataSink...
2025-06-20 18:57:31.856 5838-7118 TranscodeEngine I transcode(): about to start, durationUs=5994000, audioUs=0, videoUs=5994000
2025-06-20 18:57:31.857 5838-7118 TranscodeEngine W createPipeline(VIDEO, 0, COMPRESSING), format={color-format=2130708361, i-frame-interval=3.0, mime=video/avc, width=720, bitrate=2000000, rotation-degrees=0, frame-rate=30, height=1280}
2025-06-20 18:57:32.138 5838-7118 TranscodeEngine E Unexpected error while transcoding. (Ask Gemini)
java.lang.IllegalStateException: Timestamps must be monotonically increasing: 0, 0
at com.otaliastudios.transcoder.internal.Timer$SegmentInterpolator.interpolate(Timer.kt:103)
at com.otaliastudios.transcoder.internal.codec.DecoderTimer.advance(DecoderTimer.kt:31)
at com.otaliastudios.transcoder.internal.pipeline.PipelineItem.handle(Pipeline.kt:37)
at com.otaliastudios.transcoder.internal.pipeline.Pipeline.execute(Pipeline.kt:84)
at com.otaliastudios.transcoder.internal.Segment.advance(Segment.kt:17)
at com.otaliastudios.transcoder.internal.transcode.DefaultTranscodeEngine.transcode(DefaultTranscodeEngine.kt:115)
at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine$Companion.transcode(TranscodeEngine.kt:48)
at com.otaliastudios.transcoder.internal.transcode.TranscodeEngine.transcode(Unknown Source:2)
at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:102)
at com.otaliastudios.transcoder.Transcoder$1.call(Transcoder.java:99)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:920)
suspendCancellableCoroutine { cont ->
Log.d(TAG, "开始Transcoder转码: $inputPath -> $outputPath")
try {
Transcoder.into(outputPath)
.addDataSource(inputPath)
.setVideoTrackStrategy(
DefaultVideoStrategy.Builder()
.frameRate(30)
.addResizer(ExactResizer(720, 1280))
.bitRate(2_000_000)
.build()
)
.setAudioTrackStrategy(DefaultAudioStrategy.builder().build())
.setListener(object : TranscoderListener {
override fun onTranscodeProgress(progress: Double) {
Log.d(TAG, "Transcoder进度: ${(progress * 100).toInt()}%")
}
override fun onTranscodeCompleted(successCode: Int) {
Log.d(TAG, "Transcoder转码完成,成功代码: $successCode")
cont.resume(true)
}
override fun onTranscodeCanceled() {
Log.w(TAG, "Transcoder转码被取消")
cont.resume(false)
}
override fun onTranscodeFailed(exception: Throwable) {
Log.e(TAG, "Transcoder转码失败: ${exception.message}")
cont.resumeWithException(exception)
}
})
.transcode()
} catch (e: Exception) {
Log.e(TAG, "Transcoder初始化失败: ${e.message}")
cont.resumeWithException(e)
}