编码后丢弃 MediaCodec 输出

Discard MediaCodec output after encoding

我在 Camera2 应用程序中使用 MediaCodec,我有一个通过 运行 记录一天来测试它的用例。 我想要对视频进行编码,但我希望它在完成后立即被丢弃,这样就不会使用任何存储空间。如果可能的话,最好将 MediaCodec 输出路由到 dev/null。

任何类型的 hack 都可以,只是视频的编码应该继续但不保存。

我找到了解决方案。我们确实可以在 Android.

上重定向到 dev/null
private fun create(): MediaMuxer {
    return  MediaMuxer(openFile("dev/null")!!, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4)
}

private fun openFile(path: String): FileDescriptor? {
    val file = File(path)
    val fos = FileOutputStream(file)
    return fos.fd
}

另一种解决方案是使 muxer null 发生编码而不是保存。 muxer?.start() 如果您想 运行 编码有轨道索引超过最大值问题的几天,此解决方案更好。