好咖啡要和朋友一起品尝,好“模板”也要和同样喜欢它的人一起分享。 网站首页心得笔记
8. program渲染程序初始化给shader传递顶点和材质顶点数据~1
发布时间:2021-06-07 16:26:37作者:雪饮

顶点坐标的程序的渲染和材质坐标程序的渲染,主要区别于顶点坐标比材质坐标多了一个z轴。主要流程是创建渲染程序,加入对应着色器、链接程序、激活指定属性。具体实例:cpp/nati
详细信息>>7. shader初始化完成并编译顶点和片元着色器代码~1
发布时间:2021-06-07 15:18:23作者:雪饮

这次主要是封装一个初始化方法对之前创建的片元着色器和顶点着色器进行初始化。大多数代码都是约定俗成的,没有什么可说的。然而对于一个头文件不得不说。可以看到这个错误,G
详细信息>>6. yuv420p片元着色器glsl编写~1
发布时间:2021-06-06 15:52:56作者:雪饮

YUV轉RGB,基本上都是一些固定的程序,主要依賴的是YUV轉RGB的公式。這裏有兩個公式,而這裏我們使用第二個公式,直接計算乘以一個矩陣。那麽具體實現如cpp/native-lib.cpp:#inclu
详细信息>>5. 顶点着色器代码glsl代码编写~1
发布时间:2021-06-06 11:38:54作者:雪饮

繼使用NDKC++完成EGL、display、surface、contex配置和初始化之後。這次我們需要完成材質坐標信息到輸出的材質坐標信息的轉換,也就是要完成一個頂點著色器的方法編寫。這裏
详细信息>>3. 使用NDKC++完成EGL、display、surface、contex配置和初始化~1
发布时间:2021-06-05 20:51:12作者:雪饮

繼上次shader项目配置和创建完成了java部分的代码之後。接下來我們來完成cpp部分的代碼。EGLDisplay 是一个关联系统物理屏幕的通用数据类型,表示显示设备句柄,也可以认为是
详细信息>>2. testopengles_shader项目配置和创建_完成java部分代码~1
发布时间:2021-06-05 15:02:35作者:雪饮

這第一步我們要準備一個yuv數據。C:\Users\Administrator>cd D:\software\ffmpegwin\ffmpeg\ffmpeg-20180605-b748772-win64-static\binC:\Users\Administrator>d:D:\softw
详细信息>>5. 读取pcm音频文件并使用OpenSL播放~1
发布时间:2021-06-04 22:13:10作者:雪饮

上篇完成了混音器、配置了音頻信息。這次我們就能正式的進行pcm音頻的播放了。主要用到的就是OpenSL ES中具体的接口类 播放器:SLPlayItf。然後通過隊列不斷的從音頻流中去
详细信息>>4. 配置OpenSL的PCM音频输入格式~1
发布时间:2021-06-04 16:14:27作者:雪饮

創建混音器之後,就可以進行下一步配置音頻信息了,感覺夏曹俊老師在這裏節奏就有點滿了,擠牙膏一樣。。。cpp/native-lib.cpp:#include <jni.h>
#include <string>
#include <S
3. 完成OpenSLES混音器CreateOutputMix初始化~1
发布时间:2021-06-04 15:43:48作者:雪饮

上一步創建了OpenSLES下的SLEngineItf引擎,接下來第二步就是創建混音器。cpp/native-lib.cpp:#include <jni.h>
#include <string>
#include <SLES/OpenSLES.h>
#include <S
2. 创建OpenSLES音频播放测试项目并完成引擎初始化~1
发布时间:2021-06-04 15:07:27作者:雪饮

上篇中實現了安卓视频播放窗口去掉标题栏、全屏、横屏等的處理並在雷電模擬器4中進行了測試。但是目前來説視頻還有最致命的問題就是沒有聲音,雖然聲音也解碼了。但是這裏音
详细信息>>7. 安卓视频播放窗口去掉标题栏、全屏、横屏~1
发布时间:2021-06-04 10:59:59作者:雪饮

上篇進行了大幅的代碼改動,主要實現了視頻的播放,在測試目標雷電模擬器4中進行測試的。目前來説感覺對於不同的mp4文件好像還是有一些問題。畢竟mp4格式本來就是一種非常複雜
详细信息>>6. 使用NDK通过GLSurfaceView双缓冲空间复制完成视频的播放~1
发布时间:2021-06-03 21:44:34作者:雪饮

本篇文章呢我個人認爲能值1000人民幣。怎麽說呢,花了好久時間整理的。查詢了很多的資料篇章。上篇咱們不是介紹了音頻的重采樣。這次主要就是實現視頻的播放了。在安卓中已
详细信息>>4. swr_init音频重采样上下文初始化和swr_convert音频重采样代码示例~1
发布时间:2021-06-02 17:36:44作者:雪饮

