使用 MediaRecorder 的 setMaxFileSize 时未触发 MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING

问题描述 投票:0回答:1

MediaRecorder
有一个 API,可让您自动将输出流分成大小相等的文件。

为此你必须:

  1. 在调用
    setMaxFileSize
    之前先调用
    prepare
    ,并设置您希望每个文件设置的最大大小
  2. 使用
    OnInfoListener
    订阅信息通知,并在到达
    setNextOutputFile
    时致电
    MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING

问题是,尽管执行了文档指定的所有操作,但永远不会触发

MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING
,而是稍后触发
MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED
,之后
MediaRecorder
不再将数据输出到任何文件。

android android-mediacodec android-mediarecorder
1个回答
0
投票

不幸的是,答案是 Android 的

MediaRecorder
API for
setMaxFileSize
并未被所有音频编码器(MPEG-4、AAC、AMR)完全实现。

如果我们仔细看看他们的 C++ 实现:

我们可以看到,只有 MPEG-4 的实现会通知

MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING
事件:

notify(MEDIA_RECORDER_EVENT_INFO, MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING, 0);
© www.soinside.com 2019 - 2024. All rights reserved.