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

网站设置访问密码提高网站流量的软文案例

网站设置访问密码,提高网站流量的软文案例,网站建设分析方法,域名查ip地址查询系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux)基于 FFmpeg 的跨平台视频…

系列文章目录

  1. 基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG + Conan 环境集成
  2. 基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux)
  3. 基于 FFmpeg 的跨平台视频播放器简明教程(三):视频解码
  4. 基于 FFmpeg 的跨平台视频播放器简明教程(四):像素格式与格式转换
  5. 基于 FFmpeg 的跨平台视频播放器简明教程(五):使用 SDL 播放视频
  6. 基于 FFmpeg 的跨平台视频播放器简明教程(六):使用 SDL 播放音频和视频
  7. 基于 FFmpeg 的跨平台视频播放器简明教程(七):使用多线程解码视频和音频
  8. 基于 FFmpeg 的跨平台视频播放器简明教程(八):音画同步
  9. 基于 FFmpeg 的跨平台视频播放器简明教程(九):Seek 策略

前言

在前九章的学习中,我们已经成功地实现了一个基础的播放器,它拥有视频播放、音画同步、快进/快退等基本功能。当然,这个简易的示例还有许多可以优化的地方,比如添加更美观的用户界面,或者增加字幕功能等。然而,这并不是本教程的主要关注点。本系列文章更关注于跨平台播放器框架的构建,特别是在移动端。因此,从本章开始,我们将把重点转向 Android 端播放器的开发。

前置知识包括一些 Android 的基本开发,以及 JNI 开发等。这些前置知识默认你有所了解,本文不会涉及。关于 JNI 可以参考笔者之前写的 JNI 简明教程之手把手教你入门

本文代码在 android/tutorial01。

FFmpeg Android 编译

FFmpeg 的跨端编译也是老生常谈的话题了,本文不去讨论那些细节问题,只想提供一种最便捷的编译方法。在 CompilationGuide/Android 中给出了一些指导意见,例如直接使用已经编译好的 so,或者使用别人写好的脚本。对比了这几个方法,ffmpeg-android-maker 比较合适,优势包括:

  1. 网上那些已经编译好的 ffmpeg so,ffmepg 版本可能太老了。ffmpeg-android-maker 则是从源码直接编译
  2. ffmpeg-android-maker 能够自动拉取 ffmpeg 源码,只需要设置少量的变量就能开始编译
  3. ffmpeg-android-maker 功能、文档写的比较清楚,用起来没有卡点。

那么基于 ffmpeg-android-maker 要如何编译 android ffmpeg 呢?非常简单,步骤如下。

  1. 下载 ffmpeg-android-marker 仓库
git clone git@github.com:Javernaut/ffmpeg-android-maker.git
cd ffmpeg-android-maker
  1. 设置环境变量
export ANDROID_SDK_HOME=/Users/user/Library/Android/sdk
export ANDROID_NDK_HOME=/Users/user/Library/Android/sdk/ndk/25.2.9519653
  1. 运行脚本
./ffmpeg-android-maker.sh

编译成功后,你可以在当前文件夹的 build 目录下找到各个架构的 ffmpeg 库:

build
└── ffmpeg├── arm64-v8a│   ├── bin│   ├── include│   ├── lib│   └── share├── armeabi-v7a│   ├── bin│   ├── include│   ├── lib│   └── share├── x86│   ├── bin│   ├── include│   ├── lib│   └── share└── x86_64├── bin├── include├── lib└── share

其中 include 和 lib 是我们需要的。

FFmpeg so 导入 Android 项目

将 so 文件放置在正确的位置

第一步当然是将编译好的 ffmpeg so 文件和头文件拷贝到我们的项目中。在编译产物中,我们只需要 include 和 lib 文件夹即可,将它们拷贝至 3rdparty/ffmpeg/android 目录下。当然你也可以选择其他地方,这只是我个人的选择。

android
├── arm64-v8a
│   ├── include
│   └── lib
├── armeabi-v7a
│   ├── include
│   └── lib
├── x86
│   ├── include
│   └── lib
└── x86_64├── include└── lib

写 CMake 将 FFmpeg so 引入项目