音頻重采樣的相關函數依賴于libswresample.so,依賴於libswresample/swresample.h頭文件。所以cpp/CMakeLists.txt需要新增添加這個庫并且設置這個庫的屬性最後將這個庫添加
详细信息>>2. sws_scale像素格式转换代码演示~1
发布时间:2021-06-02 15:24:57作者:雪饮

這次要實現像素格式的轉換,將解碼的視頻幀轉換為常用的RGBA像素格式。這裏僅僅實現對視頻的像素格式轉變。像素格式的相关函数包含在 libswscale.so 库中。所以cpp/CMakeLis
详细信息>>7. ffmpeg调用MediaCodec实现硬解码代码演示~1
发布时间:2021-06-01 18:42:28作者:雪饮

上篇中實現了視頻軟解碼性能的衡量測試。一直以來都還沒有實現過硬解碼。那麽硬解碼不僅僅要把我們前面獲取硬解碼器的代碼放開注釋,由於硬解碼還涉及到在c中調用java,所以需
详细信息>>6. 音视频解码性能测试neon单线程和八线程解码测试代码~1
发布时间:2021-06-01 17:33:12作者:雪饮

上篇完成了音視頻多綫程解碼,這次就給該實例增加性能測試的功能。這裏衡量性能指標自然是每單位時間内能夠解碼的幀數。所以就要實現在解碼過程中實現時間的統計,並在某個周
详细信息>>5. 音视频多线程解码代码演示~1
发布时间:2021-06-01 15:32:44作者:雪饮

上篇完成了音視頻解碼器的打開。那麽這篇就正式來完成音視頻的解碼。解碼的主要流程就是通過av_frame_alloc獲取到幀數據。這些數據可能有音頻幀,也可能有視頻幀。要區分音
详细信息>>2. 打开音频解码器上下文~1
发布时间:2021-06-01 11:08:41作者:雪饮

上篇實現了AVCodecContext解码上下文初始化和视频解码器打开。這次將會讓音頻解碼器也打開,讓視頻解碼器和音頻解碼器都打開。原理都差不多,直接複製視頻解碼器打開的代碼修
详细信息>>1. AVCodecContext解码上下文初始化讲解和视频解码器打开的代码演示~1
发布时间:2021-05-31 21:55:13作者:雪饮

上篇中,咱们实现了帧信息帧数据的读取。那么这次咱们将会来实现打开一个软解码器。那么涉及到了解码:(1)我们为了方便就需要执行avcodec_register_all函数。只有调用了该函数
详细信息>>12. av_read_frame和av_seek_frame代码示例并分析内存占用和清理情况~1
发布时间:2021-05-31 18:11:39作者:雪饮

接著上篇完成了獲取音視頻流索引之後,這次來瞭解下幀數據的讀寫以及快進操作。幀數據讀取首先必須要有av_packet_alloc來開闢一個結構體大小的内存,然後通過av_read_frame每
详细信息>>8. 通过av_find_best_stream获取音视频流索引~1
发布时间:2021-05-31 14:57:36作者:雪饮

日志貓沒有日志輸出問題日志貓有時候有日志有時候沒有日志,這什麽情況?是不是usb調試鏈接太久了就會不發送日志了?空空如也實際上也還真有可能是這樣,此時,我在命令行執行&rdquo
详细信息>>7. 通过遍历获取AVStream音视频流信息并打印参数~1
发布时间:2021-05-31 14:15:01作者:雪饮

调回usb调试方式前面为了调试方便,使用了usb网络調試模式,但是此模式有一個缺點,必須電腦和手機在一個局域網且必須是同一個衝突域。那麽這樣就會帶來一個新的問題,比如今天遇
详细信息>>5. avformat_find_stream_info探测获取封装上下文的格式信息~1
发布时间:2021-05-30 18:28:47作者:雪饮

對於不同格式的視頻文件,要獲取其持續時間,也就是時長是需要處理不同的兼容性的。比如今天這裏要處理的就是mp4和flv。這裏的視頻原文件flv是通過之前我們用的那個1080.mp4經
详细信息>>4. AVFormatContext结构分析和清理代码示例~1
发布时间:2021-05-30 16:12:15作者:雪饮

接著上文,在上文中我們以64位cpu架構給咱們的安卓項目增加了對應動態鏈接庫的支持,並成功的以一個打開視頻文件的實例。那麽本文简单分析FFmpeg的avformat_close_input()函数
详细信息>>3. avformat_open_input函数详解并示例打开mp4文件~1
发布时间:2021-05-30 10:37:10作者:雪饮

Ffmpeg的avformat_open_input函数用于打开多媒体数据并且获取一些信息。它的声明位于libavformat/avformat.h这里就以这个函数为例,实现打开一个视频文件那么我们就需要用到
详细信息>>