好咖啡要和朋友一起品尝,好“模板”也要和同样喜欢它的人一起分享。 网站首页心得笔记
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这里就以这个函数为例,实现打开一个视频文件那么我们就需要用到
详细信息>>10. JNI和c传递文件路径并设置app的读写权限~1
发布时间:2021-05-28 17:25:41作者:雪饮
自動創建jni方法在java中創建一個native方法,然後鼠標懸停到方法名時候就會自動根據聲明的方法定義在jni中創建對應方法然後自己再根據自己的情況修修改改增加一些自己的業
详细信息>>9. 创建支持ffmpeg的AndroidStudio项目并调用其接口在界面显示库配置信息~1
发布时间:2021-05-28 14:51:30作者:雪饮
建立安卓項目建立一個ndk的安卓項目以安卓4.1爲例以上篇中編譯出來的neon方式的這個ffmpeg輸出爲例。處理頭文件\root\ff\ffmpeg-3.4\android\armv7-a-neon-hard\include目
详细信息>>6. ffmpeg通用编译bash脚本编写、硬解码、neon、多线程解码性能对比~1
发布时间:2021-05-27 15:12:02作者:雪饮
完成ffmpeg的安裝上篇中最後編譯形成了make的安裝文件,那麽最後要完成安裝的時候只需要make install就可以完成安裝了。完成安裝后,安裝之後的文件生成在目錄如:\root\ff\ffmp
详细信息>>5. 在ubuntu下交叉编译ffmpeg的android版本库~1
发布时间:2021-05-27 14:04:06作者:雪饮
接著上篇,這裏來進行編譯使形成ffmpeg的make安裝文件首先這裏還是以root身份來做吧,畢竟如果有什麽權限需要,root必定是全滿足的然後這裏先解壓ffmpegroot@ubuntu:~/ff# tar -
详细信息>>4. ffmpeg源码下载在android下的编译参数分析讲解~1
发布时间:2021-05-26 17:38:02作者:雪饮
安裝git因爲接下來需要用git去獲取ffmpeg源代碼的最新版root@ubuntu:~/ff# apt-get install gitReading package lists... DoneBuilding dependency treeReading state inf
详细信息>>3. ubuntu虚拟机及常用工具安装并配置samba共享目录~1
发布时间:2021-05-26 15:27:36作者:雪饮
安裝ubuntu系統這裏所用的安裝鏡像是ubuntu-16.04.3-server-amd64.iso下載地址:http://old-releases.ubuntu.com/releases/16.04.3/ubuntu-16.04.3-server-amd64.iso這裏需
详细信息>>5.1 010第一个c++安卓程序testlog8
发布时间:2021-05-25 15:25:41作者:雪饮
如何在Jni中使用android Log。這裏我們可以將日志貓的功能引入到我們的c++中。這裏仍然以我們新建的Native C++項目中默認生成的native-lib.cpp為例我們需要引入安卓日志頭
详细信息>>5. 安卓模拟器安装和第一个c++安卓程序编译运行~1
发布时间:2021-05-25 14:51:31作者:雪饮
在前面我們新建的Native C++項目成功后自動產生MainActivity.java(下面這個是自己手動添加了注釋的):package com.example.ndktest;
import androidx.appcompat.app.AppCom
4. AndroidNDK工具目录功能分析~1
发布时间:2021-05-25 11:34:26作者:雪饮
我们配置好NDK环境后,基本可以看到其目录结构如下图:下面我们来分析一下NDK根目录的结构:· ndk-build:该Shell脚本是Android NDK构建系统的起始点,一般在项目中
详细信息>>3. Android SDK目录内容分析~1
发布时间:2021-05-24 21:45:45作者:雪饮
Android SDK 目录和作用的分析详解1、add-ons这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。 2、docs这里面是Android SDKAPI参考
详细信息>>2. AndroidStudio开发工具安装使用讲解~1
发布时间:2021-05-24 18:42:50作者:雪饮
首先要保證NDK和Cmake都要有安裝新建項目時候要選擇c++模板c++標準要選擇c++ 11的標準建立完成后,如果沒有問題,至少是有這個CMakeLists.txt文件的,在app\src\main\cpp路徑中
详细信息>>小甲魚c++快速入門教程學習筆記
发布时间:2021-05-23 11:00:49作者:雪饮
(3665)第二讲 从一个小程序说起(3666)第三讲 从一个小程序说起(2)(3667)第4讲-从另一个小程序接着说(3668)第五讲 输出输入小结(3669)第6讲-函数的重载(3670)第七讲 复杂的数
详细信息>>第40讲-命名空间和模块化编程2
发布时间:2021-05-22 20:45:21作者:雪饮
使用头文件: 在创建了头文件之后,只要把它的文件名用双引号括起来写在如下所示的指令里就可以导入它:#include "test.h" 如果没有给出路径名,编译器将到当前子目录以及
详细信息>>