You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

E/MediaRecording: 外部存储访问错误

当你在 Android 应用中使用媒体录制功能时,如果遇到了“E/MediaRecording: 外部存储访问错误”错误,这通常表示应用程序无法访问外部存储设备。这可能是由于缺少适当的权限或错误的文件路径引起的。以下是一些可能的解决方法:

  1. 检查权限:在你的 AndroidManifest.xml 文件中确保已经添加了适当的权限声明,以便应用程序可以访问外部存储设备。例如,如果你需要读取外部存储的权限,你可以添加以下权限声明:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  1. 运行时权限请求:如果你的应用程序目标版本是 Android 6.0(API 级别 23)或更高版本,你需要在运行时请求适当的权限。你可以使用运行时权限框架来请求访问外部存储的权限。例如,你可以在用户尝试录制媒体之前检查并请求适当的权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE);
} else {
    // 权限已授予,继续录制媒体
}
  1. 检查文件路径:确保你正在使用正确的文件路径来访问外部存储。你可以使用 Environment.getExternalStorageDirectory() 方法来获取外部存储的路径。例如,如果你想将录制的媒体文件保存在外部存储的根目录下,你可以使用以下代码:
String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/your_file_name.mp4";
  1. 检查外部存储状态:在访问外部存储之前,你可以检查外部存储的状态。使用 Environment.getExternalStorageState() 方法来获取外部存储的状态。例如,你可以在录制媒体之前检查外部存储是否可用:
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
    // 外部存储可用,继续录制媒体
} else {
    // 外部存储不可用,处理错误
}

通过检查权限、请求权限、检查文件路径和检查外部存储状态,你应该能够解决“E/MediaRecording: 外部存储访问错误”的问题。请根据你的具体需求选择适当的解决方法。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

[数据库系统] 业界列式存储浅析

读取时,由于会读取大量的无效的列的数据,且数据量很大,在存储是系统瓶颈的时代无疑是一大灾难,而且会影响内存中cache的使用效率;在计算时,由于行数据在内存中是顺序存储在一起的,所以对 cpu cache 也很不友好。 ... 作用是提供高性能的 inserts和 updates;1. RS: Read-optimized Store,作用是提供针对读优化的高效查询,仅提供固定格式的insert方法;Tuple Mover 负责批量从WS搬运到RS;Query 需要访问WS和RS,然后合并结果;inse...

迁移CentOS/RHEL 7至更小的云盘

ev/ /mnt/dev/```10. 复制文件, 目前只包含了默认目录,如果您还有其他目录请使用相同的命令进行复制即可```bashcp -arf /boot/ /mnt/cp -arf /etc /mnt/cp -arf /home /mnt/cp -arf /media /opt /root ... ev/vdx /mnt1dd if=/dev/vdx of=/mnt1/disk.img```19. 登录[火山引擎访问控制](https://console.volcengine.com/iam/usermanage/)服务生成一对AccessKey和AccessKey Secret20. 安装aws cli访问TOS对象存储...

手把手教你实现一个FLV直播播放器

随着网络与流媒体的飞速发展,直播已经深入到我们每个人的生活中了。但是因为原生的`video` 元素只支持几种固定的格式,在web上实现直播变成了一个困难问题。随着HTML5 提出MSE(Media Source Extensions),让`video`元... //递归读取 readerBuffer(); }).catch(()=>{ console.log('读取失败',err) })}```上节通过*read()* 获取到的数据类型是`ArrayBuffer`,这个类型是js用来存储二进制数据本身的,无...

WebRTC 如何在安卓系统上采集音频数据 | 社区征文

WebRTC 中声明了两种音频采集和播放接口,一种是基于文件的 MediaRecorder 和 MediaPlayer,一种是基于纯音频数据(PCM)的 AudioRecord 和 AudioTrack。但是,在实际应用场景中 WebRTC 仅使用了一种接口方式,使用了同步... 那么现在就可以初始化 WebRTC 音频采集的相关模块了。初始化音频采集模块时,需要指定音频的采样率和声道数,调用的方法是 initRecording()。该方法完成了音频数据内存大小的申请以及 AudioRecord 对象实例的创建,参...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

E/MediaRecording: 外部存储访问错误-优选内容

客户端 SDK
mediaType MixedStreamServerControlConfig.media_type 支持设置合流后整体画布的背景图片 MixedStreamLayoutConfig.setBackgroundImageURL ByteRTCMixedStreamLayoutConfig.backgroundImageUrl ByteRTCMixedStreamLayoutConfig.backgroundImageUrl IMixedStreamConfig.setBackgroundImageURL Electron 新增特性 支持自定义音频、视频采集。参看: 功能简述 Electron 设置向 SDK 输入的视频源 setVideoSourceType 推送外部视频帧...
服务端 OpenAPI
2024-03-11 云端录制更新版本2023-11-012023-06-012022-06-012020-12-01 新增功能 存储方式选择 VOD 时,新增海外存储 Region:ap-southeast-1。 2024-02-27 获取数据指标新增版本2023-11-01 版本特性该版本下接口:当 HTTP 响应状态码 !=200 时,表示调用失败。你可以根据返回结构中 BaseResponse.ResponseMetaData 的 Code 和 Message 字段解析错误原因。 当 HTTP 响应状态码 ==200 时,表示调用成功。 若任务运行中,重复调用开始...
客户端 SDK
'on-screen-attrs-notified'、'on-audio-injection-state-changed'、'on-video-stream-profile-from-index'、'on-sync-pod-room-state' StartErrorCode 中 10009 错误码删除。详细信息,请参考 StartErrorCode。 ... eamType 参数指定拉取音视频流类型,支持启动云手机时默认静音的场景。详细信息,参考 开始播放。 更新云手机画面录屏接口(startRecording),支持指定保存录屏文件在云手机实例或上传录屏到火山引擎对象存储、并支持返...
回调
onPlayStateChangedcpp virtual void bytertc::IKTVPlayerEventHandler::onPlayStateChanged( const char* music_id, PlayState play_state, bytertc::KTVPlayerErrorCode error_code)音乐播放状态改变回调。 传入参数 参数名 类型 说明 music_id const char * 音乐 ID。 play_state PlayState 音乐播放状态,参看 PlayState。 error_code bytertc::KTVPlayerErrorCode 错误码,参看 KTVPlayerErrorCode。 注意 此回调被...