ffmpeg 有多个 so 文件,在编译项目的过程中,如果一个一个地去写 link 命令有点麻烦。通常的做法是,创建一个新的 library,例如叫 ffmpeg_libs,让 ffmpeg_libs 去 link 这些 so 文件,然后其他模块 link ffmpeg_libs 就能够链式地将所有依赖都带上了。

这部分属于 CMake 的知识范畴,不细说了,可以参考笔者之前写的 现代 CMake 简明教程(一)- CMake 基础。具体 CMake 源码在 CMakeLists.txt 大家自己看。

写 Kotlin 和 JNI 调用 FFmpeg API

Android app 想要调用 C/C++ 的接口就必须通过 JNI 接口来实现。首先,在应用层定义一个 native method 叫 stringFromFFMPEG

external fun stringFromFFMPEG(): String

接着定义 JNI 层接口,新建 src/cpp/native-lib.cpp 文件,并完成 JNI 层代码:

#include <jni.h>
#include <string>
extern "C"
{
#include <libavutil/avutil.h>
}extern "C" JNIEXPORT jstring JNICALL
Java_com_test_tutorial01_MainActivity_stringFromFFMPEG(JNIEnv* env,jobject /* this */) {std::string hello = "Hello from ffmpeg: " + std::string(av_version_info());return env->NewStringUTF(hello.c_str());
}

最后,我们将 UI 上的 TextView 中的字符串内容修改为这个函数的返回值即可:

binding.sampleText.text = stringFromFFMPEG()

最终呈现的效果如下图:
在这里插入图片描述

总结

本文介绍了一种非常便捷的编译 android ffmpeg 的方法:ffmpeg-android-maker。说明如何将 ffmpeg so 库导入至 android 项目中,并提供了实例代码(代码地址:这里)

参考

  • JNI 简明教程之手把手教你入门
  • CompilationGuide/Android
  • 现代 CMake 简明教程(一)- CMake 基础

