ijkplayer实现IMediaDataSource
由于ijkplayer不能识别android.resource类型的资源在播放raw中的文件的时候用IjkMediaPlayer不能正常播放,实现IMediaDataSource为IjkMediaPlayer提供资源。 class RawDataSourceProvider implements IMediaDataSource{ AssetFileDescriptor mDescriptor; byte[] mMediaBytes; long mPosition; public RawDataSourceProvider(AssetFileDescriptor descriptor) { this.mDescriptor = descriptor; } @Override public int readAt(long position, byte[] buffer, int offset, int size) throws IOException { if(position + 1 >= mMediaBytes.length){ return -1; } int length; if(position + size < mMediaBytes.length){ length = size; }else{ length = (int) (mMediaBytes.length - position); if(length > buffer.length) length = buffer.length ; length--; } System.arraycopy(mMediaBytes, (int) position, buffer, offset, length); mPosition = position; return length; } @Override public long getSize() throws IOException { long length = mDescriptor.getLength(); if(mMediaBytes == null){ Source source = Okio.source(mDescriptor.createInputStream()); mMediaBytes = Okio.buffer(source).readByteArray(); } return length; } @Override public void close() throws IOException { if(mDescriptor != null) mDescriptor.close(); mDescriptor = null; mMediaBytes = null; } } https://www.cnblogs.com/xwgblog/p/5287151.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2015-12-04 数学公式大全
2015-12-04 数学公式
2015-12-04 java保留两位小数4种方法
2015-12-04 【安卓手机通用】android adb shell 命令大全
2015-12-04 Java 多线程同步
2015-12-04 java笔记--关于线程同步(5种同步方式)