Skip to content

Bug Timestamps must be monotonically increasing: 0, 0 #214

@xunjianma

Description

@xunjianma

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)
        }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions