Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

按照AndroidDemo中给出的MediaCodec导出pag为mp4,但是mp4时和pag的时长对不上 #2142

Closed
phcbest opened this issue Feb 14, 2024 · 2 comments
Assignees

Comments

@phcbest
Copy link

phcbest commented Feb 14, 2024

【版本信息】

4.0.5.10

【平台信息】

Android 原生

【预期的表现】

能够生成正常的时长mp4

【实际的情况】

pag文件时长为5s,但是导出仅为2s,并且帧率也和MediaFormat指定的对不上

HCVideoStudio_2024_02_14_19_45_57_dd57f4b4-d127-4716-892f-90c54cefe955_1920_1080.mp4

【Demo及附件】

    suspend fun doVideoTempPagExport(videoTempExportBean: VideoTempExportBean) {
        val mimeType = "video/avc"
        val frameRate = 60
        val iframeInterval = 10
        val bitRate = 100000000

        //===================准备解码器===================
        val pagFile = PAGFile.Load(VideoStudioApp.context.assets, videoTempExportBean.pagFilePath)
        val intList = videoTempExportBean.pagMediaList.keys.toList().sortedBy { it }
        intList.forEach {
            val path = videoTempExportBean.pagMediaList[it]
            pagFile.replaceImage(it, PAGImage.FromPath(path))
        }
        //准备导出视频
        val mBufferInfo = MediaCodec.BufferInfo()
        var width = pagFile.width()
        var height = pagFile.height()
        if (width % 2 == 1) width--
        if (height % 2 == 1) height--
        val format = MediaFormat.createVideoFormat(mimeType, width, height)
        format.setInteger(
            MediaFormat.KEY_COLOR_FORMAT,
            MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface
        )
        format.setInteger(MediaFormat.KEY_BIT_RATE, bitRate)
        format.setInteger(MediaFormat.KEY_FRAME_RATE, frameRate)
        format.setLong(MediaFormat.KEY_DURATION, pagFile.duration())
        format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, iframeInterval)
        val mEncoder: MediaCodec
        try {
            mEncoder = MediaCodec.createEncoderByType(mimeType)
        } catch (e: IOException) {
            LogUtils.e(e)
            return
        }
        mEncoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)
        val pagPlayer = PAGPlayer()
        val pagSurface = PAGSurface.FromSurface(mEncoder.createInputSurface())
        pagPlayer.surface = pagSurface
        pagPlayer.composition = pagFile
        pagPlayer.progress = 0.0
        mEncoder.start()
        val outPutFile = File(
            PathConstant.videoTempDataPath,
            "${VideoStudioApp.context.getString(R.string.app_name)}_${
                System.currentTimeMillis().toStringTime()
            }_${UUID.randomUUID()}_" + width + "_" + height + ".mp4"
        ).apply {
            parentFile?.mkdirs()
            if (!exists()) createNewFile()
        }
        val outputPath: String = outPutFile.toString()
        LogUtils.d("TempEdit video output file is $outputPath")
        val mMuxer = try {
            MediaMuxer(outputPath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4)
        } catch (ioe: IOException) {
            LogUtils.e(ioe)
            return
        }
        var mTrackIndex = -1
        var mMuxerStarted = false

        //===================解码器初始化完毕,开始编码===================
        fun drainEncoder(endOfStream: Boolean) {
            val timeoutUsec = (10000 * 60 / frameRate)
            Log.d(TAG, "drainEncoder($endOfStream)")
            if (endOfStream) {
                Log.d(TAG, "sending EOS to encoder")
                mEncoder.signalEndOfInputStream()
            }
            var encoderOutputBuffers = mEncoder.outputBuffers
            while (true) {
                val encoderStatus = mEncoder.dequeueOutputBuffer(mBufferInfo, timeoutUsec.toLong())
                if (encoderStatus == MediaCodec.INFO_TRY_AGAIN_LATER) {
                    // 还没有可用的输出
                    if (!endOfStream) {
                        break
                    } else {
                        Log.d(TAG, "no output available, spinning to await EOS")
                    }
                } else if (encoderStatus == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
                    Log.i(TAG, "drainEncoder: INFO_OUTPUT_BUFFERS_CHANGED")
                    // 编码器不需要
                    encoderOutputBuffers = mEncoder.outputBuffers
                } else if (encoderStatus == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
                    // 应该在接收缓冲区之前发生,并且应该只发生一次
                    if (mMuxerStarted) {
                        throw RuntimeException("format changed twice")
                    }
                    val newFormat = mEncoder.outputFormat
                    Log.d(TAG, "encoder output format changed: $newFormat")

                    // 现在我们有了 Magic Goodies,启动混合器
                    mTrackIndex = mMuxer.addTrack(newFormat)
                    mMuxer.start()
                    mMuxerStarted = true
                } else if (encoderStatus < 0) {
                    Log.w(TAG, "unexpected result from encoder.dequeueOutputBuffer: $encoderStatus")
                    // 让我们忽略它
                } else {
                    val encodedData = encoderOutputBuffers[encoderStatus]
                        ?: throw RuntimeException(
                            ("encoderOutputBuffer $encoderStatus was null")
                        )
                    if ((mBufferInfo.flags and MediaCodec.BUFFER_FLAG_CODEC_CONFIG) != 0) {
                        // 当我们得到时,编解码器配置数据被拉出并馈送到复用器
                        // INFO_OUTPUT_FORMAT_CHANGED 状态。忽略它。
                        Log.d(TAG, "ignoring BUFFER_FLAG_CODEC_CONFIG")
                        mBufferInfo.size = 0
                    }
                    if (mBufferInfo.size != 0) {
                        if (!mMuxerStarted) {
                            throw RuntimeException("muxer hasn't started")
                        }
                        // 调整 ByteBuffer 值以匹配 BufferInfo(不需要?)
                        encodedData.position(mBufferInfo.offset)
                        encodedData.limit(mBufferInfo.offset + mBufferInfo.size)
                        mMuxer.writeSampleData(mTrackIndex, encodedData, mBufferInfo)
                        Log.d(TAG, "sent " + mBufferInfo.size + " bytes to muxer")
                    }
                    mEncoder.releaseOutputBuffer(encoderStatus, false)
                    if ((mBufferInfo.flags and MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
                        if (!endOfStream) {
                            Log.w(TAG, "reached end of stream unexpectedly")
                        } else {
                            Log.d(TAG, "end of stream reached")
                        }
                        break // out of while
                    }
                }
            }
        }

        val totalFrames = (pagFile.duration() * pagFile.frameRate() / 1000000).toInt()
        for (i in 0 until totalFrames) {
            drainEncoder(false)
            val progress: Float = i % totalFrames * 1.0f / totalFrames
            pagPlayer.progress = progress.toDouble()
            pagPlayer.flush()
            Log.d(TAG, "sending frame $i to encoder")
        }
        drainEncoder(true)

        //===================编码完成,执行资源释放工作===================
        mEncoder.stop()
        mEncoder.release()
        mMuxer.stop()
    }
@Parcelize
data class VideoTempExportBean(
    val pagFilePath: String = "",
    val pagMediaList: Map<Int, String> = mapOf()
) : Parcelable

