随笔分类 -  秒懂音视频开发

零基础都能看懂的音视频开发教程
摘要:从本节开始,正式开启流媒体相关的内容。 流媒体 基本概念 流媒体(Streaming media),也叫做:流式媒体。 是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术与过程 此技术使得数据包可以像流水一样发送,如果不使用此技术,就必须得先下载整个媒体 阅读全文
posted @ 2021-07-30 21:11 M了个J 阅读(5917) 评论(6) 推荐(5) 编辑
摘要:本文的主要内容:对H.264数据进行解码(解压缩)。 如果是命令行的操作,非常简单。 ffmpeg -c:v h264 -i in.h264 out.yuv # -c:v h264是指定使用h264作为解码器 接下来主要讲解如何通过代码的方式解码H.264数据,用到了avcodec、avutil两个 阅读全文
posted @ 2021-05-25 21:31 M了个J 阅读(4021) 评论(1) 推荐(1) 编辑
摘要:本文的主要内容:使用H.264编码对YUV视频进行压缩。 如果是命令行的操作,非常简单。 ffmpeg -s 640x480 -pix_fmt yuv420p -i in.yuv -c:v libx264 out.h264 # -c:v libx264是指定使用libx264作为编码器 接下来主要讲 阅读全文
posted @ 2021-05-25 21:26 M了个J 阅读(3295) 评论(2) 推荐(1) 编辑
摘要:本文主要介绍一种非常流行的视频编码:H.264。 计算一下:10秒钟1080p(1920x1080)、30fps的YUV420P原始视频,需要占用多大的存储空间? (10 * 30) * (1920 * 1080) * 1.5 = 933120000字节 ≈ 889.89MB 可以看得出来,原始视频 阅读全文
posted @ 2021-05-25 20:09 M了个J 阅读(5804) 评论(3) 推荐(0) 编辑
摘要:文本的主要内容是:使用SDL显示一张YUV图片,整体过程跟《显示BMP图片》比较像。 宏定义 #include <SDL2/SDL.h> #include <QDebug> #define END(judge, func) \ if (judge) { \ qDebug() << #func << 阅读全文
posted @ 2021-05-25 20:06 M了个J 阅读(3095) 评论(1) 推荐(0) 编辑
摘要:文本的主要内容是:使用SDL显示一张BMP图片,算是为后面的《显示YUV图片》做准备。 为什么是显示BMP图片?而不是显示JPG或PNG图片? 因为SDL内置了加载BMP的API,使用起来会更加简单,便于初学者学习使用SDL 如果想要轻松加载JPG、PNG等其他格式的图片,可以使用第三方库:SDL_ 阅读全文
posted @ 2021-05-06 09:56 M了个J 阅读(3256) 评论(3) 推荐(2) 编辑
摘要:本文的主要内容:演示如何通过编程采集摄像头的视频数据。 整体的流程跟《音频录制02_编程》类似。 依赖库 需要依赖4个库。 extern "C" { #include <libavdevice/avdevice.h> #include <libavformat/avformat.h> #includ 阅读全文
posted @ 2021-04-30 00:22 M了个J 阅读(3023) 评论(1) 推荐(0) 编辑
摘要:本文的主要内容:演示如何利用命令行采集摄像头的视频数据。 阅读本文之前,建议先阅读《音频录制01_命令行》对常用命令作一个基本认识。 Windows dshow支持的设备 ffmpeg -f dshow -list_devices true -i dummy 输出结果大致如下所示。 DirectSh 阅读全文
posted @ 2021-04-29 18:45 M了个J 阅读(3977) 评论(2) 推荐(2) 编辑
摘要:本文的主角是多媒体领域非常重要的一个概念:YUV。 简介 YUV,是一种颜色编码方法,跟RGB是同一个级别的概念,广泛应用于多媒体领域中。 也就是说,图像中每1个像素的颜色信息,除了可以用RGB的方式表示,也可以用YUV的方式表示。 vs RGB 对比RGB,YUV有哪些不同和优势呢? 体积更小 如 阅读全文
posted @ 2021-04-27 17:17 M了个J 阅读(7147) 评论(3) 推荐(10) 编辑
摘要:要想学好音视频,首先得先好好研究一下图片。 像素 下图的分辨率是60x50。 用Photoshop放大图片上百倍后,可以清晰地看到图片由若干个方形的色块组成,每一个方形的色块被称为:像素(Pixel)。这张图片的每一行都有60个像素,共50行,总共60*50=3000个像素。 总结一下: 每张图片都 阅读全文
posted @ 2021-04-15 11:02 M了个J 阅读(5979) 评论(11) 推荐(21) 编辑
摘要:本文主要讲解:如何将AAC编码后的数据解码成PCM。 命令行 用法非常简单: ffmpeg -c:a libfdk_aac -i in.aac -f s16le out.pcm -c:a libfdk_aac 使用fdk-aac解码器 需要注意的是:这个参数要写在aac文件那边,也就是属于输入参数 阅读全文
posted @ 2021-04-12 22:29 M了个J 阅读(3921) 评论(1) 推荐(2) 编辑
摘要:本文将分别通过命令行、编程2种方式进行AAC编码实战,使用的编码库是libfdk_aac。 要求 fdk-aac对输入的PCM数据是有参数要求的,如果参数不对,就会出现以下错误: [libfdk_aac @ 0x7fa3db033000] Unable to initialize the encod 阅读全文
posted @ 2021-04-12 22:28 M了个J 阅读(6117) 评论(6) 推荐(3) 编辑
摘要:本文来详细讲解一下:如何在Mac、Windows环境下成功编译FFmpeg。 目标 这里先提前说明一下,最后希望达到的效果: 编译出ffmpeg、ffprobe、ffplay三个命令行工具 只产生动态库,不产生静态库 将fdk-aac、x264、x265集成到FFmpeg中 x264、x265会在以 阅读全文
posted @ 2021-04-10 17:05 M了个J 阅读(7697) 评论(9) 推荐(3) 编辑
摘要:AAC(Advanced Audio Coding,译为:高级音频编码),是由Fraunhofer IIS、杜比实验室、AT&T、Sony、Nokia等公司共同开发的有损音频编码和文件格式。 对比MP3 AAC被设计为MP3格式的后继产品,通常在相同的比特率下可以获得比MP3更高的声音质量,是iPh 阅读全文
posted @ 2021-04-09 10:45 M了个J 阅读(4971) 评论(0) 推荐(1) 编辑
摘要:什么叫音频重采样 音频重采样(Audio Resample):将音频A转换成音频B,并且音频A、B的参数(采样率、采样格式、声道数)并不完全相同。比如: 音频A的参数 采样率:48000 采样格式:f32le 声道数:1 音频B的参数 采样率:44100 采样格式:s16le 声道数:2 为什么需要 阅读全文
posted @ 2021-03-30 00:11 M了个J 阅读(6481) 评论(1) 推荐(4) 编辑
摘要:对于WAV文件来说,可以直接使用ffplay命令播放,而且不用像PCM那样增加额外的参数。因为WAV的文件头中已经包含了相关的音频参数信息。 ffplay in.wav 接下来演示一下如何使用SDL播放WAV文件。 初始化子系统 // 初始化Audio子系统 if (SDL_Init(SDL_INI 阅读全文
posted @ 2021-03-26 14:53 M了个J 阅读(3531) 评论(3) 推荐(0) 编辑
摘要:播放器是无法直接播放PCM的,因为播放器并不知道PCM的采样率、声道数、位深度等参数。当PCM转成某种特定的音频文件格式后(比如转成WAV),就能够被播放器识别播放了。 本文通过2种方式(命令行、编程)演示一下:如何将PCM转成WAV。 WAV文件格式 在进行PCM转WAV之前,先再来认识一下WAV 阅读全文
posted @ 2021-03-26 14:43 M了个J 阅读(6048) 评论(4) 推荐(4) 编辑
摘要:ffplay 可以使用ffplay播放《音频录制02_编程》中录制好的PCM文件,测试一下是否录制成功。 播放PCM需要指定相关参数: ar:采样率 ac:声道数 f:采样格式 s16le:PCM signed 16-bit little-endian 更多PCM的采样格式可以使用命令查看 Wind 阅读全文
posted @ 2021-03-26 12:40 M了个J 阅读(7935) 评论(7) 推荐(5) 编辑
摘要:通过编程录音 开发录音功能的主要步骤是: 注册设备 获取输入格式对象 打开设备 采集数据 释放资源 需要用到的FFmpeg库有4个。 extern "C" { // 设备相关API #include <libavdevice/avdevice.h> // 格式相关API #include <liba 阅读全文
posted @ 2021-03-17 22:26 M了个J 阅读(10111) 评论(12) 推荐(7) 编辑
摘要:终于要开始进行FFmpeg实战了,一起来感受一下FFmpeg的强大吧。 命令简介 FFmpeg的bin目录中提供了3个命令(可执行程序),可以直接在命令行上使用。 ffmpeg ffmpeg的主要作用:对音视频进行编解码。 # 将MP3文件转成WAV文件 ffmpeg -i xx.mp3 yy.wa 阅读全文
posted @ 2021-03-10 21:19 M了个J 阅读(10357) 评论(3) 推荐(4) 编辑