前几天发了一篇 FFmpeg 调用 Android MediaCodec 进行硬解码 的文章,这里面的技术点不算太难,也还是调用 FFmpeg 的常用接口操作,但重点在于 FFmpeg 的版本选择以及编译选项要开启 MediaCodec 才行。
关于 FFmpeg 的编译,是个老生常谈的话题了,很多初学者都会卡在怎么编译动态库 so 的问题上,这其实也是 Android 开发转音视频的一大拦路虎,一行 FFmpeg 代码都没来得及写呢,就得先折腾好久编译问题。
[阅读全文]前几天发了一篇 FFmpeg 调用 Android MediaCodec 进行硬解码 的文章,这里面的技术点不算太难,也还是调用 FFmpeg 的常用接口操作,但重点在于 FFmpeg 的版本选择以及编译选项要开启 MediaCodec 才行。
关于 FFmpeg 的编译,是个老生常谈的话题了,很多初学者都会卡在怎么编译动态库 so 的问题上,这其实也是 Android 开发转音视频的一大拦路虎,一行 FFmpeg 代码都没来得及写呢,就得先折腾好久编译问题。
[阅读全文]文章原创首发公众号:音视频开发进阶。链接地址:https://mp.weixin.qq.com/s/S8NwQnY4uyQulfZnRF7t_A
FFmpeg 在 3.1 版本之后支持调用平台硬件进行解码,也就是说可以通过 FFmpeg 的 C 代码去调用 Android 上的 MediaCodec 了。
[阅读全文]用 WebRTC 创建相机预览,不到 50 行核心代码就可以轻松搞定了。
直接使用官方给的版本就好了,不需要再去额外编译。
implementation 'org.webrtc:google-webrtc:1.0.30039'
后面都会使用该版本做测试的。
[阅读全文]本篇文章主要是讲解如何通过 FFmpeg 代码来获取文件信息。
首先准备一个文件,用命令行来查看它的基本信息。
文件地址如下:
https://github.com/glumes/av-beginner/blob/master/resource/video/video-avi-320x320.avi
这个文件很有意思,它的内容是一个时钟,每隔一秒,秒针都会跳动,同时还会发出滴答的声音,很方便后续做音视频同步处理。
[阅读全文]接上篇 SDL 播放 PCM 音频文件,已经实现了 推
的模式去播放,接下来看看 拉
的模式如何实现。
在前面的文章中已经能够利用 SDL 去播放 YUV 视频文件了,接下来要通过 SDL 去播放 PCM 音频文件。
SDL 播放音频文件有两种方法,可以理解成 推(push)
和拉(pull)
两种模式。
推
就是我们主动向设备缓冲区填充 Buffer ,而 拉
就是由设备拉取 Buffer 填充到缓冲区。
在一些开发模型中,如果数据传递能够抽象成流
的形式,那么肯定就会有推
和拉
两种模式。
本篇文章主要是讲解 SDL 以推的形式播放音频文件。
[阅读全文]在前面的文章中,我们已经能够加载 YUV 帧并显示了,那是把一张图片转换成 YUV 帧得到的素材。
如果是一个 YUV 视频文件的话,那就是很多 YUV 帧连续在一起,既然能展示一帧,那肯定可以连续展示多帧。
接下来就要这样的操作。
[阅读全文]在前面的文章中已经完成了图片的加载和显示,接下来要做的就是加载 YUV 文件并显示。
[阅读全文]