E/MediaRecording: 外部存储访问错误-相关内容

集成准备

也不将下载的视频储存外置存储,则无需申请此权限。视频下载缓存文件夹默认在应用内置存储中,无需申请权限,详见快速开始 - 初始化点播 SDK。 如果您需要申明 WRITE_EXTERNAL_STORAGE 权限,请参考 Android 存储用例和最佳做法。 混淆规则接下来,在 proguard-rules.pro 文件中配置 SDK 混淆规则。 点播模块-keep class com.ss.ttm.** {*;} -keep class com.ss.ttvideoengine.** {*;} -keep class com.ss.mediakit.** {*;} -keep...

回调

传入参数 参数名 类型 说明 effect_id int IAudioEffectPlayer 的 ID。通过 getAudioEffectPlayer 设置。 state PlayerState 混音状态。参考 PlayerState。 error PlayerError 错误码。参考 PlayerError。 IEncr... MediaStreamType type)房间内新增远端摄像头/麦克风采集的媒体流的回调。 传入参数 参数名 类型 说明 uid const char * 远端流发布用户的用户 ID。 type MediaStreamType 远端媒体流的类型,参看 MediaStreamTy...

Android 客户端升级指南

etAudioMixingPlaybackSpeed NA setPlaybackSpeed 设置播放进度回调间隔 setAudioMixingProgressInterval NA setProgressInterval 设置响度 setAudioMixingLoudness NA setLoudness 播放外部音频源 enableAudi... eFrame NA IMediaPlayerAudioFrameObserver onFrame 3.52方法变更变更详情 功能模块 变动前方法 变动后方法 说明 参数变更 引擎管理 feedback 参数数据类型变更 行为变更 高级功能 startAudioRecording 在此...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

API 发布历史

2024 年 03 月发布时间 API 说明 相关文档 2024-03-29 用量查询相关 API 在请求参数中 StartTime 中添加开始时间最早不早于当前时间的 366 天的说明 用量查询 2024-03-28 UpdateMediaInfo 请求参数中 Title 支持的... DescribeVodDomainTrafficData 的请求参数和返回参数 TrafficType 取值新增 ECDN。 查询带宽用量 查询流量用量 DescribeVideoStreamOutData 新增 DescribeVideoStreamOutData API 查询媒资存储流量用量 StartWo...

【C/OC/Java】智能音频K歌解决方案

其中基础类型如bool(对应Java中boolean)和std::string(对应Java中的String)的差异未标出 功能 接口名称 接口参数说明 接口返回值说明 及函数补充说明 初始化 C++/Java: initOC:initRecordingGraphWithSettingPa... 双通道且非交叉存储时需要拆分开int num_channels 录音数据的通道数int num_samples 传入数据的每通道采样点个数bool interleaved 双通道时需准确设置 0: 成功;否则返回具体错误码。 开启回声消除 setAECParam ...

Windows 客户端升级指南

etAudioMixingProgressInterval NA setProgressInterval 设置响度 setAudioMixingLoudness NA setLoudness 播放外部音频源 enableAudioMixingFrame disableAudioMixingFrame pushAudioMixingFrame NA openWithCustomSource pushExternalAudioFrame 混音回调接口 播放状态回调 onAudioMixingStateChanged setEventHandler onAudioEffectPlayerStateChanged setEventHandler onMediaPlayerStateChanged onMediaPlayerPl...

iOS 客户端升级指南

etAudioMixingProgressInterval NA setProgressInterval 设置响度 setAudioMixingLoudness NA setLoudness 播放外部音频源 enableAudioMixingFrame disableAudioMixingFrame pushAudioMixingFrame NA openWithCustomSource pushExternalAudioFrame 混音回调接口 播放状态回调 onAudioMixingStateChanged setEventHandler onAudioEffectPlayerStateChanged setEventHandler onMediaPlayerStateChanged onMediaPlayerPl...

概览

同时会收到 rtcEngine:onLocalAudioPropertiesReport:。 startAudioDeviceRecordTest: 开始音频采集设备和音频播放设备测试。 startAudioRecordingDeviceTest: 启动音频采集设备测试。 该方法测试音频采集设备是否... 或更新对指定远端用户的订阅选项 unsubscribeStream:mediaStreamType: 取消订阅房间内指定的通过摄像头/麦克风采集的媒体流。 该方法对自动订阅和手动订阅模式均适用。 subscribeAllStreamsWithMediaStreamType: ...

概览

feedback:info: 通话结束,将用户反馈的问题上报到 RTC。 getErrorDescription: 获取 SDK 内各种错误码、警告码的描述文字。 setBusinessId: 设置业务标识参数 可通过 businessId 区分不同的业务场景。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。 setRuntimeParameters: 设置运行时的参数 setLogConfig: 配置 SDK 本地日志参数,包括日志级别、存储路径、日志文件最...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询