-
【MJ】12_音频重采样
参考:【秒懂音视频开发】12_音频重采样本文是上面文章的摘要,只用于自己快速浏览.目录 补充 什么叫音频重采样 为什么需要音频重采样 命令行 编程补充一. 音频格式SDL中音频格式的表示解析: AUDIO_S16LSB AUDIO_U16LSB AUDIO_U16MSB AUDIO_S16MSB AUDIO_F32MSBS:有符号 U:无符号 F:浮点类型 16:16个Bit位32:32个Bit位 LSB(Least Signif...…
-
【MJ】11_播放WAV
参考:【秒懂音视频开发】11_播放WAV本文是上面文章的摘要,只用于自己快速浏览.目录 ffplay播放wav SDL播放wavffplay播放wav对于WAV文件来说,可以直接使用ffplay命令播放,而且不用像PCM那样增加额外的参数。因为WAV的文件头中已经包含了相关的音频参数信息。ffplay in.wavSDL播放wav 初始化子系统 加载WAV文件 打开音频设备 开始播放 回调函数 释放资源PS:对比SDL播放PCM的流程 行者常至,为者常成!…
-
【MJ】10_PCM转WAV
参考:【秒懂音视频开发】10_PCM转WAV本文是上面文章的摘要,只用于自己快速浏览.目录 WAV文件格式 命令行 编程播放器是无法直接播放PCM的,因为播放器并不知道PCM的采样率、声道数、位深度等参数。当PCM转成某种特定的音频文件格式后(比如转成WAV),就能够被播放器识别播放了。本文通过2种方式(命令行、编程)演示一下:如何将PCM转成WAV。WAV文件格式WAV、AVI文件都是基于RIFF标准的文件格式// WAV文件头(44字节)typedef struct { /...…
-
【MJ】09_播放PCM
参考:【秒懂音视频开发】09_播放PCM本文是上面文章的摘要,只用于自己快速浏览.目录 ffplay SDL 播放PCMffplay可以使用ffplay播放《音频录制02_编程》中录制好的PCM文件,测试一下是否录制成功。播放PCM需要指定相关参数: ar:采样率 ac:声道数 f:采样格式s16le:PCM signed 16-bit little-endian更多PCM的采样格式可以使用命令查看Windows:ffmpeg -formats | findstr PCMMac:ff...…
-
【MJ】08_音频录制02_编程
参考:【秒懂音视频开发】08_音频录制02_编程本文是上面文章的摘要,只用于自己快速浏览.目录 通过编程录音 多线程通过编程录音1. 权限申请在Mac平台,有2个注意点: 需要在Info.plist中添加麦克风的使用说明,申请麦克风的使用权限 使用Debug模式运行程序2. 常用的四个库// 设备相关API#include <libavdevice/avdevice.h>// 格式相关API#include <libavformat/avformat.h>/...…
-
【MJ】07_音频录制01_命令行
参考:【秒懂音视频开发】07_音频录制01_命令行本文是上面文章的摘要,只用于自己快速浏览.目录 命令简介 通过命令行录音命令简介ffmpegffmpeg的主要作用:对音视频进行编解码。ffmpeg arg1 arg2 -i arg3 arg4 arg5 arg1:全局参数 arg2:输入文件参数 arg3:输入文件 arg4:输出文件参数 arg5:输出文件ffprobeffprobe的主要作用:查看音视频的参数信息。ffprobe [OPTIONS] [INPUT_...…
-
【MJ】06_Qt开发基础
参考:【秒懂音视频开发】06_Qt开发基础本文是上面文章的摘要,只用于自己快速浏览.目录 .pro文件的配置 控件的基本使用 信号与槽.pro文件的配置一. 夸平台配置跨平台配置方式一:# windowswin32:INCLUDEPATH += F:/Dev/ffmpeg-4.3.2/includewin32:LIBS += -LF:/Dev/ffmpeg-4.3.2/lib \ -lavcodec \ -lavdevice \ ...…
-
【MJ】05_Mac开发环境搭建
参考:【秒懂音视频开发】05_Mac开发环境搭建本文是上面文章的摘要,只用于自己快速浏览.目录 FFmpeg Qt 开发FFmpeg一 安装在Mac环境中,直接使用Homebrew安装FFmpeg即可。通过brew install安装的软件会存放到/usr/local/Cellar目录中二 目录结构bin: 有编译好的可执行程序:ffmpeg、ffplay等,可以直接在命令行上使用,比如 ffplay xx.mp4:可以直接播放某个视频 ffmpeg -versio...…
-
【MJ】04_Windows开发环境搭建
参考:【秒懂音视频开发】04_Windows开发环境搭建本文是上面文章的摘要,只用于自己快速浏览.目录 FFmpeg Qt 开发初探FFmpeg一 介绍FFmpeg:跨平台的音视频开发库FF是Fast Forward(译为:快进、快速前进)的简称mpeg来源于Moving Picture Experts Group(简称:MPEG,译为:动态影像专家小组)MPEG是源自ISO与IEC等国际组织的工作小组MPEG的其中一项工作是:制定音视频相关的标准(比如压缩标准)二 目录结构bin:...…
-
【MJ】03_重识音频
参考:【秒懂音视频开发】03_重识音频本文是上面文章的摘要,只用于自己快速浏览.目录 PCM 音频的编码与解码 常见的音频编码和文件格式PCM录音的原理可以简单理解为:把声源的振动记录下来,需要时再让某个物体按照记录下来的振动规律去振动,就会产生与原来一样的声音。音频数字化:模拟信号 -> 数字信号(便于计算机处理和存储,二进制编码)将音频数字化的常见技术方案是脉冲编码调制(PCM,Pulse Code Modulation),主要过程是:采样 → 量化 → 编码。采样1.采样...…
-
【MJ】02_重识声音
参考:【秒懂音视频开发】02_重识声音本文是上面文章的摘要,只用于自己快速浏览.目录 产生 声波 音调 响度 音色 噪音 讨厌的声音产生声音(Sound),是由物体的振动产生的。一切正在发声的物体都在振动。声波声音与波有着相同的关键特征:可以通过介质传播能量,而不是传播介质本身。因此,我们也把声音称为声波声音的传播介质可以是气体、液体、固体,比如:2个人面对面交流时,声音是通过空气传播到对方耳中振幅从平衡位置到最大位移位置之间的距离,叫做振幅(Amplitude)。周期空气分...…
-
【MJ】01_移动通信技术的发展
参考:【秒懂音视频开发】01_移动通信技术的发展本文是上面文章的摘要,只用于自己快速浏览.目录 通讯技术的发展通讯技术的发展1G:语音通话2G:文字时代3G:图片时代4G:视频时代在线教育、短视频、直播、VLog5G:万物互联的时代音视频开发人才将会是绝大部分互联网公司的刚需涉及的技术分支多且庞大,如OpenGL、FFmpeg、WebRTC等 行者常至,为者常成!…
-
18、VideoToolBox框架
参考文章:音视频学习从零到整-实现视频编码目录 了解VideoToolBox 硬编码 框架介绍 视频编码步骤分解了解VideoToolBox 硬编码一、介绍在iOS4.0,苹果就已经支持硬编解码.但是硬编解码在当时属于私有API. 不提供给开发者使用在2014年的WWDC大会上,iOS 8.0 之后,苹果开放了硬编解码的API。就是VideoToolbox.framework的API。VideoToolbox 是一套纯C语言API。其中包含了很多C语言函数.VideoToolbo...…
-
17、H264编码-码流结构
参考文章:音视频学习从零到整-H264码流结构目录 H264结构图 H264编码分层 码流的基本概念 详解NAL UnitH264结构图H264视频压缩后会成为一个序列帧.帧里包含图像,图像分为很多片.每个片可以分为宏块.每个宏块由许多子块组成.这就是H264结构图.非常的情绪简单.H264结构中,一个视频图像编码后的数据叫做一帧,一帧由一个片(slice)或多个片组成,一个片由一个或多个宏块(MB)组成,一个宏块由16x16的yuv数据组成。宏块作为H264编码的基本单位场和...…
-
16、H264编码-编码原理
参考文章:音视频学习从零到整-H264编码原理目录 H264压缩技术 宏块划分与分组 组内宏块查找 帧内预测 DCT压缩 VLC压缩H264压缩技术 帧内预测压缩,解决的是空域数据冗余问题.什么是空域数据,就是这幅图里数据在宽高空间内包含了很多颜色,光亮.人的肉眼很难察觉的数据. 对于这些数据,我们可以认作冗余.直接压缩掉的. 帧间预测压缩,解决的是时域数据冗余问题.在我们之前举例说明过,摄像头在一段时间内所捕捉的数据没有较大的变化,我们针对这一时间内的相同的数据压缩掉...…
-
15、H264编码-基本概念
参考文章:音视频学习从零到整-H264基本概念目录 H264基本概念 GOF(Group of Frame)一组帧 SPS/PPS 视频花屏/卡顿原因 视频都有哪些视频编解码器H264基本概念一、I帧关键帧,采用帧内压缩技术.举个例子,如果摄像头对着你拍摄,1秒之内,实际你发生的变化是非常少的.1秒钟之内实际少很少有大幅度的变化.摄像机一般一秒钟会抓取几十帧的数据.比如像动画,就是25帧/s,一般视频文件都是在30帧/s左右.对于一些要求比较高的,对动作的精细度有要求,想要捕...…
-
14、H264编码-介绍
参考文章:音视频学习从零到整-关于视频的一些概念目录 简单介绍简单介绍H.264 是现在广泛采用的一种编码方式。关于 H.264 相关的概念,从大到小排序依次是:序列、图像、片组、片、NALU、宏块、亚宏块、块、像素。一、图像H.264 中,「图像」是个集合的概念,帧、顶场、底场都可以称为图像。一帧通常就是一幅完整的图像。当采集视频信号时,如果采用逐行扫描,则每次扫描得到的信号就是一副图像,也就是一帧。当采集视频信号时,如果采用隔行扫描(奇、偶数行),则扫描下来的一帧图像就被分为了两...…
-
13、编码解码概念
参考文章:音视频学习从零到整-视频H264编码目录 背景 编码 编码概念背景5G网络作为第5代的移动通信网络,它的网络峰值传播速度可1以达到10Gbps/s.这比4G的的传输速度快数百倍.举个例子,整部超高画质电影下载可在1秒钟之内下载完成.当然,随着5G技术的诞生,用在智能终端分享3D电影,游戏或者超高画质节目的时代已经毫无悬念的向我们走来.想必大家也逐步了解,国内外的互联网公司也已经布局音视频,3D技术方面的开发者招聘和相关产品研发.目前落地推广最普遍的就是直播类项目和小视频...…
-
12、视频的一些概念
参考文章:音视频学习从零到整-关于视频的一些概念目录 视频到底是什么? 视频文件格式 视频封装格式 视频编解码方式视频到底是什么?5G时代的到来,势必会对移动互联网的冲击将会是最刺激的.为何?一旦网络速度+设备的运行速度不受限制时,设想移动设备的暂时不可替代性是不是又更加的明显了.至少在目前为止,没有一款硬件可以替代手机设备在用户的地位.那我们来了解一下视频的常规知识.只有在了解视频的本质,你才有可能面对需求应对自如.一、视频的构成图像: 视频内容本身就是一帧一帧的图片构成.人...…
-
11、RGB与YUV.
参考文章:百度百科YUV 参考文章:理解YUV 参考文章:音视频学习从零到整-关于视频的一些概念 参考文章:YCbCr与RGB的转换目录 RGB YUVRGB我们开发场景中使用最多的应该是 RGB 模型在 RGB 模型中每种颜色需要 3 个数字,分别表示 R、G、B,比如 (255, 0, 0) 表示红色,通常一个数字占用 1 字节,那么表示一种颜色需要 24 bits。那么有没有更高效的颜色模型能够用更少的 bit 来表示颜色呢?YUV一、YUVYUV,是一种颜色编码方法。...…