星陨的博客

【喜大普奔】域名终于备案通过啦

前段时间博客网站一直无法访问,还有不少朋友特意发微信告诉我,感谢大家的好意了!

网站是:https://glumes.com

其实是博客域名在备案啦。

之前博客搭建用的是 Github Pages 方案,访问速度一直被人诟病。

上个月就决定把服务器换成阿里云了,访问速度如火箭般提升🚀🚀🚀~~

[Read More]
Life 

Shader 优化 | OpenGL 绘制网格效果

前几天发布了这样一篇文章:

KodeLife | Shader 实时编辑预览的强大工具使用实践

除了介绍 KodeLife 的使用之外,还附带了一个 Shader 绘制网格效果的代码。

把这篇文章发到技术群里,随机就有大佬指出不足之处,提示说代码还可以进一步优化,并且提供了源码学习。

可见加入一个高质量的技术群是多么重要,哪怕平时不说话,围观大佬们聊天都能学到很多。

现在加入还来得及,尚有余位,详情点击如下链接:

移动端技术交流喊你入群啦~~~

[Read More]
OpenGL 

KodeLife | Shader 实时编辑预览的强大工具使用实践

经常有朋友在群里面问想学习 Shader 有什么工具可以推荐?

今天它来了~~~

推荐一款强大的 Shader 实时编辑预览的工具 —— KodeLife

对,它的名字就叫做 KodeLife ,可别看成 KobeLife 了,一个字母之差完全就是两个概念。

KodeLife 的官网地址如下:

https://hexler.net/products/kodelife

贴一张主页封面图:

有需要的同学可以去官网下载安装,它是需要购买 License 的,不过可以免费使用两个月。


[Read More]
OpenGL 

【音视频连载-011】第二季 FFmpeg 一层一层获取文件信息

本篇文章主要是讲解如何通过 FFmpeg 代码来获取文件信息。

首先准备一个文件,用命令行来查看它的基本信息。

文件地址如下:

https://github.com/glumes/av-beginner/blob/master/resource/video/video-avi-320x320.avi

这个文件很有意思,它的内容是一个时钟,每隔一秒,秒针都会跳动,同时还会发出滴答的声音,很方便后续做音视频同步处理。

[Read More]
FFmpeg 

推荐几个堪称教科书级别的 Android 音视频入门项目

直播 中有提到几个不错的开源项目,这里再重点推荐一下:

目前,市面上关于音视频学习的相关书籍并不多,而且即使看了书籍学了理论,最终还是要回归到代码上来。

毕竟 IT 行业实践性要求高,强调动手能力,音视频这方面就更得多操作和探索了。

推荐下面几个项目会各有侧重,分别涵盖了 Android 音视频录制 API 、OpenGL 渲染和综合运用的例子。

[Read More]

【音视频连载-010】第二季 FFmpeg 日志打印

音视频学习入门技术文章连载:

音视频连载系列已经停更一段时间,再这么停下去估计就要掉粉了,捡起来继续更新~~~

接下来主要是讲解 FFmpeg 相关的内容,比如这篇就从简单的日志打印开始说起。

[Read More]
FFmpeg 

【音视频连载-008】基础学习篇-SDL 播放 PCM 音频文件(下)

音视频学习入门技术文章连载:

接上篇 SDL 播放 PCM 音频文件,已经实现了 的模式去播放,接下来看看 的模式如何实现。

[Read More]
SDL 

【音视频连载-007】基础学习篇-SDL 播放 PCM 音频文件(上)

音视频学习入门技术文章连载:

在前面的文章中已经能够利用 SDL 去播放 YUV 视频文件了,接下来要通过 SDL 去播放 PCM 音频文件。

SDL 播放音频文件有两种方法,可以理解成 推(push)拉(pull)两种模式。

就是我们主动向设备缓冲区填充 Buffer ,而 就是由设备拉取 Buffer 填充到缓冲区。

在一些开发模型中,如果数据传递能够抽象成的形式,那么肯定就会有两种模式。

本篇文章主要是讲解 SDL 以推的形式播放音频文件。

[Read More]
SDL 

【音视频连载-006】基础学习篇-SDL 播放 YUV 视频文件

音视频学习入门技术文章连载:

在前面的文章中,我们已经能够加载 YUV 帧并显示了,那是把一张图片转换成 YUV 帧得到的素材。

如果是一个 YUV 视频文件的话,那就是很多 YUV 帧连续在一起,既然能展示一帧,那肯定可以连续展示多帧。

接下来就要这样的操作。

YUV 视频文件素材

还是要准备一下 YUV 视频素材,不用网上到处去下载,用 FFmpeg 命令将 mp4 文件转换成 yuv 文件就好了。

ffmpeg -i file_name.mp4 filename.yuv

命令很简单,其中 file_name 是文件的名称,使用时记得替换。

由于生成的 yuv 文件是未经过压缩的,文件过大不方便传 Github ,所以在程序运行前要自己去生成一下文件。

同样,也可以用 ffplay 验证一下 yuv 文件转换是否正确。

ffplay -f rawvideo -video_size  100x100 yuv_filename.yuv

以上命令会打开一个窗口去播放视频内容,如果播放的和原来 mp4 文件内容一致,说明转换是成功的,YUV 文件可用。

[Read More]
SDL 

【音视频连载-005】基础学习篇-SDL 加载 YUV 文件并显示

音视频学习入门技术文章连载:

在前面的文章中已经完成了图片的加载和显示,接下来要做的就是加载 YUV 文件并显示。

YUV 文件素材准备

做这个功能点比较麻烦的是素材问题,上哪去找一个 YUV 文件出来,谷歌和百度搜索都不好使,其实直接使用 FFmpeg 生成文件就好了。

使用如下命令将图片文件转成 YUV 文件:

// 把 filename 改为图片对应的文件名
ffmpeg -i image_filename.png -pix_fmt yuv420p yuv_filename.yuv

在这里将 YUV 文件格式固定为 YUV420P 了,如果你对 YUV 格式不懂的话,强烈建议看看我之前写过的文章,图文并茂,清晰易懂,使用谷歌搜索 YUV 关键字,搜索结果排名前五的必有我这篇文章。

一文读懂 YUV 的采样与格式

顺便可以使用 FFplay 验证生成的 YUV 文件是否有效,使用如下命令:

// 100x100 代表图片的宽高,这里只是举例,换成实际的宽高
// 把 filename 改为 YUV 对应的文件名
ffplay -f rawvideo -video_size  100x100 yuv_filename.yuv

以上命令会打开一个窗口去展示图片,如果该图片和未转换成 YUV 的图片内容一致,那说明把图片转换成 YUV 格式文件是成功了,这样就有了实验素材。

[Read More]
SDL 

【音视频连载-004】基础学习篇-SDL 加载图片并显示

音视频学习入门技术文章连载:

在前面的文章中已经介绍完 SDL 显示窗口、消息循环和事件响应这些基础内容,有了这些基础就可以进行功能性开发了。

本篇的主要内容是利用 SDL 加载并显示一张图片,然后再去进行更多的音视频操作。

[Read More]
SDL 

【音视频连载-003】基础学习篇-SDL 消息循环和事件响应

音视频学习入门技术文章连载:

在前面的文章中已经创建了一个 SDL 窗口并且显示指定的颜色。

为了让窗口显示出来,在程序中写了一个死循环,这几行代码就是 SDL 消息循环和事件响应的核心缩影了。

    SDL_Event windowEvent;
    while (true){
        if (SDL_PollEvent(&windowEvent)){
            if (SDL_QUIT == windowEvent.type){
                break;
            }
        }
    }
[Read More]
SDL