音视频
文章平均质量分 80
AlanWang4523
这个作者很懒,什么都没留下…
展开
-
FFmpeg 命令行实现居中高清上下模糊播放效果
【代码】FFmpeg 命令行实现居中高清上下模糊播放效果。原创 2023-07-19 14:17:30 · 898 阅读 · 0 评论 -
FFmpeg 命令行混音并调整音量
使用 ffmpeg 命令行对两路音频进行混音,并调整两路输入音频的混音音量,并封装成 shell 脚本。原创 2023-07-19 11:31:45 · 1051 阅读 · 0 评论 -
ijkplayer 源码分析(3):setOption 流程及常用参数设置
本文详细介绍了 ijkplayer 常用的参数配置,从源码分析了 setOption 参数设置的流程,以及五大类参数的详细说明。比如通过参数配置使用硬解码还是软解码,Android 音频播放使用 AudioTrack 还是 OpenSL,是否启用 SoundTouch 等等。那 ijkplayer 有哪些参数配置?各个参数有什么作用?有哪些常用的参数配置呢?原创 2023-03-30 21:40:13 · 2674 阅读 · 1 评论 -
ijkplayer 源码分析(2):消息分发处理机制
ijkplayer 源码详解,源码剖析,详细梳理了 ijkplayer 的消息机制,消息分发处理流程。原创 2023-03-29 21:34:37 · 527 阅读 · 0 评论 -
ijkplayer 源码分析(1):初始化流程
ijkplayer 源码分析,梳理 ijkplayer 动态库加载及初始化路程原创 2023-03-29 10:27:02 · 806 阅读 · 0 评论 -
ijkplayer Android 端简要使用流程
ijkplayer Android 端的简单使用流程及接口说明原创 2023-03-24 18:43:31 · 5153 阅读 · 0 评论 -
实现基于 CMake 编译调试 ijkplayer (ijk0.8.8--ffmpeg4.0)
实现基于 CMake 编译 ijkplayer,可以在 AndroidStudio 中查找、跳转、运行、调试 ijkplayer 源码,项目已开源并上传至 Github原创 2023-03-23 21:24:33 · 1109 阅读 · 3 评论 -
Android ijkplayer 编译踩坑与记录(ijk0.8.8--ffmpeg4.0)
ijkplayer 0.8.8 最新版基于 FFmpeg 4.0 内核编译流程及编译错误解决,修改脚本及编译结果已上传 github,可自行取用原创 2023-03-21 21:33:44 · 2430 阅读 · 2 评论 -
移动端开源播放器对比与选型(ExoPlayer/ijkplayer/VLC/GStreamer/SmarterPlayer)
移动端开源播放器调研和选型,分别介绍了 ExoPlayer、ijkplayer、VLC、GStreamer、SmartPlayer 等开源播放或 SDK 及各自的优缺点原创 2023-03-21 15:35:32 · 12354 阅读 · 0 评论 -
Assimp 交叉编译 Android iOS 库
基于 Assimp 5.0.1 Release 版裁剪,只保留 OBJ 和 FBX 格式的 3D 模型解析,并使用交叉编译工具链编译成 Android 和 iOS 库编译编译 Android 静态库:① 记得要修改 build_for_android.sh 中最上面的 MY_NDK、MY_SDK、MY_CMAKE 路径,改成自己对应的安装路径② 执行 build_for_android.sh, 最后会生成 Android 平台 arm64-v8a、armeabi-v7a 的静态库编译 i原创 2021-10-18 21:41:01 · 1527 阅读 · 7 评论 -
FFmpeg 增加自定义协议读取 Android InputStream
前言需求背景:1、在使用 FFmpeg 命令处理 Android assets 目录下的文件时,无法读取 assets 目录;2、Android Q 及以上系统,使用 FFmpeg 处理时没有权限直接通过路径读取应用外文件实现方案:1、直接拷贝文件到应用内目录(缺点是需要做一次拷贝,如果文件大耗时较长)2、实现 FFmpeg 自定义协议,回调到 Android 层通过 InputStream 读取流,InputStream 可以来自 assets 或 uriFFmpeg 自定义实现实际就是实原创 2021-02-02 12:17:49 · 1482 阅读 · 7 评论 -
Android AudioTrack 播放封装及测试
Android 音频录音/播放系列:《Android AudioRecord 录音封装及测试》对 Android AudioTrack 封装,内部管理播放状态,并在暂停播放时做 FadeOut,在恢复播放时做 FadeIn ,避免快速暂停/恢复的播放杂音问题。并设计成回调的拉模式,通过回调向外层要播放的数据。AudioPlayer 封装如下:import android.media.AudioFormat;import android.media.AudioManager;import and原创 2020-11-23 21:33:28 · 1014 阅读 · 0 评论 -
Android AudioRecord 录音封装及测试
对 AudioRecord 封装,内部管理录音状态,并读取数据到 ByteBuffer 通知外层获取录音数据。AudioRecord 封装代码如下:import android.media.AudioFormat;import android.media.AudioRecord;import android.media.MediaRecorder;import com.alan.audioio.audio.common.IDataAvailableListener;import com.alan原创 2020-11-20 19:32:18 · 852 阅读 · 0 评论 -
Android Audio Wav 文件读写操作的封装
Android 在使用 AudioRecord 录音时,采集的是 PCM 数据,有时候在录完后向听下录音效果,还需要拉到电脑端用 AU 播放,手机端没法直接播放 PCM 数据。因此封装了一个 WavFile 在 PCM 前面增加 Wav 头,生成 wav 文件,可以在手机上直接播放。文件头信息见使用方法如下:String wavSavePath = "/sdcard/Alan/audio/record.wav"; // 指定 PCM 格式(跟 AudioRecord 配置一致),原创 2020-10-28 21:33:20 · 3351 阅读 · 0 评论 -
Android SoundPool 钢琴弹奏(停止播放做 FadeOut)
Android SoundPool 主要用于快速播放多个短音频,[开发文档链接](https://developer.android.com/reference/android/media/SoundPool)。应用场景如:钢琴弹奏 APP,可用 SoundPool 播放每个琴键的音频资源。先看应用场景效果:为使用方便,封装 SoundPool 如下:package com.alan.audioio.audio;import android.content.res.AssetFileDescr.原创 2020-10-27 20:46:09 · 764 阅读 · 0 评论 -
编译 FFmpeg Android 库(FFmpeg + openh264 合并到一个 libffmpeg.so)
编译脚本和文档已放入 github当前编译环境:Mac OSX 10.15.4NDK : android-ndk-r15c1、编译 openh264我编的 openh264-2.1.1 ,源码地址编译脚本如下:#!/bin/bash# Author: AlanWang# Email: alanwang4523@gmail.com# Date: 2020-06-30# https://github.com/cisco/openh264/tree/v2.1.1# 需要指定 ANDR.原创 2020-07-27 19:51:02 · 1737 阅读 · 1 评论 -
Android FFmpeg 编译可执行命令程序(依赖动态库)
项目中有两种情况用到 FFmpeg :C++ 底层代码调用 FFmpeg 用于音视频解码Android 上层使用 FFmpeg 命令行工具用于音视频裁剪、分离、加水印等一般用法是编译一份 FFmpeg 静态库或动态库(大小 4M+)用于底层依赖和调用,再编译一份 ffmpeg 可执行程序(大小 4M+),但这样实际上项目中有两份 ffmpeg 核心库,会增加安装包体积。因此优化如下:编译一份 libffmepg.so 用于底层代码依赖和调用(大小 4M+);将 ffmpeg.c 等代码依赖原创 2020-07-15 12:09:33 · 856 阅读 · 1 评论 -
编译OpenCV Android库(自定义配置)
根据自己需要的模块交叉编译 Android OpenCV 库,如下面的脚本只编译了 opencv_core 、opencv_imgproc、opencv_video 三个模块,如果需要裁剪自定制,可以修改 build_opencv_modules 函数,打开或关闭你需要的模块。模块所需要依赖的其他模块可在 OptionArgs.txt 里查找 xxx_LIB_DEPENDS,xxx 为要编译的模块。比如,要编译 opencv_video,可以在 OptionArgs.txt 里搜索 opencv_video原创 2020-06-23 20:51:35 · 4548 阅读 · 4 评论 -
Android 使用 mp4parser 做视频拼接合并
做短视频拍摄时,在分段录制结束需要将多个视频片段拼接成一个视频文件,然后进入预览界面播放。有两种方案:方案一:使用 FFMpeg 进行视频拼接,命令如下:// inputListFilePath 为需要合并的文件列表文件,每行一个文件路径String cmd = "ffmpeg -y -f concat -safe 0 -i " + inputListFilePath + " -c co...原创 2019-04-16 01:07:07 · 4578 阅读 · 1 评论 -
Android 使用 mp4parser 做视频裁剪
做音视频时我们很多时候需要做音视频裁剪,本文介绍使用开源库 [mp4parser](https://github.com/sannies/mp4parser) 做裁剪。使用时先在 gradle 中配置依赖:compile 'com.googlecode.mp4parser:isoparser:1.1.21'将 mp4parser 封装成音视频裁剪工具类:import android.t...原创 2018-11-20 20:59:47 · 5363 阅读 · 1 评论