![](https://img-blog.csdnimg.cn/20210823100757743.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
android多媒体
文章平均质量分 85
android 多媒体
王二の黄金时代
碰到问题,就解决问题
展开
-
android mediacodec 编码demo(java)
接着上一篇ndk mediacodec解码 https://blog.csdn.net/u012459903/article/details/113046538#comments_14743056,本想也来一遍 nkd mediacodec编码,事情总是充满坎坷曲折,为方便调试先从java层来一份 mediacode 编码,毕竟在java层调试还是比较方便文档也相对丰富。环境,需要一个 Android studio上的hello world demo程序,加上可以读写sd卡的权限即可,这里只用mediac原创 2021-01-25 11:27:40 · 1161 阅读 · 1 评论 -
NDK中使用mediacodec解码h264
常见的都是在java层使用mediacode解码,给mediacode绑定surface直接解码渲染,为了配合ffmpeg现在想在native用ndk使用mediacode硬解码,解码直接输出yuv数据,只是单纯地需要一个解码器,不绑定surface. 百度百度出来的文章怎么就没有浅显易懂直接可用的呢?非要上来就讲那张mediacode官方图。。。我想,既然是demo, 就应该是小白直接可用,没有过多的架构设计最好是一个main函数到底,多好。自己折腾老半天终于弄出来个可以用的demo,一个在android原创 2021-01-23 14:50:05 · 4607 阅读 · 11 评论 -
Android 移植iperf3.13 测试网络
iperf,测试网络性能的,不同于 webrtc里面的gcc 算法预估网络带宽,iperf是实际占用网络来传输数据测量实际的网络性能。 在Android studio中通过 Android.mk 编译iperf3 源码,用于android 设备测试网络原创 2022-12-08 17:29:09 · 6635 阅读 · 3 评论 -
(2)android MediaPlayer 和Nupalyer、MediaCodec、OMX关系
MediaCodec 又转而使用ACodec, (ACodec, 即android codec),注意这里各种命名和包装的关系,很有层次感,并不是无端就这么多层次来恶心人的。 ACodec 才是android平台上codec的实现,但是为了屏蔽硬件厂商的实现差异,对上提供统一的接口,android 上对硬件厂商提供的编解码器用openMax 标准接口进行规范,(原本上openMax不仅仅规定了code的接口形式,甚至是demuxer都有,一套组件接口,但是android 只是使用了 code)。 所以 以O原创 2022-09-26 18:00:22 · 1822 阅读 · 0 评论 -
android 多屏幕显示activity,副屏,无线投屏
多屏支持:是一个设备有多个屏幕,怎么让不同的屏幕显示不同的app,或者是一个app同时用两个屏幕来显示不同的页面内容。2.3 方式,如果把用户的输入信息都加入进来,结合上无线投屏就是 多屏协作了,在电脑端独立使用手机的应用...原创 2022-08-26 16:01:25 · 13372 阅读 · 2 评论 -
<一>Android Audio音频框架
个人对于Android 音频模块的整体理解,分析各个子模块存在的意义,领悟设计者架构思想,探讨未来可能的发展趋势。全文涉及到 AudioFlinger AudioPolicy AudioSystem AudioService AudioManager以及用于音频流数据传输的 AudioTrack OpenSLes AAudio。原创 2022-08-25 15:57:16 · 4471 阅读 · 1 评论 -
Android 保持ImageVIew大小不变,让图片按比例拉伸
所以保持图片宽高比总体有两种思路:(只需修改xml布局文件)一: 让图片缩放,来适应控件大小。通过修改图片的缩放方式以及配合背景图二: 让控件大小自适应,保持和图片一样的宽高比,来适应图片。不要混着用, 同时修改android:adjustViewBounds 和android:scaleType 简直凌乱......原创 2022-08-14 13:45:17 · 5662 阅读 · 0 评论 -
Android native层Hander原理分析
本篇探究 Android framework native层多媒体库中的 AHandler+ALooper+AMessage 这三个类的关系和机制,并借鉴此原理,用c++(c++17)重新实现自己的Handler+Looper+Message. 实现可以支持异步和同步的消息处理结构。原创 2022-08-06 12:37:29 · 684 阅读 · 0 评论 -
androi 直接使用AudioRecord.cpp 录音的demo可执行程序,native层demo
这个demo 直接使用AudioRecord.cpp 中提供的api,利用libmedia库 写一个c++程序,在android 的shell上运行,录制音频。为什么要这么做,直接用android studio找一个录音程序app demo它不香么? 如果只是要个java的app,那是很方便,网上录音的android app demo不少,使用Mediacodec或者AudioRecord, 但.........原创 2020-04-26 11:16:15 · 2608 阅读 · 6 评论 -
android 系统app指定加载32-bit/64-bit so库
系统app 要求指定使用 32bit的so库,但是android Sudio 编译出来的app,使用System.loadLibrary() 加载库的时候,硬是要去 加载 64bit的库, 把 /system/lib64 下的库手动删除掉,它还是只会去64bit的库路径下面查找,并且还log明确告诉你它查找库的路径和顺序,没辙。 这里为了临时达到目的,取个巧: 设备上/data/system/packages.xml 文件记载了app的信息, 其中一条:primaryCpuAbi="......原创 2021-01-02 17:27:53 · 2240 阅读 · 0 评论 -
android mediacode 解码aac
目录主要流程:mediacode解码aac:mediacode参数"csd-0",如何设定?这里手动解析 aac文件,如果只是本地播放aac文件那么android已经有完善的方法:MediaExtractor + MediaCoddec 或者直接是MediaPlayer, 但有的时候我们有自己的aac帧数据,想利用Mediacode进行解码,里面就有些坑。完整app源码:githubhttps://github.com/Canok7/openScreen/tree/main/clien..原创 2021-08-11 17:19:11 · 1399 阅读 · 0 评论 -
android MediaPlayer 源码分析 1
android 在java api中播放一个音乐文件:MediaPlayer player = new MediaPlayer();try { player.setDataSource("/storage/emulated/0/test.aac"); player.prepare();} catch (IOException e) { e.printStackTrace();}player.start();上面调用如此简单,framework层里面可是做了非常多的...原创 2021-08-16 19:04:21 · 790 阅读 · 0 评论 -
Ubuntu ndk 编译libx264
ndk编译libx264,主要是ffmpeg需要,但是和编译ffmpeg不同,当前的libx264库提供的 configure竟然是没有配置使用clang 编译器,执行#./configure --help可以看到,可以设置--cross-prefix 交叉编译选项,没有-cc -cxx 的选项,添加上-cc -cxx的配置会报错,不添加的话, configure 里面默认使用的CROSS_PREFIX-gcc 进行编译,最新的ndk (21) 已经抛弃了gcc, 没有gcc这个工具了,所以conf...原创 2021-07-28 19:50:00 · 1455 阅读 · 0 评论 -
ffmpeg-android dlopen failed: library “libclang_rt.ubsan_standalone-aarch64-android.so“ not found
NDK编译的ffmpeg 库,在android上使用,提示动态库错误:15:08:54.276 18357 18357 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "libclang_rt.ubsan_standalone-aarch64-android.so" not found在配置编译ffmpeg的时候去掉配置:--toolchain=clang-usan分析:1.0关于这个toocha原创 2021-07-27 16:12:52 · 1315 阅读 · 0 评论 -
android 使用NativeWindow渲染RGB视频
《Android native 层使用opengl渲染YUV420p和NV12》《opengl 叠加显示文字》《android studio 编译freeType》android native渲染图像的三种方式:1.0 java层canvas, 然后在native层修改canvas的bitmap缓存区2.0 使用opengl3.0 使用nativeWindow 直接渲染这里写个demo,使用nativeWindow直接渲染RGBA8888 视频序列。效果:需要一个RGBA8888格式.原创 2021-06-25 17:27:33 · 3142 阅读 · 2 评论 -
android studio 编译freeType
《Android native 层使用opengl渲染YUV420p和NV12》《》原创 2021-06-17 10:29:31 · 1434 阅读 · 1 评论 -
opengl 叠加显示文字
https://blog.csdn.net/u012459903/article/details/117363693原创 2021-06-16 20:04:21 · 1164 阅读 · 0 评论 -
Miui+多屏协作--wifiDisplay-wireshark抓个包
宣传了好久的mui12.5,终于在我的手机上推送了(RedmiK20Pro),体验一下这个多屏协作功能。原创 2021-06-12 13:49:39 · 1355 阅读 · 4 评论 -
Android native 层使用opengl渲染YUV420p和NV12
利用opengl进行yuv的渲染,主要原理利用显卡的加速运算,是把YUV转换成 RGBA ,然后交给gl渲染, 即opengl最终需要的数据还是 RGBA, 我们可以采用cpu软件jisua原创 2021-05-28 16:17:59 · 3545 阅读 · 5 评论 -
NDK中使用mediacodec编码h264(二)
《Ndk中使用Mediacode解码》《android mediacodec 编码demo(java)》《NDK中使用mediacodec编码h264》改进版:将 输入buffer任务和取出buffer任务分开,放到不同的线程,以达到最快的输入和最及时的取出。(当然,也可以改用异步方式,给MediaCodec设置回调,让其主动通知你数据已经编码好,来拿,有空闲的buffer,可以输入新数据,不过异步方式回调会占用MediaCodec内部工作线程,如果在回调比较耗时,那也会降低编码器调度线程效率)。原创 2021-03-18 11:22:40 · 1211 阅读 · 7 评论 -
NDK中使用mediacodec编码h264
《Ndk中使用Mediacode解码》《android mediacodec 编码demo(java)》Ndk native c使用MediaCodec编码:(在ndk直接编译成可执行文件,push到设备上可运行)//canok 20210316 //NdkMediacodec.cpp#include<stdio.h>#include<stdlib.h>#include<string.h>#include<pthread.h>#inc.原创 2021-03-16 14:17:36 · 4389 阅读 · 5 评论 -
本地套接字,在线手动调试主程序
一个已经串联起来一堆功能的程序,现在想修改其中某一个模块的功能,比如音视频编码在程序已经运行的过程中动态调整码率,没有完善的单元测试接口,着实苦恼,想到一个简单的方式,在现有的代码上嵌入一个local socket 服务,另外写一个小程序connect进去给它发信息,来触发我们实现的功能调用,如此即可手动在线调试。 (这不是gdb等的debug调试,也就是一个进程间通信的应用)上代码:个人在android上调试jni库的一个功能调用使用,用ndk编译之后将编译的debug_client可执行文件push原创 2021-01-21 16:52:52 · 256 阅读 · 0 评论 -
Android app 获取本app进程打开占用的文件列表
接上一篇:linux c代码获取当前进程打开了哪些文件这次直接通过java层读取/proc/pid/fd/ 信息即可,无需jni过度,可以通过/proc/pid/fd 获取到本进程当前正打开的文件效果:贴代码://canok 0924package com.example.openfdinfo;import android.util.Log;import java.io.File;import java.io.IOException;import java.util.Arra.原创 2020-09-24 12:44:46 · 1036 阅读 · 0 评论 -
Android app 捕获系统信号,避免被信号kill
实现:简单点讲,就是在jni层调用 signal(SIGINT, handlerInterrupt); 实现app收到 SIGINT 信号的时候自己处理,而不会被kill原创 2020-09-17 17:03:58 · 2630 阅读 · 3 评论 -
spydroid_ipcamera源码分析-图解,android ip摄像头
接上一篇《旧手机利用(Android),当wifi,当mic,当ipcamera》鉴于上一篇手机当做ipCamera使用的EsayIpcamera app只能选择640x480的分辨率,这里看到另一个app, spydroid, 可以支持修改设置编码参数,还支持audio,重要的一点,它是开源的,在github上:fyhertz/spydroid-ipcamera不过这个app有些老旧,使用的...原创 2020-02-18 15:36:17 · 2947 阅读 · 2 评论 -
旧手机利用(Android),当wifi,当mic,当ipcamera
android 旧设备,通过软件diy 用作无线网卡,usb麦克风,无线显示屏,ip摄像头,原创 2020-01-28 17:37:00 · 7258 阅读 · 1 评论 -
android播放rtsp视频流app, demo app .使用live555+MediaCodec
用libvlc提供的库播放rtsp,总是延迟比较大(局域网的情况下,存在明显的画面延时),netcaching设置为0还是存在延迟,但是网络延迟已经比较低了,没办法,自己写了一个APP,现在只测试了接受一个视频流的rtp流,没有音频。延迟较低,总的播放延迟基本在网络部分。原理:1.0 解码播放端:使用android 的MediaCodec 播放h264流,先行使用h264裸流文件模拟网络流进行...原创 2019-09-23 18:04:28 · 8591 阅读 · 5 评论 -
android第三方app改为系统app,加入system组,获取system权限
用Androd studio 开发的app,编译出apk, 想获取system权限。环境:编译好的apk, android 源码环境,有root权限和源码对应的开发板,我这里是user版本。思路:1 可以的话直接把整个app源码移到 android源码上编译,但是问题重重,sdk版本和兼容包,依赖包等等。最后关键是,编译成系统app时,需要依赖的so库和动态jar包 是不会被打包到apk中...原创 2019-09-16 10:37:10 · 14453 阅读 · 1 评论 -
第三方app加载系统/system/lib下的库--is not accessible for the namespace
第三方app想load /system/lib 下的so库。报错:is not accessible for the namespace缘由:android限制了app加载so库,从 7.1.2 源码来看,在加载so库的时候会检查 加载者的 权限,对于部分常用的库可以允许加载比如:libssl.solibsqlite.solibutils.solibstagefright.solibmedia.s......原创 2019-09-11 13:43:09 · 18004 阅读 · 1 评论 -
Android native层服务例子Bp和Bn
转入android阵地,被各种权限所阻挠,app写个jni各种没有权限,只能开个native服务,本来android的服务,就是基于Binder机制所建立的,如果写个简单的服务 只需继承自Bindler, 实现onsTransact(). 参考现成的工程都是 很复杂的 Bp + Bn 好繁杂的样子,所以这里写了个 Bp+Bn 的最简单demo以观其骨架。 工整,perfect!功能: 一个服务...原创 2019-08-21 11:12:07 · 1827 阅读 · 2 评论 -
Android基于libvlc 播发rtsp视频流
使用libvlc 播放rtsp视频流的app demo.从官方vlc官方sample上修改而来,下载地址:https://code.videolan.org/videolan/libvlc-android-samples/tree/master/官方的sample是播放一个在安装包里面的.m4v 的卡通动画,稍作改动,就可以播放rtsp视频流了。(直接下载过来的工程无法使用,缺少 vlc的...原创 2019-03-22 17:13:53 · 6228 阅读 · 2 评论 -
android使用libvlc开发推流的简单demo_apk
从linux版本的libvlc推流demo,https://blog.csdn.net/u012459903/article/details/88600045移到android app上使用,调通,迫不及待上一篇博文,虽然还没来得及整理好各种细节。如图,测试android机和 pc连接到同一局域网,启动app,用pc上的vlc播放器 播放网络串流:输入app中设置的流地址环境:...原创 2019-03-18 17:32:01 · 5136 阅读 · 3 评论