随笔分类 - 音视频开发
摘要:介绍 本文在上一篇复用器的使用基础上,将输入文件改为摄像头和麦克风 目前只是单线程 代码如下: 点击查看代码 #include <iostream> #define __STDC_CONSTANT_MACROS //它允许C++程序使用C99标准中指定的 stdint.h 宏,而这些宏不在C++标准
阅读全文
摘要:时间戳相关API 时间基转换相关api 缓冲区队列相关api 视频(AVFifoBuffer:先进先出的循环缓冲) 1、结构体定义 typedef struct AVFifoBuffer { uint8_t *buffer; uint8_t *rptr, *wptr, *end; uint32_t
阅读全文
摘要:pts、dts、duration time_base:时间基,所谓时间基表示的就是每个刻度是多少秒 ,例如 如果把1秒分为25等份,你可以理解就是一把尺,那么每一格表示的就是1/25秒。此时的time_base={1,25} , 如果你是把1秒分成90000份,每一个刻度就是1/90000秒,此时的
阅读全文
摘要:复用器 本文记录一个基于FFmpeg的视音频复用器(Simplest FFmpeg muxer)。视音频复用器(Muxer)即是将视频压缩数据(例如H.264)和音频压缩数据(例如AAC)合并到一个封装格式数据(例如MKV)中去。如图所示。在这个过程中并不涉及到编码和解码。 本文记录的程序将一个H.
阅读全文
摘要:获得可用设备列表 【方法一】ffmpeg只能输出可用设备信息,无法直接获得设备列表包括名字。 【方法二】直接利用dshow通过com口获得 获取设备列表 终端命令 #列出可用设备 ffmpeg -list_devices true -f dshow -i dummy #查看指定设备可用参数 ffmp
阅读全文
摘要:封装格式相关 av_find_input_format av_find_input_format函数是通过av_demuxer_iterate函数遍历所有解封装格式列表和音视频输入设备列表,然后通过av_match_name函数判断name是否等于short_name,来返回AVInputForma
阅读全文
摘要:FFmpeg数据结构分析 FFMPEG中结构体很多。最关键的结构体可以分成以下几类: 1、解协议(http,rtsp,rtmp,mms) AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLProtocol存储输入视音频使用的封装格式。每
阅读全文
摘要:参考文献 新老对照API的整理 新旧API对照
阅读全文
摘要:SDL2新特性 全3D硬件加速 支持OpenGL3.0+的多种配置(核心、兼容性、调试、鲁棒性等) 支持OpenGL ES 支持多窗口 支持多显示器 支持多音频设备 安卓和IOS系统的支持 简单的2D渲染API,它可以利用 Direct3D, OpenGL, OpenGL ES, 或者幕后的软件渲染
阅读全文
摘要:遇到问题 vs引入SDL2.h报错 出错原因:在SDL2_main.h 中将 关键字main 定义了宏,原因分析链接 解决方法: 只需要在 #include "SDL.h" 前面那行加上 #define SDL_MAIN_HANDLED 即可, 定义 SDL_MAIN_HANDLED 避免有 mai
阅读全文
摘要:FFmpeg内存模型 队列设计 1、线程安全 2、队列最大容量? 一般有个15秒最大数据缓存 3、网络播放器,缓存一定的数据再触发解码播放(保证一直有视频可以播放) 音视频解码(解码之后得到 音频PCM 和 YUV图像 数据) 1、4k/8k 多路解码 、硬件解码、nvidia 音视频同步 1、当以
阅读全文
摘要:ffmpeg库简介 ffmpeg整体架构 ffmpeg的8个常用库 AVUtil:核心工具库,下面的许多其他模块都会依赖该库做一些基本的音视频处理操作。 AVFormat:文件格式和协议库,该模块是最重要的模块之一,封装了Protocol层和Demuxer、Muxer层,使得协议和格式对于开发者来说
阅读全文
摘要:音视频录制\播放原理 视频基础 图像表示——RGB表示 RGB 是我们接触最多的颜色空间,由三个通道表示一幅图像,分别为红色(R),绿色(G)和蓝色(B)。这三种颜色的不同组合可以形成几乎所有的其他颜色。 在每个通道中,每个像素采用 8 bit 表示,对于一幅图像,一般使用整数表示方法来进行描述,比
阅读全文

浙公网安备 33010602011771号