c++基础
文章平均质量分 62
blueberry_mu
不积跬步,无以至千里。不积小流,无以成江海。
展开
-
使用OpenSL直接播放mp3
使用OpenSL直接播放mp3前言通过使用OpenSL来播放一个mp3文件来学习openSL的使用方式。设计在android平台播放mp3方式有多种方式入使用MediaPlayer、AudioTrack、OpenSL、oboe等。根据使用MediaPlayer,AudioTrack的经验一个播放器需要有的基础功能有加载数据、开始、暂停、停止、销毁等。我们可以设计一个播放器它具有开始播放、暂停、停止、调整进度等方式。那么我们需要设计一个类它应该支持以下功能:初始化:初始化SLEngine、构建原创 2022-04-10 15:06:13 · 5342 阅读 · 0 评论 -
使用sws_scale转换视频、使用swr_convert转换音频
使用Sws转换视频、使用swr_convert转换音频环境➜ ~ ffmpeg -versionffmpeg version N-105035-g617452ce2c Copyright (c) 2000-2021 the FFmpeg developersbuilt with Apple clang version 12.0.5 (clang-1205.0.22.11)configuration: --enable-gpl --enable-filter=aresample --enable-原创 2022-03-12 15:56:01 · 1233 阅读 · 0 评论 -
使用ffmpeg解析mp4文件得到音频和视频数据
使用ffmpeg分离并解码mp4文件中的音频/视频流原创 2022-02-22 08:24:35 · 5836 阅读 · 1 评论 -
使用Lame编译音频文件
资源准备https://lame.sourceforge.io/download.phphttps://sourceforge.net/projects/lame/files/lame/下载:lame-3.100编译lame3在现在的源码根目录下配置./configure --host="x86_64"编译make安装make install默认会被安装在/usr/local目录下。lame安装之后并不存在pkgconfig配置,所有我们使用CMakeLists.t原创 2021-12-18 21:23:38 · 1601 阅读 · 0 评论 -
使用Libvpx编码视频
使用X265编码视频环境准备使用git下载libvpx源码https://chromium.googlesource.com/webm/libvpx/如果电脑之前没有安装过 yasm,nasm 可以使用 brew 安装一下 brew install yasm brew install nasm进入到工程根目录下编译./configure --enable-shared配置完成之后makemake install命令行使用如vpxenc --cod原创 2021-12-09 08:42:54 · 1077 阅读 · 0 评论 -
使用X265编码视频
使用X265编码视频环境准备使用hg 下载x264源码https://www.videolan.org/developers/x265.html如果电脑之前没有安装过 hg,yasm,nasm 可以使用 brew 安装一下 brew install hg brew install yasm brew install nasm进入到工程 …/x265/build/linux 目录下编译即便是Mac,也可以在这个目录下进行编译(我使用xcode编译,在安装阶段原创 2021-12-09 08:28:59 · 4068 阅读 · 0 评论 -
使用X264编码视频
使用X264编码视频环境准备使用git clone 下载x264源码https://www.videolan.org/developers/x264.html如果电脑之前没有安装过 yasm,nasm 可以使用 brew 安装一下 brew install yasm brew install nasm进入到工程根目录下编译 // 配置开启动态库,也可以不开启,默认MAC会安装在/usr/local目录下,其他可以使用./confiure --help 查看帮助 1原创 2021-12-09 08:10:41 · 673 阅读 · 0 评论 -
c++类型转换运算符
C++中有4个类型转换运算符,使装换过程更规范dynamic_cast;const_cast;static_cast;reinterpret_cast;一、dynamic_cast 该运算符我在之前的文章中已经介绍过了 http://blog.csdn.net/a992036795/article/details/51459139 总之,该运算符的语法如下:dynamic_cast原创 2016-05-20 14:03:44 · 565 阅读 · 0 评论 -
C++模板(一) ----函数模板
一、函数模板 1、先看一个简单的模板函数定义/* *在标准c++98添加typename关键字之前,使用class 来创建模板,之后用typename 替代了class * c++98 之前的模板定义定义为: template void fun(){...} */template void Swap(AnyType &a, AnyType &b) { AnyType原创 2016-05-13 10:59:35 · 687 阅读 · 0 评论 -
c++模板(二)---------类模板
二、类模板原创 2016-05-13 14:19:57 · 547 阅读 · 0 评论 -
c++友元
尽管友元被授予从外部访问类的私有部分的权限,但他们并不与面向对象的编程思想相悖;相反他提高了公共接口的灵活性。一、友元类 友元声明可以位于公有、私有活保护部分、其所在位置无关紧要 我直接贴出一个摘自< c++ primer plus >的例子来演示 c++ 友元类 其中 Remote 为 Tv的友元类。 Tv.h#ifndef TV_H_#define TV_H_/*一个类 电视 */原创 2016-05-18 16:05:32 · 471 阅读 · 0 评论 -
c++ 异常
程序有时会遇到运行阶段错误,导致程序无法正常执行下去。c++异常为处理这种情况提供了一种功能强大的而灵活的工具。异常是相对比较新的C++功能,有些老编译器可能没有实现。另外,有些编译器默认关闭这种特性,我们可能需要使用编译器选项来启用它。 一、异常机制的使用 异常提供了将控制程序的一个部分传递到另一部分的途径。对异常的处理有3个组成部分:引发异常使用处理程序捕获异常 使用try块 示例原创 2016-05-19 14:16:30 · 644 阅读 · 0 评论 -
RTTI
RTTI是运行阶段类型识别(Runtime Type Identification)的简称。这是新添加到c++中的特性之一,很多老式实现不支持。另一些实现可能包含开关RTTI的编译器设置。RTTI旨在为程序在运行阶段确定对象类型提供一种标准方式。很多类库已经成为其父类对象提供了实现这种方式的功能。但由于c++内部并不支持,因此各个厂商的机制通常互不兼容。创建一种RTTI语言标准将使得未来的库能够彼此原创 2016-05-20 09:42:54 · 1457 阅读 · 0 评论