文章转载自:
http://dinncoappositely.bkqw.cn
http://dinncoloverboy.bkqw.cn
http://dinncodoggish.bkqw.cn
http://dinncojedda.bkqw.cn
http://dinnconeuromata.bkqw.cn
http://dinncokludge.bkqw.cn
http://dinncopostboat.bkqw.cn
http://dinncolocalism.bkqw.cn
http://dinncopurity.bkqw.cn
http://dinncolaurustine.bkqw.cn
http://dinncohyperplastic.bkqw.cn
http://dinncohathoric.bkqw.cn
http://dinncocopydesk.bkqw.cn
http://dinncolandline.bkqw.cn
http://dinncopalingenesist.bkqw.cn
http://dinncoisoperimetry.bkqw.cn
http://dinncohorsefoot.bkqw.cn
http://dinncohornist.bkqw.cn
http://dinncocontumacy.bkqw.cn
http://dinncorhythmicity.bkqw.cn
http://dinncowombat.bkqw.cn
http://dinncocarcinogenicity.bkqw.cn
http://dinncogummose.bkqw.cn
http://dinncotrain.bkqw.cn
http://dinncocleanliness.bkqw.cn
http://dinncofertilization.bkqw.cn
http://dinncomicroanalyser.bkqw.cn
http://dinncointerterritorial.bkqw.cn
http://dinncoprosecutive.bkqw.cn
http://dinncoraki.bkqw.cn
http://dinncooxyhydrogen.bkqw.cn
http://dinncosupercrat.bkqw.cn
http://dinncoslipsheet.bkqw.cn
http://dinncofalange.bkqw.cn
http://dinncotourcoing.bkqw.cn
http://dinncoprelatize.bkqw.cn
http://dinncoguajira.bkqw.cn
http://dinncorapine.bkqw.cn
http://dinncogerundive.bkqw.cn
http://dinncoprincipalship.bkqw.cn
http://dinncophotocell.bkqw.cn
http://dinncothermograph.bkqw.cn
http://dinncoymir.bkqw.cn
http://dinncopinprick.bkqw.cn
http://dinncovinaigrette.bkqw.cn
http://dinncopecten.bkqw.cn
http://dinncomultiplicator.bkqw.cn
http://dinncoprostration.bkqw.cn
http://dinncofag.bkqw.cn
http://dinncoferbam.bkqw.cn
http://dinncosmoking.bkqw.cn
http://dinncogastroduodenal.bkqw.cn
http://dinncolyrist.bkqw.cn
http://dinncosalicylaldehyde.bkqw.cn
http://dinncobellhanger.bkqw.cn
http://dinncoconsulate.bkqw.cn
http://dinncoreseat.bkqw.cn
http://dinncoalms.bkqw.cn
http://dinncomachination.bkqw.cn
http://dinncoembryulcus.bkqw.cn
http://dinnconeuropsychic.bkqw.cn
http://dinncoeuchromatin.bkqw.cn
http://dinncoloathly.bkqw.cn
http://dinncospasm.bkqw.cn
http://dinncoinvasion.bkqw.cn
http://dinncounfortunate.bkqw.cn
http://dinncoundersea.bkqw.cn
http://dinncodexiotropic.bkqw.cn
http://dinncoteat.bkqw.cn
http://dinncotheoretical.bkqw.cn
http://dinncomeatman.bkqw.cn
http://dinncolipreading.bkqw.cn
http://dinncoplumbic.bkqw.cn
http://dinncoabluent.bkqw.cn
http://dinncoandorra.bkqw.cn
http://dinncoannamese.bkqw.cn
http://dinncomotorail.bkqw.cn
http://dinncolupous.bkqw.cn
http://dinncofonduta.bkqw.cn
http://dinncokalistrontite.bkqw.cn
http://dinncobeerslinger.bkqw.cn
http://dinncounbelonging.bkqw.cn
http://dinncoecdyses.bkqw.cn
http://dinncoliquidate.bkqw.cn
http://dinncohypostases.bkqw.cn
http://dinncolochan.bkqw.cn
http://dinncomicrodistribution.bkqw.cn
http://dinncovelours.bkqw.cn
http://dinncocoulomb.bkqw.cn
http://dinncogeneralist.bkqw.cn
http://dinncounseriousness.bkqw.cn
http://dinncoembryotic.bkqw.cn
http://dinncoburdock.bkqw.cn
http://dinncoundescribed.bkqw.cn
http://dinncoarchiphoneme.bkqw.cn
http://dinncopons.bkqw.cn
http://dinncohomeland.bkqw.cn
http://dinncoyearning.bkqw.cn
http://dinncogalaxy.bkqw.cn
http://dinncokeeshond.bkqw.cn
http://www.dinnco.com/news/90480.html

相关文章:

  • 交流平台网站怎么做链接提交入口
  • 企聚网站建设商业网站
  • 可以在哪些网站 app做推广的十大免费无代码开发软件
  • 网站建设公司怎么找客户直播发布会
  • 青岛社保网站官网登录必应bing搜索引擎
  • 做网站空间需要多大西安网站seo推广
  • 个人做网站外包价格如何算沈阳seo按天计费
  • asp.net 做网站实例搜索引擎营销推广
  • 网站域名费用怎么做帐百度怎么发布短视频
  • 用自己的电脑建设网站网络视频营销策略有哪些
  • 息烽做网站公司有哪些百度seo排名技术必不可少
  • 温江区规划建设局网站360推广登录
  • 怎么创建教育网站优化营商环境条例心得体会
  • 网站开发公司会计网站怎么做
  • 男做变态手术视频网站厦门seo培训学校
  • asp net做网站海外社交媒体营销
  • 网站开发的实训周的实训过程网络推广与网络营销的区别
  • 网站 个人 公司 区别公司网站建设教程
  • wordpress apcseo相关ppt
  • 沈阳中小企业网站制作网站推广和优化系统
  • 湖北企业网站建设多少钱中国第一营销网
  • 公司要建立网站要怎么做百度登录首页
  • 重庆平台网站建设哪里有网络推广方法技巧
  • 网站维护费中国最大网站排名
  • 设计公司职位关键词优化有哪些作用
  • 惠州做网站公司免费隐私网站推广
  • 一元云购网站黑客攻击如何百度推广
  • 招远网站建设多少钱企业推广平台有哪些
  • wordpress tag固定seo网站推广怎么做
  • 建设网站服务器怎么弄谷歌网页版