星陨的博客

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

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

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

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

[Read More]

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

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

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

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

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

【音视频连载-001】基础学习篇- SDL 介绍以及工程配置

技术开发故事会连载

这是音视频基础学习系列的第一篇文章,主要讲解 SDL 是什么以及为什么要用到它,看似和音视频没啥卵关系,其实必不可少。

SDL 简介

SDL 是 “Simple DirectMedia Layer” 的缩写,它是一个跨平台的多媒体库,可以在 Mac、Windows、Linux 以及更多的系统上运行。

SDL 提供了统一的针对音频、视频、键盘、鼠标、控制杆以及 3D 硬件的低级别访问接口,我们利用这些接口就能在不同系统上播放出音频、视频内容,而无需懂得系统特定的音视频接口。

这种跨平台特性和 OpenGL 是一样的,差别在与 OpenGL 是真·跨平台,它是 Khronos Group 组织开发维护的一个接口规范,具体的实现是由驱动厂商完成。而 SDL 是把要兼容平台的相关接口都给封装好了,然后才对外提供统一的接口。

由此可见,高下立判。一个跨平台是写了接口就行,不管实现;另一个是写好了实现,才能跨平台(貌似跑题了)。

由于 SDL 的跨平台特性,在后续学习 FFmpeg 时就可以利用 SDL 进行音视频的播放操作,而不用像在 Android 平台上搞 FFmpeg 还得编译 so、写 JNI 、写界面那么麻烦,另外 ffplay 源码里面也是用的 SDL 进行播放的,可以从中进行借鉴。

[Read More]

LearnOpenGL 源码在 MAC 上的编译与调试

学习 OpenGL ,相信肯定有不少人看过这个网站:

https://learnopengl.com/

https://learnopengl.com/

这是它的英文原版网站,后来又有了不同语言的翻译版本,对应中文就是:

https://learnopengl-cn.github.io/

这两个网站对于学习 OpenGL 帮助非常大,既可以用作入门的教材,也可以作为工具书,后续进行查漏补缺。

并且它的内容很全面,除了 OpenGL 基础知识、坐标系统、纹理、Shader、模型加载等,还有高级光照、PBR 等渲染技巧,这些在渲染引擎的开发中都是会用到的,后面会继续和大家分享。

[Read More]

2019 年终总结与回顾

时光荏苒,岁月如梭。

又到了回顾过去,展望未来的(chui)高(niu)光(bi)时刻了~~

职业回顾

去年年底准备跑路,然后年前面试,拿了头条的 offer,年后就入职了~~~

应聘的岗位是 Android-多媒体开发工程师,具体招聘岗位见官网:多媒体平台研发工程师-Android — 抖音火山

工作内容简单说就是做音视频 SDK,支持头条的一些业务。

[Read More]

Android NDK 开发的免费技术视频来啦~~

简介

前段时间在慕课网上体验了一把做讲师的感觉,录制了一套免费技术视频~~

如下图所示:

-2019-12-15-1.21.42.png

在慕课网上通过如下路径就可以找到啦

免费课程 -> 课程 -> 移动开发 -> Android -> Android CMake 以及 NDK 实践基础

[Read More]

OpenGL 实现视频编辑中的转场效果

转场介绍

转场效果是什么?

转场效果,简单来说就是两段视频之间的衔接过渡效果。

现在拍摄 vlog 的玩家越来越多,要是视频没有一两个炫酷的转场效果,都不好意思拿出来炫酷了。

那么如何在视频编辑软件中实现转场效果呢?

这里提供使用 OpenGL 实现视频转场的一个小示例,我们可以通过自定义 GLSL 来实现不同的转场效果。

以在 Android 平台上作为演示,但其实不管是 Android 还是 iOS,实现的原理都是一样的。

首先要有两段视频,视频 A 和视频 B,先播放视频 A 后播放视频 B,中间有一段过程称为 C ,C 就是视频 A、B 做转场动画的时间段。

如下所示:

transition_model.jpg

播放器按照时间顺序,从 A -> C -> B 的播放,这样就有了转场的效果。

[Read More]

OpenGL 实践之贝塞尔曲线绘制

说到贝塞尔曲线,大家肯定都不陌生,网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图。

以下两个是比较经典的动图了。

二阶贝塞尔曲线:

三阶贝塞尔曲线:


由于在工作中经常要和贝塞尔曲线打交道,所以简单说一下自己的理解:

[Read More]

图像库 libjpeg-turbo 编译与实践

在之前的文章中已经陆续介绍了 stb_image、libpng 的使用,相关链接如下:

简单易用的图像解码库介绍 —— stb_image

https://glumes.com/post/android/stb-image-introduce/

图像库 libpng 编译与实践

https://glumes.com/post/opengl/libpng-compile-and-practice/

而今天的主题就是 libjpeg-turbo 。

它的官网地址如下:

https://libjpeg-turbo.org/

它的 github 地址如下:

https://github.com/libjpeg-turbo/libjpeg-turbo

[Read More]