gradient_h.zip

@phcbest phcbest closed this as completed Feb 14, 2024
@phcbest phcbest changed the title 按照AndroidDemo中给出的MediaCode导出pag为mp4 按照AndroidDemo中给出的MediaCode导出pag为mp4,但是mp4时和pag的时长对不上 Feb 14, 2024
@phcbest phcbest reopened this Feb 14, 2024
@phcbest
Copy link
Author

phcbest commented Feb 14, 2024

send to muxer 在 170多帧以后就不执行了,以下是日志
20:11:45.636 MPEG4Writer D PreAllocation enabled
20:11:45.637 VideoExportViewModel D drainEncoder(false)
20:11:45.667 VideoExportViewModel D sending frame 0 to encoder
20:11:45.667 VideoExportViewModel D drainEncoder(false)
20:11:45.670 ACodec D dataspace changed to 0x10c10000 (R:2(Limited), P:3(BT601_6_625), M:3(BT601_6), T:3(SMPTE170M)) (R:2(Limited), S:2(BT601_625), T:3(SMPTE_170M))
20:11:45.678 VideoExportViewModel D sending frame 1 to encoder
20:11:45.678 VideoExportViewModel D drainEncoder(false)
20:11:45.688 VideoExportViewModel D sending frame 2 to encoder
20:11:45.688 VideoExportViewModel D drainEncoder(false)
20:11:45.699 VideoExportViewModel D encoder output format changed: {max-bitrate=100000000, csd-1=java.nio.HeapByteBuffer[pos=0 lim=8 cap=8], color-transfer=3, mime=video/avc, width=1920, bitrate=100000000, color-range=2, frame-rate=60, color-standard=2, height=1080, csd-0=java.nio.HeapByteBuffer[pos=0 lim=22 cap=22]}
20:11:45.699 MPEG4Writer D fpathconf _PC_FILESIZEBITS:64
20:11:45.699 MPEG4Writer D File size limit set to 4503599627370495 bytes implicitly
20:11:45.700 MPEG4Writer D MP4WtrCtrlHlpLooper Started
20:11:45.700 MPEG4Writer I limits: 4503599627370495/0 bytes/us, bit rate: -1 bps and the estimated moov size 3309 bytes
20:11:45.706 VideoExportViewModel D ignoring BUFFER_FLAG_CODEC_CONFIG
20:11:45.708 VideoExportViewModel D sent 153296 bytes to muxer
20:11:45.708 MPEG4Writer I setStartTimestampUs: 1667
20:11:45.708 MPEG4Writer I Earliest track starting time: 1667
20:11:45.716 TrafficStats D tagSocket(137) with statsTag=0xffffffff, statsUid=-1
20:11:45.720 VideoExportViewModel D sending frame 3 to encoder
20:11:45.720 VideoExportViewModel D drainEncoder(false)
20:11:45.731 VideoExportViewModel D sending frame 4 to encoder
20:11:45.731 VideoExportViewModel D drainEncoder(false)
20:11:45.751 VideoExportViewModel D sending frame 5 to encoder
20:11:45.752 VideoExportViewModel D drainEncoder(false)
20:11:45.764 VideoExportViewModel D sending frame 6 to encoder
20:11:45.764 VideoExportViewModel D drainEncoder(false)
20:11:45.778 VideoExportViewModel D sending frame 7 to encoder
20:11:45.778 VideoExportViewModel D drainEncoder(false)
20:11:45.790 VideoExportViewModel D sending frame 8 to encoder
20:11:45.790 VideoExportViewModel D drainEncoder(false)
20:11:45.802 VideoExportViewModel D sending frame 9 to encoder
20:11:45.803 VideoExportViewModel D drainEncoder(false)
20:11:45.813 VideoExportViewModel D sending frame 10 to encoder
20:11:45.813 VideoExportViewModel D drainEncoder(false)
20:11:45.827 VideoExportViewModel D sending frame 11 to encoder
20:11:45.827 VideoExportViewModel D drainEncoder(false)
20:11:45.838 VideoExportViewModel D sending frame 12 to encoder
20:11:45.838 VideoExportViewModel D drainEncoder(false)
20:11:45.850 VideoExportViewModel D sending frame 13 to encoder
20:11:45.850 VideoExportViewModel D drainEncoder(false)
20:11:45.861 VideoExportViewModel D sending frame 14 to encoder
20:11:45.861 VideoExportViewModel D drainEncoder(false)
20:11:45.871 VideoExportViewModel D sending frame 15 to encoder
20:11:45.871 VideoExportViewModel D drainEncoder(false)
20:11:45.882 VideoExportViewModel D sending frame 16 to encoder
20:11:45.882 VideoExportViewModel D drainEncoder(false)
20:11:45.892 VideoExportViewModel D sending frame 17 to encoder
20:11:45.892 VideoExportViewModel D drainEncoder(false)
20:11:45.903 VideoExportViewModel D sending frame 18 to encoder
20:11:45.903 VideoExportViewModel D drainEncoder(false)
20:11:45.913 VideoExportViewModel D sending frame 19 to encoder
20:11:45.913 VideoExportViewModel D drainEncoder(false)
20:11:45.924 VideoExportViewModel D sending frame 20 to encoder
20:11:45.924 VideoExportViewModel D drainEncoder(false)
20:11:45.935 VideoExportViewModel D sending frame 21 to encoder
20:11:45.935 VideoExportViewModel D drainEncoder(false)
20:11:45.945 VideoExportViewModel D sending frame 22 to encoder
20:11:45.945 VideoExportViewModel D drainEncoder(false)
20:11:45.956 VideoExportViewModel D sending frame 23 to encoder
20:11:45.956 VideoExportViewModel D drainEncoder(false)
20:11:45.966 VideoExportViewModel D sending frame 24 to encoder
20:11:45.966 VideoExportViewModel D drainEncoder(false)
20:11:45.977 VideoExportViewModel D sending frame 25 to encoder
20:11:45.977 VideoExportViewModel D drainEncoder(false)
20:11:45.987 VideoExportViewModel D sending frame 26 to encoder
20:11:45.987 VideoExportViewModel D drainEncoder(false)
20:11:45.997 VideoExportViewModel D sending frame 27 to encoder
20:11:45.997 VideoExportViewModel D drainEncoder(false)
20:11:46.008 VideoExportViewModel D sending frame 28 to encoder
20:11:46.008 VideoExportViewModel D drainEncoder(false)
20:11:46.018 VideoExportViewModel D sending frame 29 to encoder
20:11:46.018 VideoExportViewModel D drainEncoder(false)
20:11:46.028 VideoExportViewModel D sending frame 30 to encoder
20:11:46.028 VideoExportViewModel D drainEncoder(false)
20:11:46.039 VideoExportViewModel D sending frame 31 to encoder
20:11:46.039 VideoExportViewModel D drainEncoder(false)
20:11:46.049 VideoExportViewModel D sending frame 32 to encoder
20:11:46.049 VideoExportViewModel D drainEncoder(false)
20:11:46.060 VideoExportViewModel D sending frame 33 to encoder
20:11:46.060 VideoExportViewModel D drainEncoder(false)
20:11:46.070 VideoExportViewModel D sending frame 34 to encoder
20:11:46.070 VideoExportViewModel D drainEncoder(false)
20:11:46.081 VideoExportViewModel D sending frame 35 to encoder
20:11:46.081 VideoExportViewModel D drainEncoder(false)
20:11:46.091 VideoExportViewModel D sending frame 36 to encoder
20:11:46.091 VideoExportViewModel D drainEncoder(false)
20:11:46.102 VideoExportViewModel D sending frame 37 to encoder
20:11:46.102 VideoExportViewModel D drainEncoder(false)
20:11:46.112 VideoExportViewModel D sending frame 38 to encoder
20:11:46.112 VideoExportViewModel D drainEncoder(false)
20:11:46.122 VideoExportViewModel D sending frame 39 to encoder
20:11:46.123 VideoExportViewModel D drainEncoder(false)
20:11:46.133 VideoExportViewModel D sending frame 40 to encoder
20:11:46.133 VideoExportViewModel D drainEncoder(false)
20:11:46.143 VideoExportViewModel D sending frame 41 to encoder
20:11:46.143 VideoExportViewModel D drainEncoder(false)
20:11:46.154 VideoExportViewModel D sending frame 42 to encoder
20:11:46.154 VideoExportViewModel D drainEncoder(false)
20:11:46.165 VideoExportViewModel D sending frame 43 to encoder
20:11:46.165 VideoExportViewModel D drainEncoder(false)
20:11:46.175 VideoExportViewModel D sending frame 44 to encoder
20:11:46.175 VideoExportViewModel D drainEncoder(false)
20:11:46.186 VideoExportViewModel D sending frame 45 to encoder
20:11:46.186 VideoExportViewModel D drainEncoder(false)
20:11:46.197 VideoExportViewModel D sending frame 46 to encoder
20:11:46.197 VideoExportViewModel D drainEncoder(false)
20:11:46.207 VideoExportViewModel D sending frame 47 to encoder
20:11:46.207 VideoExportViewModel D drainEncoder(false)
20:11:46.218 VideoExportViewModel D sending frame 48 to encoder
20:11:46.218 VideoExportViewModel D drainEncoder(false)
20:11:46.228 VideoExportViewModel D sending frame 49 to encoder
20:11:46.228 VideoExportViewModel D drainEncoder(false)
20:11:46.239 VideoExportViewModel D sending frame 50 to encoder
20:11:46.239 VideoExportViewModel D drainEncoder(false)
20:11:46.266 VideoExportViewModel D sending frame 51 to encoder
20:11:46.266 VideoExportViewModel D drainEncoder(false)
20:11:46.274 VideoExportViewModel D sent 11712 bytes to muxer
20:11:46.285 VideoExportViewModel D sending frame 52 to encoder
20:11:46.285 VideoExportViewModel D drainEncoder(false)
20:11:46.298 VideoExportViewModel D sending frame 53 to encoder
20:11:46.298 VideoExportViewModel D drainEncoder(false)
20:11:46.307 VideoExportViewModel D sent 161568 bytes to muxer
20:11:46.320 VideoExportViewModel D sending frame 54 to encoder
20:11:46.320 VideoExportViewModel D drainEncoder(false)
20:11:46.330 VideoExportViewModel D sent 270256 bytes to muxer
20:11:46.341 VideoExportViewModel D sending frame 55 to encoder
20:11:46.341 VideoExportViewModel D drainEncoder(false)
20:11:46.354 VideoExportViewModel D sending frame 56 to encoder
20:11:46.354 VideoExportViewModel D drainEncoder(false)
20:11:46.364 VideoExportViewModel D sent 316864 bytes to muxer
20:11:46.377 VideoExportViewModel D sending frame 57 to encoder
20:11:46.377 VideoExportViewModel D drainEncoder(false)
20:11:46.385 VideoExportViewModel D sent 199040 bytes to muxer
20:11:46.396 VideoExportViewModel D sending frame 58 to encoder
20:11:46.396 VideoExportViewModel D drainEncoder(false)
20:11:46.407 VideoExportViewModel D sending frame 59 to encoder
20:11:46.407 VideoExportViewModel D drainEncoder(false)
20:11:46.417 VideoExportViewModel D sending frame 60 to encoder
20:11:46.417 VideoExportViewModel D drainEncoder(false)
20:11:46.428 VideoExportViewModel D sending frame 61 to encoder
20:11:46.428 VideoExportViewModel D drainEncoder(false)
20:11:46.438 VideoExportViewModel D sending frame 62 to encoder
20:11:46.438 VideoExportViewModel D drainEncoder(false)
20:11:46.449 VideoExportViewModel D sending frame 63 to encoder
20:11:46.449 VideoExportViewModel D drainEncoder(false)
20:11:46.459 VideoExportViewModel D sending frame 64 to encoder
20:11:46.460 VideoExportViewModel D drainEncoder(false)
20:11:46.470 VideoExportViewModel D sending frame 65 to encoder
20:11:46.470 VideoExportViewModel D drainEncoder(false)
20:11:46.481 VideoExportViewModel D sending frame 66 to encoder
20:11:46.481 VideoExportViewModel D drainEncoder(false)
20:11:46.491 VideoExportViewModel D sending frame 67 to encoder
20:11:46.491 VideoExportViewModel D drainEncoder(false)
20:11:46.502 VideoExportViewModel D sending frame 68 to encoder
20:11:46.502 VideoExportViewModel D drainEncoder(false)
20:11:46.512 VideoExportViewModel D sending frame 69 to encoder
20:11:46.512 VideoExportViewModel D drainEncoder(false)
20:11:46.523 VideoExportViewModel D sending frame 70 to encoder
20:11:46.523 VideoExportViewModel D drainEncoder(false)
20:11:46.533 VideoExportViewModel D sending frame 71 to encoder
20:11:46.534 VideoExportViewModel D drainEncoder(false)
20:11:46.544 VideoExportViewModel D sending frame 72 to encoder
20:11:46.544 VideoExportViewModel D drainEncoder(false)
20:11:46.555 VideoExportViewModel D sending frame 73 to encoder
20:11:46.555 VideoExportViewModel D drainEncoder(false)
20:11:46.565 VideoExportViewModel D sending frame 74 to encoder
20:11:46.566 VideoExportViewModel D drainEncoder(false)
20:11:46.576 VideoExportViewModel D sending frame 75 to encoder
20:11:46.576 VideoExportViewModel D drainEncoder(false)
20:11:46.587 VideoExportViewModel D sending frame 76 to encoder
20:11:46.587 VideoExportViewModel D drainEncoder(false)
20:11:46.597 VideoExportViewModel D sending frame 77 to encoder
20:11:46.597 VideoExportViewModel D drainEncoder(false)
20:11:46.608 VideoExportViewModel D sending frame 78 to encoder
20:11:46.608 VideoExportViewModel D drainEncoder(false)
20:11:46.619 VideoExportViewModel D sending frame 79 to encoder
20:11:46.619 VideoExportViewModel D drainEncoder(false)
20:11:46.629 VideoExportViewModel D sending frame 80 to encoder
20:11:46.629 VideoExportViewModel D drainEncoder(false)
20:11:46.640 VideoExportViewModel D sending frame 81 to encoder
20:11:46.640 VideoExportViewModel D drainEncoder(false)
20:11:46.650 VideoExportViewModel D sending frame 82 to encoder
20:11:46.651 VideoExportViewModel D drainEncoder(false)
20:11:46.661 VideoExportViewModel D sending frame 83 to encoder
20:11:46.661 VideoExportViewModel D drainEncoder(false)
20:11:46.672 VideoExportViewModel D sending frame 84 to encoder
20:11:46.672 VideoExportViewModel D drainEncoder(false)
20:11:46.682 VideoExportViewModel D sending frame 85 to encoder
20:11:46.682 VideoExportViewModel D drainEncoder(false)
20:11:46.693 VideoExportViewModel D sending frame 86 to encoder
20:11:46.693 VideoExportViewModel D drainEncoder(false)
20:11:46.704 VideoExportViewModel D sending frame 87 to encoder
20:11:46.704 VideoExportViewModel D drainEncoder(false)
20:11:46.714 VideoExportViewModel D sending frame 88 to encoder
20:11:46.714 VideoExportViewModel D drainEncoder(false)
20:11:46.725 VideoExportViewModel D sending frame 89 to encoder
20:11:46.725 VideoExportViewModel D drainEncoder(false)
20:11:46.735 VideoExportViewModel D sending frame 90 to encoder
20:11:46.735 VideoExportViewModel D drainEncoder(false)
20:11:46.746 VideoExportViewModel D sending frame 91 to encoder
20:11:46.746 VideoExportViewModel D drainEncoder(false)
20:11:46.756 VideoExportViewModel D sending frame 92 to encoder
20:11:46.757 VideoExportViewModel D drainEncoder(false)
20:11:46.767 VideoExportViewModel D sending frame 93 to encoder
20:11:46.767 VideoExportViewModel D drainEncoder(false)
20:11:46.778 VideoExportViewModel D sending frame 94 to encoder
20:11:46.778 VideoExportViewModel D drainEncoder(false)
20:11:46.788 VideoExportViewModel D sending frame 95 to encoder
20:11:46.788 VideoExportViewModel D drainEncoder(false)
20:11:46.799 VideoExportViewModel D sending frame 96 to encoder
20:11:46.799 VideoExportViewModel D drainEncoder(false)
20:11:46.809 VideoExportViewModel D sending frame 97 to encoder
20:11:46.809 VideoExportViewModel D drainEncoder(false)
20:11:46.820 VideoExportViewModel D sending frame 98 to encoder
20:11:46.820 VideoExportViewModel D drainEncoder(false)
20:11:46.831 VideoExportViewModel D sending frame 99 to encoder
20:11:46.831 VideoExportViewModel D drainEncoder(false)
20:11:46.841 VideoExportViewModel D sending frame 100 to encoder
20:11:46.841 VideoExportViewModel D drainEncoder(false)
20:11:46.852 VideoExportViewModel D sending frame 101 to encoder
20:11:46.852 VideoExportViewModel D drainEncoder(false)
20:11:46.872 VideoExportViewModel D sending frame 102 to encoder
20:11:46.872 VideoExportViewModel D drainEncoder(false)
20:11:46.880 VideoExportViewModel D sent 78304 bytes to muxer
20:11:46.890 VideoExportViewModel D sending frame 103 to encoder
20:11:46.891 VideoExportViewModel D drainEncoder(false)
20:11:46.904 VideoExportViewModel D sending frame 104 to encoder
20:11:46.904 VideoExportViewModel D drainEncoder(false)
20:11:46.914 VideoExportViewModel D sent 249232 bytes to muxer
20:11:46.927 VideoExportViewModel D sending frame 105 to encoder
20:11:46.927 VideoExportViewModel D drainEncoder(false)
20:11:46.938 VideoExportViewModel D sent 307824 bytes to muxer
20:11:46.951 VideoExportViewModel D sending frame 106 to encoder
20:11:46.951 VideoExportViewModel D drainEncoder(false)
20:11:46.961 VideoExportViewModel D sent 197104 bytes to muxer
20:11:46.974 VideoExportViewModel D sending frame 107 to encoder
20:11:46.974 VideoExportViewModel D drainEncoder(false)
20:11:46.983 VideoExportViewModel D sent 203440 bytes to muxer
20:11:46.996 VideoExportViewModel D sending frame 108 to encoder
20:11:46.996 VideoExportViewModel D drainEncoder(false)
20:11:47.006 VideoExportViewModel D sent 215248 bytes to muxer
20:11:47.016 VideoExportViewModel D sending frame 109 to encoder
20:11:47.016 VideoExportViewModel D drainEncoder(false)
20:11:47.029 VideoExportViewModel D sending frame 110 to encoder
20:11:47.029 VideoExportViewModel D drainEncoder(false)
20:11:47.037 VideoExportViewModel D sent 149744 bytes to muxer
20:11:47.050 VideoExportViewModel D sending frame 111 to encoder
20:11:47.050 VideoExportViewModel D drainEncoder(false)
20:11:47.059 VideoExportViewModel D sent 149888 bytes to muxer
20:11:47.069 VideoExportViewModel D sending frame 112 to encoder
20:11:47.070 VideoExportViewModel D drainEncoder(false)
20:11:47.080 VideoExportViewModel D sending frame 113 to encoder
20:11:47.080 VideoExportViewModel D drainEncoder(false)
20:11:47.091 VideoExportViewModel D sending frame 114 to encoder
20:11:47.091 VideoExportViewModel D drainEncoder(false)
20:11:47.101 VideoExportViewModel D sending frame 115 to encoder
20:11:47.101 VideoExportViewModel D drainEncoder(false)
20:11:47.112 VideoExportViewModel D sending frame 116 to encoder
20:11:47.112 VideoExportViewModel D drainEncoder(false)
20:11:47.122 VideoExportViewModel D sending frame 117 to encoder
20:11:47.123 VideoExportViewModel D drainEncoder(false)
20:11:47.133 VideoExportViewModel D sending frame 118 to encoder
20:11:47.133 VideoExportViewModel D drainEncoder(false)
20:11:47.144 VideoExportViewModel D sending frame 119 to encoder
20:11:47.144 VideoExportViewModel D drainEncoder(false)
20:11:47.154 VideoExportViewModel D sending frame 120 to encoder
20:11:47.154 VideoExportViewModel D drainEncoder(false)
20:11:47.165 VideoExportViewModel D sending frame 121 to encoder
20:11:47.165 VideoExportViewModel D drainEncoder(false)
20:11:47.176 VideoExportViewModel D sending frame 122 to encoder
20:11:47.176 VideoExportViewModel D drainEncoder(false)
20:11:47.186 VideoExportViewModel D sending frame 123 to encoder
20:11:47.186 VideoExportViewModel D drainEncoder(false)
20:11:47.197 VideoExportViewModel D sending frame 124 to encoder
20:11:47.197 VideoExportViewModel D drainEncoder(false)
20:11:47.211 VideoExportViewModel D sending frame 125 to encoder
20:11:47.211 VideoExportViewModel D drainEncoder(false)
20:11:47.221 VideoExportViewModel D sending frame 126 to encoder
20:11:47.221 VideoExportViewModel D drainEncoder(false)
20:11:47.232 VideoExportViewModel D sending frame 127 to encoder
20:11:47.232 VideoExportViewModel D drainEncoder(false)
20:11:47.242 VideoExportViewModel D sending frame 128 to encoder
20:11:47.242 VideoExportViewModel D drainEncoder(false)
20:11:47.253 VideoExportViewModel D sending frame 129 to encoder
20:11:47.253 VideoExportViewModel D drainEncoder(false)
20:11:47.263 VideoExportViewModel D sending frame 130 to encoder
20:11:47.263 VideoExportViewModel D drainEncoder(false)
20:11:47.274 VideoExportViewModel D sending frame 131 to encoder
20:11:47.274 VideoExportViewModel D drainEncoder(false)
20:11:47.284 VideoExportViewModel D sending frame 132 to encoder
20:11:47.284 VideoExportViewModel D drainEncoder(false)
20:11:47.295 VideoExportViewModel D sending frame 133 to encoder
20:11:47.295 VideoExportViewModel D drainEncoder(false)
20:11:47.305 VideoExportViewModel D sending frame 134 to encoder
20:11:47.305 VideoExportViewModel D drainEncoder(false)
20:11:47.316 VideoExportViewModel D sending frame 135 to encoder
20:11:47.316 VideoExportViewModel D drainEncoder(false)
20:11:47.326 VideoExportViewModel D sending frame 136 to encoder
20:11:47.326 VideoExportViewModel D drainEncoder(false)
20:11:47.337 VideoExportViewModel D sending frame 137 to encoder
20:11:47.337 VideoExportViewModel D drainEncoder(false)
20:11:47.347 VideoExportViewModel D sending frame 138 to encoder
20:11:47.347 VideoExportViewModel D drainEncoder(false)
20:11:47.358 VideoExportViewModel D sending frame 139 to encoder
20:11:47.358 VideoExportViewModel D drainEncoder(false)
20:11:47.368 VideoExportViewModel D sending frame 140 to encoder
20:11:47.368 VideoExportViewModel D drainEncoder(false)
20:11:47.379 VideoExportViewModel D sending frame 141 to encoder
20:11:47.379 VideoExportViewModel D drainEncoder(false)
20:11:47.389 VideoExportViewModel D sending frame 142 to encoder
20:11:47.389 VideoExportViewModel D drainEncoder(false)
20:11:47.400 VideoExportViewModel D sending frame 143 to encoder
20:11:47.400 VideoExportViewModel D drainEncoder(false)
20:11:47.410 VideoExportViewModel D sending frame 144 to encoder
20:11:47.410 VideoExportViewModel D drainEncoder(false)
20:11:47.421 VideoExportViewModel D sending frame 145 to encoder
20:11:47.421 VideoExportViewModel D drainEncoder(false)
20:11:47.431 VideoExportViewModel D sending frame 146 to encoder
20:11:47.432 VideoExportViewModel D drainEncoder(false)
20:11:47.442 VideoExportViewModel D sending frame 147 to encoder
20:11:47.442 VideoExportViewModel D drainEncoder(false)
20:11:47.452 VideoExportViewModel D sending frame 148 to encoder
20:11:47.453 VideoExportViewModel D drainEncoder(false)
20:11:47.463 VideoExportViewModel D sending frame 149 to encoder
20:11:47.463 VideoExportViewModel D drainEncoder(false)
20:11:47.473 VideoExportViewModel D sending frame 150 to encoder
20:11:47.474 VideoExportViewModel D drainEncoder(false)
20:11:47.484 VideoExportViewModel D sending frame 151 to encoder
20:11:47.484 VideoExportViewModel D drainEncoder(false)
20:11:47.495 VideoExportViewModel D sending frame 152 to encoder
20:11:47.495 VideoExportViewModel D drainEncoder(false)
20:11:47.505 VideoExportViewModel D sending frame 153 to encoder
20:11:47.505 VideoExportViewModel D drainEncoder(false)
20:11:47.525 VideoExportViewModel D sending frame 154 to encoder
20:11:47.525 VideoExportViewModel D drainEncoder(false)
20:11:47.533 VideoExportViewModel D sent 66208 bytes to muxer
20:11:47.547 VideoExportViewModel D sending frame 155 to encoder
20:11:47.547 VideoExportViewModel D drainEncoder(false)
20:11:47.557 VideoExportViewModel D sent 233888 bytes to muxer
20:11:47.571 VideoExportViewModel D sending frame 156 to encoder
20:11:47.571 VideoExportViewModel D drainEncoder(false)
20:11:47.583 VideoExportViewModel D sending frame 157 to encoder
20:11:47.584 VideoExportViewModel D drainEncoder(false)
20:11:47.590 VideoExportViewModel D sent 318592 bytes to muxer
20:11:47.599 VideoExportViewModel D sent 134304 bytes to muxer
20:11:47.612 VideoExportViewModel D sending frame 158 to encoder
20:11:47.612 VideoExportViewModel D drainEncoder(false)
20:11:47.625 VideoExportViewModel D sending frame 159 to encoder
20:11:47.625 VideoExportViewModel D drainEncoder(false)
20:11:47.629 VideoExportViewModel D sent 181904 bytes to muxer
20:11:47.642 VideoExportViewModel D sending frame 160 to encoder
20:11:47.642 VideoExportViewModel D drainEncoder(false)
20:11:47.644 VideoExportViewModel D sent 234608 bytes to muxer
20:11:47.657 VideoExportViewModel D sending frame 161 to encoder
20:11:47.657 VideoExportViewModel D drainEncoder(false)
20:11:47.661 VideoExportViewModel D sent 211680 bytes to muxer
20:11:47.674 VideoExportViewModel D sending frame 162 to encoder
20:11:47.674 VideoExportViewModel D drainEncoder(false)
20:11:47.676 VideoExportViewModel D sent 212960 bytes to muxer
20:11:47.687 VideoExportViewModel D sending frame 163 to encoder
20:11:47.687 VideoExportViewModel D drainEncoder(false)
20:11:47.693 VideoExportViewModel D sent 295440 bytes to muxer
20:11:47.706 VideoExportViewModel D sending frame 164 to encoder
20:11:47.706 VideoExportViewModel D drainEncoder(false)
20:11:47.719 VideoExportViewModel D sending frame 165 to encoder
20:11:47.719 VideoExportViewModel D drainEncoder(false)
20:11:47.723 VideoExportViewModel D sent 225776 bytes to muxer
20:11:47.734 VideoExportViewModel D sending frame 166 to encoder
20:11:47.734 VideoExportViewModel D drainEncoder(false)
20:11:47.738 VideoExportViewModel D sent 315040 bytes to muxer
20:11:47.751 VideoExportViewModel D sending frame 167 to encoder
20:11:47.751 VideoExportViewModel D drainEncoder(false)
20:11:47.763 VideoExportViewModel D sending frame 168 to encoder
20:11:47.763 VideoExportViewModel D drainEncoder(false)
20:11:47.768 VideoExportViewModel D sent 238064 bytes to muxer
20:11:47.778 VideoExportViewModel D sending frame 169 to encoder
20:11:47.778 VideoExportViewModel D drainEncoder(false)
20:11:47.781 VideoExportViewModel D sent 294912 bytes to muxer
20:11:47.792 VideoExportViewModel D sending frame 170 to encoder
20:11:47.792 VideoExportViewModel D drainEncoder(false)
20:11:47.802 VideoExportViewModel D sending frame 171 to encoder
20:11:47.802 VideoExportViewModel D drainEncoder(false)
20:11:47.813 VideoExportViewModel D sending frame 172 to encoder
20:11:47.813 VideoExportViewModel D drainEncoder(false)
20:11:47.823 VideoExportViewModel D sending frame 173 to encoder
20:11:47.823 VideoExportViewModel D drainEncoder(false)
20:11:47.834 VideoExportViewModel D sending frame 174 to encoder
20:11:47.834 VideoExportViewModel D drainEncoder(false)
20:11:47.844 VideoExportViewModel D sending frame 175 to encoder
20:11:47.844 VideoExportViewModel D drainEncoder(false)
20:11:47.855 VideoExportViewModel D sending frame 176 to encoder
20:11:47.855 VideoExportViewModel D drainEncoder(false)
20:11:47.865 VideoExportViewModel D sending frame 177 to encoder
20:11:47.865 VideoExportViewModel D drainEncoder(false)
20:11:47.876 VideoExportViewModel D sending frame 178 to encoder
20:11:47.876 VideoExportViewModel D drainEncoder(false)
20:11:47.886 VideoExportViewModel D sending frame 179 to encoder
20:11:47.886 VideoExportViewModel D drainEncoder(false)
20:11:47.897 VideoExportViewModel D sending frame 180 to encoder
20:11:47.897 VideoExportViewModel D drainEncoder(false)
20:11:47.907 VideoExportViewModel D sending frame 181 to encoder
20:11:47.907 VideoExportViewModel D drainEncoder(false)
20:11:47.918 VideoExportViewModel D sending frame 182 to encoder
20:11:47.918 VideoExportViewModel D drainEncoder(false)
20:11:47.928 VideoExportViewModel D sending frame 183 to encoder
20:11:47.928 VideoExportViewModel D drainEncoder(false)
20:11:47.939 VideoExportViewModel D sending frame 184 to encoder
20:11:47.939 VideoExportViewModel D drainEncoder(false)
20:11:47.949 VideoExportViewModel D sending frame 185 to encoder
20:11:47.950 VideoExportViewModel D drainEncoder(false)
20:11:47.960 VideoExportViewModel D sending frame 186 to encoder
20:11:47.960 VideoExportViewModel D drainEncoder(false)
20:11:47.971 VideoExportViewModel D sending frame 187 to encoder
20:11:47.971 VideoExportViewModel D drainEncoder(false)
20:11:47.981 VideoExportViewModel D sending frame 188 to encoder
20:11:47.982 VideoExportViewModel D drainEncoder(false)
20:11:47.992 VideoExportViewModel D sending frame 189 to encoder
20:11:47.992 VideoExportViewModel D drainEncoder(false)
20:11:48.003 VideoExportViewModel D sending frame 190 to encoder
20:11:48.003 VideoExportViewModel D drainEncoder(false)
20:11:48.013 VideoExportViewModel D sending frame 191 to encoder
20:11:48.013 VideoExportViewModel D drainEncoder(false)
20:11:48.024 VideoExportViewModel D sending frame 192 to encoder
20:11:48.024 VideoExportViewModel D drainEncoder(false)
20:11:48.034 VideoExportViewModel D sending frame 193 to encoder
20:11:48.034 VideoExportViewModel D drainEncoder(false)
20:11:48.045 VideoExportViewModel D sending frame 194 to encoder
20:11:48.045 VideoExportViewModel D drainEncoder(false)
20:11:48.055 VideoExportViewModel D sending frame 195 to encoder
20:11:48.055 VideoExportViewModel D drainEncoder(false)
20:11:48.066 VideoExportViewModel D sending frame 196 to encoder
20:11:48.066 VideoExportViewModel D drainEncoder(false)
20:11:48.076 VideoExportViewModel D sending frame 197 to encoder
20:11:48.076 VideoExportViewModel D drainEncoder(false)
20:11:48.087 VideoExportViewModel D sending frame 198 to encoder
20:11:48.087 VideoExportViewModel D drainEncoder(false)
20:11:48.097 VideoExportViewModel D sending frame 199 to encoder
20:11:48.097 VideoExportViewModel D drainEncoder(false)
20:11:48.108 VideoExportViewModel D sending frame 200 to encoder
20:11:48.108 VideoExportViewModel D drainEncoder(false)
20:11:48.118 VideoExportViewModel D sending frame 201 to encoder
20:11:48.118 VideoExportViewModel D drainEncoder(false)
20:11:48.129 VideoExportViewModel D sending frame 202 to encoder
20:11:48.129 VideoExportViewModel D drainEncoder(false)
20:11:48.139 VideoExportViewModel D sending frame 203 to encoder
20:11:48.139 VideoExportViewModel D drainEncoder(false)
20:11:48.150 VideoExportViewModel D sending frame 204 to encoder
20:11:48.150 VideoExportViewModel D drainEncoder(false)
20:11:48.160 VideoExportViewModel D sending frame 205 to encoder
20:11:48.161 VideoExportViewModel D drainEncoder(false)
20:11:48.171 VideoExportViewModel D sending frame 206 to encoder
20:11:48.171 VideoExportViewModel D drainEncoder(false)
20:11:48.182 VideoExportViewModel D sending frame 207 to encoder
20:11:48.182 VideoExportViewModel D drainEncoder(false)
20:11:48.192 VideoExportViewModel D sending frame 208 to encoder
20:11:48.192 VideoExportViewModel D drainEncoder(false)
20:11:48.203 VideoExportViewModel D sending frame 209 to encoder
20:11:48.203 VideoExportViewModel D drainEncoder(false)
20:11:48.213 VideoExportViewModel D sending frame 210 to encoder
20:11:48.213 VideoExportViewModel D drainEncoder(false)
20:11:48.224 VideoExportViewModel D sending frame 211 to encoder
20:11:48.224 VideoExportViewModel D drainEncoder(false)
20:11:48.234 VideoExportViewModel D sending frame 212 to encoder
20:11:48.234 VideoExportViewModel D drainEncoder(false)
20:11:48.245 VideoExportViewModel D sending frame 213 to encoder
20:11:48.245 VideoExportViewModel D drainEncoder(false)
20:11:48.255 VideoExportViewModel D sending frame 214 to encoder
20:11:48.256 VideoExportViewModel D drainEncoder(false)
20:11:48.266 VideoExportViewModel D sending frame 215 to encoder
20:11:48.266 VideoExportViewModel D drainEncoder(false)
20:11:48.277 VideoExportViewModel D sending frame 216 to encoder
20:11:48.277 VideoExportViewModel D drainEncoder(false)
20:11:48.287 VideoExportViewModel D sending frame 217 to encoder
20:11:48.287 VideoExportViewModel D drainEncoder(false)
20:11:48.298 VideoExportViewModel D sending frame 218 to encoder
20:11:48.298 VideoExportViewModel D drainEncoder(false)
20:11:48.308 VideoExportViewModel D sending frame 219 to encoder
20:11:48.308 VideoExportViewModel D drainEncoder(false)
20:11:48.319 VideoExportViewModel D sending frame 220 to encoder
20:11:48.319 VideoExportViewModel D drainEncoder(false)
20:11:48.329 VideoExportViewModel D sending frame 221 to encoder
20:11:48.329 VideoExportViewModel D drainEncoder(false)
20:11:48.340 VideoExportViewModel D sending frame 222 to encoder
20:11:48.340 VideoExportViewModel D drainEncoder(false)
20:11:48.350 VideoExportViewModel D sending frame 223 to encoder
20:11:48.351 VideoExportViewModel D drainEncoder(false)
20:11:48.361 VideoExportViewModel D sending frame 224 to encoder
20:11:48.361 VideoExportViewModel D drainEncoder(false)
20:11:48.372 VideoExportViewModel D sending frame 225 to encoder
20:11:48.372 VideoExportViewModel D drainEncoder(false)
20:11:48.382 VideoExportViewModel D sending frame 226 to encoder
20:11:48.382 VideoExportViewModel D drainEncoder(false)
20:11:48.393 VideoExportViewModel D sending frame 227 to encoder
20:11:48.393 VideoExportViewModel D drainEncoder(false)
20:11:48.403 VideoExportViewModel D sending frame 228 to encoder
20:11:48.403 VideoExportViewModel D drainEncoder(false)
20:11:48.414 VideoExportViewModel D sending frame 229 to encoder
20:11:48.414 VideoExportViewModel D drainEncoder(false)
20:11:48.424 VideoExportViewModel D sending frame 230 to encoder
20:11:48.424 VideoExportViewModel D drainEncoder(false)
20:11:48.435 VideoExportViewModel D sending frame 231 to encoder
20:11:48.435 VideoExportViewModel D drainEncoder(false)
20:11:48.445 VideoExportViewModel D sending frame 232 to encoder
20:11:48.446 VideoExportViewModel D drainEncoder(false)
20:11:48.456 VideoExportViewModel D sending frame 233 to encoder
20:11:48.456 VideoExportViewModel D drainEncoder(false)
20:11:48.467 VideoExportViewModel D sending frame 234 to encoder
20:11:48.467 VideoExportViewModel D drainEncoder(false)
20:11:48.477 VideoExportViewModel D sending frame 235 to encoder
20:11:48.477 VideoExportViewModel D drainEncoder(false)
20:11:48.488 VideoExportViewModel D sending frame 236 to encoder
20:11:48.488 VideoExportViewModel D drainEncoder(false)
20:11:48.498 VideoExportViewModel D sending frame 237 to encoder
20:11:48.498 VideoExportViewModel D drainEncoder(false)
20:11:48.509 VideoExportViewModel D sending frame 238 to encoder
20:11:48.509 VideoExportViewModel D drainEncoder(false)
20:11:48.519 VideoExportViewModel D sending frame 239 to encoder
20:11:48.519 VideoExportViewModel D drainEncoder(false)
20:11:48.529 VideoExportViewModel D sending frame 240 to encoder
20:11:48.530 VideoExportViewModel D drainEncoder(false)
20:11:48.540 VideoExportViewModel D sending frame 241 to encoder
20:11:48.540 VideoExportViewModel D drainEncoder(false)
20:11:48.551 VideoExportViewModel D sending frame 242 to encoder
20:11:48.551 VideoExportViewModel D drainEncoder(false)
20:11:48.561 VideoExportViewModel D sending frame 243 to encoder
20:11:48.561 VideoExportViewModel D drainEncoder(false)
20:11:48.572 VideoExportViewModel D sending frame 244 to encoder
20:11:48.572 VideoExportViewModel D drainEncoder(false)
20:11:48.582 VideoExportViewModel D sending frame 245 to encoder
20:11:48.582 VideoExportViewModel D drainEncoder(false)
20:11:48.593 VideoExportViewModel D sending frame 246 to encoder
20:11:48.593 VideoExportViewModel D drainEncoder(false)
20:11:48.603 VideoExportViewModel D sending frame 247 to encoder
20:11:48.603 VideoExportViewModel D drainEncoder(false)
20:11:48.614 VideoExportViewModel D sending frame 248 to encoder
20:11:48.614 VideoExportViewModel D drainEncoder(false)
20:11:48.624 VideoExportViewModel D sending frame 249 to encoder
20:11:48.624 VideoExportViewModel D drainEncoder(false)
20:11:48.635 VideoExportViewModel D sending frame 250 to encoder
20:11:48.635 VideoExportViewModel D drainEncoder(false)
20:11:48.645 VideoExportViewModel D sending frame 251 to encoder
20:11:48.645 VideoExportViewModel D drainEncoder(false)
20:11:48.656 VideoExportViewModel D sending frame 252 to encoder
20:11:48.656 VideoExportViewModel D drainEncoder(false)
20:11:48.667 VideoExportViewModel D sending frame 253 to encoder
20:11:48.667 VideoExportViewModel D drainEncoder(false)
20:11:48.677 VideoExportViewModel D sending frame 254 to encoder
20:11:48.678 VideoExportViewModel D drainEncoder(false)
20:11:48.688 VideoExportViewModel D sending frame 255 to encoder
20:11:48.688 VideoExportViewModel D drainEncoder(false)
20:11:48.698 VideoExportViewModel D sending frame 256 to encoder
20:11:48.699 VideoExportViewModel D drainEncoder(false)
20:11:48.709 VideoExportViewModel D sending frame 257 to encoder
20:11:48.709 VideoExportViewModel D drainEncoder(false)
20:11:48.719 VideoExportViewModel D sending frame 258 to encoder
20:11:48.720 VideoExportViewModel D drainEncoder(false)
20:11:48.730 VideoExportViewModel D sending frame 259 to encoder
20:11:48.730 VideoExportViewModel D drainEncoder(false)
20:11:48.741 VideoExportViewModel D sending frame 260 to encoder
20:11:48.741 VideoExportViewModel D drainEncoder(false)
20:11:48.751 VideoExportViewModel D sending frame 261 to encoder
20:11:48.751 VideoExportViewModel D drainEncoder(false)
20:11:48.762 VideoExportViewModel D sending frame 262 to encoder
20:11:48.762 VideoExportViewModel D drainEncoder(false)
20:11:48.772 VideoExportViewModel D sending frame 263 to encoder
20:11:48.772 VideoExportViewModel D drainEncoder(false)
20:11:48.783 VideoExportViewModel D sending frame 264 to encoder
20:11:48.783 VideoExportViewModel D drainEncoder(false)
20:11:48.793 VideoExportViewModel D sending frame 265 to encoder
20:11:48.793 VideoExportViewModel D drainEncoder(false)
20:11:48.804 VideoExportViewModel D sending frame 266 to encoder
20:11:48.804 VideoExportViewModel D drainEncoder(false)
20:11:48.814 VideoExportViewModel D sending frame 267 to encoder
20:11:48.814 VideoExportViewModel D drainEncoder(false)
20:11:48.825 VideoExportViewModel D sending frame 268 to encoder
20:11:48.825 VideoExportViewModel D drainEncoder(false)
20:11:48.835 VideoExportViewModel D sending frame 269 to encoder
20:11:48.836 VideoExportViewModel D drainEncoder(false)
20:11:48.846 VideoExportViewModel D sending frame 270 to encoder
20:11:48.846 VideoExportViewModel D drainEncoder(false)
20:11:48.857 VideoExportViewModel D sending frame 271 to encoder
20:11:48.857 VideoExportViewModel D drainEncoder(false)
20:11:48.867 VideoExportViewModel D sending frame 272 to encoder
20:11:48.867 VideoExportViewModel D drainEncoder(false)
20:11:48.878 VideoExportViewModel D sending frame 273 to encoder
20:11:48.878 VideoExportViewModel D drainEncoder(false)
20:11:48.888 VideoExportViewModel D sending frame 274 to encoder
20:11:48.888 VideoExportViewModel D drainEncoder(false)
20:11:48.899 VideoExportViewModel D sending frame 275 to encoder
20:11:48.899 VideoExportViewModel D drainEncoder(false)
20:11:48.909 VideoExportViewModel D sending frame 276 to encoder
20:11:48.909 VideoExportViewModel D drainEncoder(false)
20:11:48.920 VideoExportViewModel D sending frame 277 to encoder
20:11:48.920 VideoExportViewModel D drainEncoder(false)
20:11:48.930 VideoExportViewModel D sending frame 278 to encoder
20:11:48.931 VideoExportViewModel D drainEncoder(false)
20:11:48.941 VideoExportViewModel D sending frame 279 to encoder
20:11:48.941 VideoExportViewModel D drainEncoder(false)
20:11:48.951 VideoExportViewModel D sending frame 280 to encoder
20:11:48.952 VideoExportViewModel D drainEncoder(false)
20:11:48.962 VideoExportViewModel D sending frame 281 to encoder
20:11:48.962 VideoExportViewModel D drainEncoder(false)
20:11:48.972 VideoExportViewModel D sending frame 282 to encoder
20:11:48.973 VideoExportViewModel D drainEncoder(false)
20:11:48.983 VideoExportViewModel D sending frame 283 to encoder
20:11:48.983 VideoExportViewModel D drainEncoder(false)
20:11:48.993 VideoExportViewModel D sending frame 284 to encoder
20:11:48.994 VideoExportViewModel D drainEncoder(false)
20:11:49.004 VideoExportViewModel D sending frame 285 to encoder
20:11:49.004 VideoExportViewModel D drainEncoder(false)
20:11:49.015 VideoExportViewModel D sending frame 286 to encoder
20:11:49.015 VideoExportViewModel D drainEncoder(false)
20:11:49.025 VideoExportViewModel D sending frame 287 to encoder
20:11:49.025 VideoExportViewModel D drainEncoder(false)
20:11:49.036 VideoExportViewModel D sending frame 288 to encoder
20:11:49.036 VideoExportViewModel D drainEncoder(false)
20:11:49.046 VideoExportViewModel D sending frame 289 to encoder
20:11:49.046 VideoExportViewModel D drainEncoder(false)
20:11:49.057 VideoExportViewModel D sending frame 290 to encoder
20:11:49.057 VideoExportViewModel D drainEncoder(false)
20:11:49.067 VideoExportViewModel D sending frame 291 to encoder
20:11:49.067 VideoExportViewModel D drainEncoder(false)
20:11:49.078 VideoExportViewModel D sending frame 292 to encoder
20:11:49.078 VideoExportViewModel D drainEncoder(false)
20:11:49.088 VideoExportViewModel D sending frame 293 to encoder
20:11:49.089 VideoExportViewModel D drainEncoder(false)
20:11:49.099 VideoExportViewModel D sending frame 294 to encoder
20:11:49.099 VideoExportViewModel D drainEncoder(false)
20:11:49.110 VideoExportViewModel D sending frame 295 to encoder
20:11:49.110 VideoExportViewModel D drainEncoder(false)
20:11:49.120 VideoExportViewModel D sending frame 296 to encoder
20:11:49.120 VideoExportViewModel D drainEncoder(false)
20:11:49.131 VideoExportViewModel D sending frame 297 to encoder
20:11:49.131 VideoExportViewModel D drainEncoder(false)
20:11:49.141 VideoExportViewModel D sending frame 298 to encoder
20:11:49.141 VideoExportViewModel D drainEncoder(false)
20:11:49.152 VideoExportViewModel D sending frame 299 to encoder
20:11:49.152 VideoExportViewModel D drainEncoder(true)
20:11:49.152 VideoExportViewModel D sending EOS to encoder
20:11:49.153 VideoExportViewModel D end of stream reached
20:11:49.159 MediaWriter V Track event err/info msg:101, trackId:1, type:1000,val:-1011
20:11:49.159 MPEG4Writer I Received total/0-length (27/0) buffers and encoded 27 frames. - Video
20:11:49.159 MPEG4Writer D reset()
20:11:49.159 MPEG4Writer D Video track stopping. Stop source
20:11:49.159 MPEG4Writer D Video track source stopping
20:11:49.159 MPEG4Writer D Video track source stopped
20:11:49.159 MPEG4Writer D Video track stopped. Status:0. Stop source
20:11:49.159 MPEG4Writer D 0 chunks are written in the last batch
20:11:49.159 MPEG4Writer D WriterThread stopped. Status:0
20:11:49.159 MPEG4Writer I Adjust the moov start time from 1667 us -> 1667 us
20:11:49.159 MPEG4Writer I MOOV atom was written to the file
20:11:49.159 MPEG4Writer D release()
20:11:49.159 MPEG4Writer D ftruncate mPreAllocateFileEndOffset:5632018 mOffset:1143 mMdatEndOffset:5630245 diff:1773
20:11:49.164 MediaCodec D flushMediametrics
20:11:49.165 MediaCodec D flushMediametrics
20:11:49.165 MediaCodec W no metrics handle found
20:11:49.187 MPEG4Writer D final fsync() takes 27 ms, file size 5630245
20:11:49.187 MPEG4Writer D MP4WtrCtrlHlpLooper stopped
20:11:49.187 MPEG4Writer D Top 5 write durations(microseconds): #1:211 #2:215 #3:221 #4:232 #5:238

@phcbest phcbest changed the title 按照AndroidDemo中给出的MediaCode导出pag为mp4,但是mp4时和pag的时长对不上 按照AndroidDemo中给出的MediaCodec导出pag为mp4,但是mp4时和pag的时长对不上 Feb 14, 2024
@phcbest
Copy link
Author

phcbest commented Feb 17, 2024

已解决,捕获生成帧之后再使用ffmpeg合成视频解决的,算是在我能力范围内找到了个好方案

@phcbest phcbest closed this as completed Feb 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants