音视频
FFmpeg入门篇,RTMP入门,
lin-0410
最痛苦的事情,不是失败了,而是我本可以......
所以,如果目标还没去实现,不要感叹为时已晚,因为种一棵树最好的时间是十年前,其次是现在!
展开
-
Windows 平台下使用ffmepg
本文记录下windows平台下测试ffmpeg的过程。项目源码已上传github,https://github.com/whcx/FFmpegPrj/tree/master1,首先ffmpeg库的编译,可以从ffmepg官网下载编译好的库。2,Visual studio中创建window 项目。 引用第三方头文件、库文件的配置,可以在项目属性中配置头文件、库文件的路径,这种方式不利于项目的合作开发,这里使用cmake的形式做编译配置。cmake_minimum_required...原创 2020-12-30 19:32:35 · 313 阅读 · 0 评论 -
Ubuntu环境下编译FFmpeg的流程
Ubuntu环境下编译FFmpeg的流程在Windows10系统下,安装Ubuntu系统不需要安装虚拟机,使用Window10自带的ubuntu引导程序安装ubuntu系统。安装步骤:,控制面板->程序->启用或关闭Windows功能 打开 适用于Linux的Windows子系统 选项。在Microsoft Store中搜索ubuntu,如果有多个版本,建议选择**.04的版本是最稳定的,除了**.04版本,可能还会有**.10版本。选择之后,就进...原创 2020-12-30 19:14:46 · 945 阅读 · 0 评论 -
使用mediacodec做视频解码
记录一下做视频解码的demo:github地址:https://github.com/whcx/AudioVideoEncoderDecoder存储权限申请: 当前项目targetSdkVersion 29,按之前方式动态申请权限 Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,无法在sdcard的共有目录创建文件。 可以使用context.getExternalFilesDi原创 2020-09-01 09:23:36 · 2373 阅读 · 0 评论 -
Bitmap使用中的两级缓存,及内存重用
案例是测试Bitmap使用过程中,如何使用二级缓存,及重用bitmap的内存这里的二级缓存,一是内存缓存,而是磁盘缓存。代码中已加注释,所以可以直接看代码:一,首先是主Activity,其中会设置recyclerView的布局类型,适配器,设置磁盘缓存的路径。public class MainActivity extends AppCompatActivity { pri...原创 2020-01-21 20:16:25 · 616 阅读 · 1 评论 -
BitMap内存占用
BitMap加载后,占用内存大小:width * height *每个像素占的字节数代码中获取bitmap占用内存大小的计算:public final int getByteCount() @Bitmap.java{ return getRowBytes() * getHeight();}其中的getRowBytes()调用的是native方法,具体在android源码...原创 2020-01-20 17:23:38 · 531 阅读 · 0 评论 -
Camera + opengles,有多级filter的处理(四)
在处理摄像头数据特效前,先说一个概念,离屏渲染.在用opengl绘制视频时,我们是用GLSurfaceView显示预览效果,也即是直接把摄像头数据传给了着色器,然后由着色器通知opengl去绘制,这种方式是直接把摄像头数据绘制到屏幕上,片元找色中的使用的采样器是sampleExternalOES,也就是说摄像头数据是作为opengl的一个外部纹理来使用的.但是实际在camera的应用...原创 2020-03-27 17:01:14 · 1009 阅读 · 0 评论 -
Camera + opengles录制视频,录制快速,慢速视频(三)
视频录制可以使用android提供的api,如MediaRecorder,对视频的编码也有MediaCodec这样的api可以使用。MediaCodec的使用,用到两个缓存队列,一个输入缓存队列,一个是输出缓存队列,只需要使用queueInputBuffer把要编码的数据byte数组提交到输入队列,就可以使用enqueueOutputbuffer从输出队列取出编码完成的数据。这个用法有一个前提,就是要拿到待编码的byte数据。但是,在使用opengl es将摄像头数据绘制到屏幕时,数据的处理是在着色原创 2020-03-27 14:41:58 · 1232 阅读 · 0 评论 -
Camera + opengl es 使用opengls绘制摄像头数据(二)
实现Camera数据的预览,可以使用TextureView,作为View heirachy的一个硬件加速层,从SurfaceTexture中获取到的纹理数据更新到HardwareLayer中,完成显示;也可以如这篇文章里讨论的,使用opengles完成绘制,相比较与前一种,使用opengles实现绘制,可以更方便的借助opengl的强大api添加特效处理,比如完成美颜的功能等.OpenGL...原创 2020-03-22 10:45:24 · 3277 阅读 · 3 评论 -
Camera直播视频数据的获取,及RTMP推流(一)
通过摄像头直播推流的场景中,需要先从摄像头获取去视频元数据,然后交给x264编码器(加入用的视频编码器是x264)编码,最后经RTMP封包后发送给服务器.我们使用CameraX来获取摄像头数据,对于CameraX的使用,参考官方文档:https://developer.android.google.cn/training/cameraxCameraX 是一个 Jetpack 支持库,旨...原创 2020-03-19 23:25:53 · 5020 阅读 · 1 评论 -
Android中音频元数据的采集,及RTMP推流
在用手机做直播推流时,不管是录屏直播,还是摄像头直播,都要用到音频的元数据.在Android中,可以借助AudioRecord来采集音频数据,然后通过faac编码库,将编码后的数据交给RTMP去封包后发送给服务器.这篇主要讨论从AudioRecord获取音频数据,然后通过faac编码,经过RTMP封包后发送到直播服务器的过程.一,如果要使用手机的录音功能,需要在AndroidMan...原创 2020-03-19 21:14:00 · 2139 阅读 · 1 评论 -
音视频开发基础
把多媒体的log打开,或者只打开av目录:find ./frameworks -type f | xargs sed -i 's://#define LOG_NDEBUG 0:#define LOG_NDEBUG 0:'Android视频开发进阶,原文链接:http://www.jianshu.com/u/a32db45d4859Android视频开发进阶(part2-MP4文件的解析...转载 2018-03-17 07:07:42 · 858 阅读 · 1 评论 -
基于FFmpeg开发视频播放器,音视频同步(四)
为什么需要音视频同步?从前面的代码可以看到,播放的过程有解码线程不断的把解码好的AVFrame数据放入队列,然后播放线程从队列中取出解码后的数据,经过格式转换,分别送给ANativeWindow去绘制,送给OpenSlES去播放声音,这个过程如果不去控制,播放的速度就取决与解码线程,播放线程的处理速度,及系统的性能.这样播放的效果,肯定是不流畅的.为了让播放尽可能流畅,就要把视频播放的帧率...原创 2020-03-14 12:08:00 · 939 阅读 · 0 评论 -
基于FFmpeg开发视频播放器,视频解码播放(二)
一,从setDataSource开始,设置播放的数据源,可以时本地视频,也可以是网络链接EnjoyPlayer.javaprivate String mPath = "/sdcard/mpeg.mp4"; public void setDataSource(String path) { setDataSource(nativeHandler, path); ...原创 2020-03-13 22:27:50 · 998 阅读 · 0 评论 -
基于FFmpeg开发视频播放器,音频解码播放(三)
音频的播放,这里用的时OpenSLES,这是一套跨平台,针对嵌入式系统做过优化的api,它为嵌入式移动多媒体设备上的本地应用程序提供标准化, 高性能,低响应时间的音频功能实现方法,并实现软/硬件音频性能的直接跨平台部署,降低执行难度.当然Android平台上音频的播放,也可以借助java层AudioTrack接口,但是因为ffmpeg的整个处理流程都是在native层,所以使用NDK提供的...原创 2020-03-13 22:57:21 · 479 阅读 · 0 评论 -
基于FFmpeg开发视频播放器, 基本流程(一)
刚开始学习FFmpeg,用几篇文章记录下,使用ffmpeg开发一个简单的视频播放器,大概的过程.这里只讨论核心代码,如解封装,音频的解码播放,视频的解码播放,音视频同步,不涉及UI布局.http://ffmpeg.org/一, FFmpeg是一套用来记录,转换数字音频,视频,并能将其转化为流的开源项目,拥有丰富的命令来实现音视频相关的操作,其源码是以模块化的方式进行构建,可以根据需要选择不...原创 2020-03-13 20:25:18 · 3411 阅读 · 0 评论 -
视频相关概念
转自:http://www.samirchen.com/video-concept/视频相关概念视频文件格式文件格式这个概念应该是我们比较熟悉的,比如我们常见的 Word 文档的文件格式是.doc,JPG 图片的文件格式是.jpg等等。那对于视频来说,我们常见的文件格式则有:.mov、.avi、.mpg、.vob、.mkv、.rm、.rmvb等等。文件格式通常表现为文件在操作系...转载 2020-03-13 17:13:11 · 646 阅读 · 0 评论 -
FFmpeg 视频处理入门教程
FFmpeg 视频处理入门教程http://www.ruanyifeng.com/blog/2020/01/ffmpeg.html转载 2020-03-13 11:20:11 · 255 阅读 · 0 评论 -
ubuntu下编译ffmpeg的过程
后续一段时间准备音视频相关知识的学习,所以先编译ffmpeg做练习用.以最新版本的android api 29, ndk21, ffmpeg4.2,编译ffmpeg库文件.1,环境配置,1)安装yasm,如果没有安装会报nasm not found的错误.下载http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar....原创 2020-02-27 19:44:47 · 933 阅读 · 0 评论