当前位置: 首页 > wzjs >正文

如何建设wap网站推广方式单一

如何建设wap网站,推广方式单一,企业宣传手册模板,jquery 购物网站引言 随着Android 10引入的Scoped Storage(分区存储)机制,传统的文件访问方式发生了重大变化。FFmpeg作为强大的多媒体处理工具,也在不断适应Android平台的演进。本文将介绍如何在FFmpeg 7.0版本中使用Android content协议直接访…

引言

随着Android 10引入的Scoped Storage(分区存储)机制,传统的文件访问方式发生了重大变化。FFmpeg作为强大的多媒体处理工具,也在不断适应Android平台的演进。本文将介绍如何在FFmpeg 7.0+版本中使用Android content协议直接访问文件,为开发者提供更便捷的多媒体处理方案。

需要说明的是,本文记录的是我个人的实践经验,并非官方文档。由于相关技术较新,网络上的参考资料有限,如有错误疏漏,还请大家指点。

背景:Scoped Storage与文件访问挑战

自Android 10(API 29)起,Google实施了Scoped Storage策略,即使应用拥有READ_EXTERNAL_STORAGE权限,也无法直接通过/sdcard/路径访问文件。开发者必须使用Storage Access Framework (SAF)获取用户选择文件的content URI。这给多媒体处理带来了新的挑战。

传统方案:文件描述符(fd)协议

在FFmpeg支持content协议之前,开发者通常采用以下工作流程:

  1. 通过SAF获取文件URI
  2. 转换为文件描述符(fd)
  3. 通过FFmpeg的fd协议处理文件
// Java端实现
private int getFileDescriptor(Uri uri) {try (ParcelFileDescriptor pfd = getContentResolver().openFileDescriptor(uri, "r")) {return pfd != null ? pfd.detachFd() : -1;} catch (IOException e) {Log.e(TAG, "Error opening file descriptor", e);return -1;}
}

这种方案存在以下局限性:

  • 需要额外的Java层转换代码
  • 文件描述符管理复杂
  • 不支持直接URI访问
  • 跨进程传递文件描述符存在兼容性问题

现代化方案:Content协议支持

2024年2月,FFmpeg正式合并了对Android content协议的支持(提交记录:6567516a5ef),开发者现在可以直接使用content URI进行多媒体处理。

环境配置

1. 初始化JNI环境

在JNI加载时设置Java虚拟机:

#include <jni.h>extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {av_jni_set_java_vm(vm, nullptr);return JNI_VERSION_1_6;  // 建议使用较新的JNI版本
}
2. 传递应用上下文
// MainActivity.java
public native void initFFmpeg(Context context);// 在Activity初始化时调用
initFFmpeg(getApplicationContext());

对应的JNI实现:

extern "C" JNIEXPORT void JNICALL
Java_com_example_media_MainActivity_initFFmpeg(JNIEnv* env,jobject thiz,jobject context) {// 创建全局引用防止被GC回收jobject global_ctx = env->NewGlobalRef(context);av_jni_set_android_app_ctx(global_ctx, nullptr);
}

使用Content协议

配置完成后,可以直接将SAF获取的URI传递给FFmpeg:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == REQUEST_PICK_VIDEO && resultCode == RESULT_OK&& data != null) {Uri uri = data.getData();String ffmpegUrl = uri.toString();// 传递给FFmpeg处理processMediaWithFFmpeg(ffmpegUrl);}
}

结论

FFmpeg对Android content协议的支持显著简化了在Scoped Storage环境下的多媒体处理流程。开发者现在可以:

  • 直接使用SAF获取的URI
  • 减少Java层转换代码
  • 获得更好的内存管理
  • 保持与Android最新存储策略的兼容性

建议新项目优先采用content协议方案,既符合Android最佳实践,又能简化开发流程。对于需要支持旧版FFmpeg的项目,可暂时保留fd协议作为fallback方案。

参考资料

  1. FFmpeg官方提交记录
  2. Android Scoped Storage文档
  3. Storage Access Framework指南

文章转载自:

http://JCJJFweX.mmjyk.cn
http://85rlWS0U.mmjyk.cn
http://mO4o3VXH.mmjyk.cn
http://arvZiML1.mmjyk.cn
http://iHrZt5en.mmjyk.cn
http://tZusA3fa.mmjyk.cn
http://aIrA9Dbe.mmjyk.cn
http://l5IwiPVo.mmjyk.cn
http://nsgp4MQq.mmjyk.cn
http://90dOVIOK.mmjyk.cn
http://owV9qXqZ.mmjyk.cn
http://igqn5Qse.mmjyk.cn
http://PrOQJtJm.mmjyk.cn
http://aSKKFX1Y.mmjyk.cn
http://cnDCOU6y.mmjyk.cn
http://6jaeWyF1.mmjyk.cn
http://cbap2XEG.mmjyk.cn
http://q6Y4YHuo.mmjyk.cn
http://6IZPXeqj.mmjyk.cn
http://J7mRbN6U.mmjyk.cn
http://vPFwkb1L.mmjyk.cn
http://OWPKBSGs.mmjyk.cn
http://WZPv8KQr.mmjyk.cn
http://Jocyaxrc.mmjyk.cn
http://ajrje1fD.mmjyk.cn
http://slbsgkZj.mmjyk.cn
http://ltLPKwcS.mmjyk.cn
http://dPwRzGu0.mmjyk.cn
http://uO9jSoJ6.mmjyk.cn
http://m7HU7gAe.mmjyk.cn
http://www.dtcms.com/wzjs/656755.html

相关文章:

  • 住房城乡与建设厅网站wordpress文章分页插件
  • 如何做网站模版一般通过路人什么梗
  • 北京展览馆网站建设专业网站建设公司怎么选
  • 通过网站提升公司形象wordpress 悬浮栏
  • 宜昌做网站公司有哪些方法织梦软件网站模板下载地址
  • 萝岗哪家网站建设好wordpress 增加分类字段
  • 做网站过程中的自身不足深圳市建设工程交易服务网宝安分中心
  • 凌河锦州网站建设网站优化怎么看
  • 网站建设公司的前端黄山自驾游最佳攻略
  • 博客网站建设的流程logo图标
  • 房产网站建设整体架构设计癖官网
  • 站酷网素材图库免费下载瑞丽网站建设
  • 开发一整个网站要多久湖南工业大学网址
  • h5网站如何做排名wordpress主标题副标题
  • 福建建设信息网站监理企业招聘南宁企业官网seo
  • 网站优化联系wordpress笑话主题
  • vs网站建设弹出窗口代码c深圳宝安区房价多少钱一平方
  • 徐州建设网站织梦商城网站
  • 资源网站模板手机建网站步骤
  • 个人网站多少钱一年趣图在线生成网站源码
  • 做视频网站资源采集推广文案标题
  • 安丘网站建设开发朗润装饰
  • 珠海公司网站设计医保局网站建设中标公告
  • 专题探索网站开发模式特点苏州网站开发建设公司
  • dedese网站外贸企业网站建设哪家好
  • 企业网站维护怎么做澄海手工外发加工网
  • 哪家建设网站成都微信小程序制作
  • 如何做网站卖画宁波网站建设公司推荐哪家
  • 产品设计作品集欣赏深圳优化新材料
  • 建站房的公司搜索引擎优化主要包括