音视频
文章平均质量分 76
光头小杨
发挥自己最大的价值
展开
-
Windows 使用 DuiLib 显示屏幕和窗口缩略图
一、背景在视频会议中,有一个场景是屏幕分享,屏幕分享的时候要预览屏幕和窗口的缩略图,然后选中对应缩略图的窗口进行分享,本篇博客主要记录一下在 Windows 平台下面获取缩略图的一些方法,如果你有更好的方法欢迎交流二、获取和显示缩略图方法一:使用DwmUpdateThumbnailProperties 在指定窗口显示缩略图可以参考即构科技的官方文档说明https://doc-zh.zego.im/zh/2365.html,他们注册缩略图的 API 也是需要将位置传进去,也就是说他们使用...原创 2021-02-26 18:18:49 · 2575 阅读 · 5 评论 -
Windows 下编译 WebRTC 记录 + 踩坑
一、具体步骤1、下载安装 Visual Studio2、安装Chromium软件仓库工具(1)下载depot_tools.zip并解压缩,比如我解压缩之后是在 C:\depot_tools\ 这个目录下面(2)将 depot_tools 的路径添加到系统的环境变量,并把它放在最上面(3)在C:\depot_tools\ 目录下面打开 cmd 窗口,然后执行 gclient,这个时候会安装自己的各种工具副本,出现下面的界面表示安装成功如果遇到失败,可以从下面几个角度检查..原创 2020-12-17 20:13:49 · 1518 阅读 · 3 评论 -
Windows下使用OpenGL播放yuv
一、配置glew1、glew下载地址2、将解压后的include和bin配置到我们的工程中二、OpenGL渲染流水线介绍1、先看一下下面这张图,代表了整个OpenGL的渲染流水线2、顶点数据(Vertex Data)在OpenGL中,一个顶点(Vertex)是一个3D坐标数据的集合,而顶点数据(Vertex Data)是一系列顶点的集合,而顶点数据是由顶点属性(Vertex Attribute)表示的,它可以包含任何我们想要的数据3、顶点着色器(Vertex Shader)原创 2020-10-18 17:48:22 · 1561 阅读 · 1 评论 -
Windows使用MinGW编译ffmpeg
一、配置编译环境1、下载mingw地址:https://osdn.net/projects/mingw/releases/2、下载所需要依赖的包(需要网络可以翻墙)右键然后选择 Mark for Installation点击左上角的Installation,然后选择Apply Changes开始下载点击Apply3、如果网络不可以翻墙,可以参考这篇文章4、添加环境变量,将C:\MinGW\bin添加到环境变量5、下载yasm,https://yasm.tor.原创 2020-10-12 22:00:08 · 1743 阅读 · 0 评论 -
d3d9播放yuv
一、几个概念后台缓冲surface,前台surface,交换链,离屏surface后台缓冲surface和前台缓冲surface总是成对出现的,当我们进行绘图操作时,画面有可能出现闪烁,这是因为当前绘制的一幅图像没有同时出现在屏幕上导致的,更详细的可以看这篇文章。前台surface + 后台surface就可以解决这个问题,前台surface表示我们可以看到的画面,后台缓冲surface相当于一个缓冲区,每次绘图是在后台surface上进行的,然后完了再把两个surface做一个交换,这样后台sur原创 2020-10-06 20:30:14 · 2135 阅读 · 5 评论 -
linesize、stride、pitch的关系
一、在H264编码中我们经常会遇到linesize(行宽)、stride(步长)、pitch(间距)三个关键词其实这三个关键词所代表的含义都是一样的,只不过在不同的场景下有着不同的叫法在d3d显示的时候,叫pitch在用ffmpeg解码的时候,它叫linesize在使用ffmpeg转换格式的时候,它叫stride二、为什么会出现这几个概念?我们知道在H264编码中是以宏块为单位的,宏块的大小为16*16,有的时候图像的宽度和高度不是16的整数倍,那么最右边会有一部分的长度在1-15之间原创 2020-10-06 17:38:34 · 2594 阅读 · 0 评论 -
SDL播放yuv
一、下载SDL2地址:https://www.libsdl.org/download-2.0.phpWindows下可以下载编译好的Development Libraries将下载好的文件解压,有着include和lib两个目录就是我们需要的文件二、SDL2播放yuv视频流程1、初始化SDL:SDL_Init函数原型:DECLSPEC int SDLCALL SDL_Init(Uint32 flags);其中flags的取值有以下几种SDL_INIT_TIMER.原创 2020-10-06 16:40:36 · 954 阅读 · 0 评论 -
ffprobe常用命令总结
1、查看ffprobe帮助ffprobe -h2、查看文件的简单信息ffprobe filename3、不显示欢迎信息ffprobe -hide_banner filename4、查看文件的封装格式ffprobe -show_format filename主要包含信息filename:文件名nb_streams:流的个数(音频流、视频流)format...原创 2020-10-06 09:55:08 · 1640 阅读 · 0 评论 -
linux和mac使用ffmpeg命令录制屏幕保存为h264文件
1、macffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -f h264 -r 30 test.h2642、linuxffmpeg -video_size 1920x1680 -f x11grab -i "" -vcodec libx264 -preset ultrafast -f h264 -r 30...原创 2019-09-17 19:33:30 · 1155 阅读 · 0 评论 -
mac 获取音量、设置音量、获取是否静音,设置静音
1、mac下获取当前电脑输出设备的音量,设置当前电脑输出设备的音量,以及设置静音,获取是不是静音#include <iostream>#include <vector>#include <CoreAudio/CoreAudio.h>#include <AudioToolbox/AudioServices.h>// 获取默认设备的d...原创 2019-09-21 14:31:07 · 1869 阅读 · 0 评论 -
linux下使用PulseAudio获取扬声器的音量和是否静音(C++)
一、sourcedevice和sinkdevice的概念source device:source可以理解为源泉,表示声音的源,即声音产生的地方sink device:sink可以理解为水槽,表示声音的接受一方那么就可以理解为声音从source device流出,流到sink device里面二、获取sink device的音量和是不是静音#include <iost...原创 2019-10-11 20:41:58 · 2955 阅读 · 0 评论 -
Windows下获取扬声器的一些信息
一、获取扬声器是否为静音和音量#include "audio_utils.h"#include <Propkeydef.h>#include <Functiondiscoverykeys_devpkey.h>#include <Endpointvolume.h>#include <audioclient.h>#include &l...原创 2019-10-11 21:22:42 · 1744 阅读 · 0 评论 -
计算机渲染的那些事
本文是一些个人的理解,欢迎大家批评指正,一起交流!屏幕图像的显示原理屏幕图像的显示原理要从CRT(阴极射线显像管)显示器说起,CRT显示器是靠电子束激发屏幕内表面的荧光粉来显示图像的,CRT的电子枪从上到下逐行扫描,扫描完成后就呈现一幅图像。然后电子枪在回到开始的位置进行下一次扫描。为了同步显示器的显示过程和视频控制器的控制过程,显示器会用硬件时钟产生一系列的定时信号,当电子枪换行进行扫描...原创 2020-01-16 21:52:48 · 905 阅读 · 2 评论 -
ffmpeg和ffplay常用命令
1、ffplay播放h264ffplay test.h2642、ffplay播放yuv文件ffplay -f rawvideo -video_size 1920x1080 test.yuv原创 2020-03-12 17:02:04 · 4105 阅读 · 0 评论 -
FFmpeg录屏和常用命令总结(不录制声音 Windows平台)
一、显示和帮助命令1、显示许可证ffmpeg -L2、获取ffmpeg帮助ffmpeg -hffmpeg -?ffmpeg -helpffmpeg --help3、显示版本号ffmpeg -version4、显示支持的格式,比如h264,hevcffmpeg -formats5、显示支持的编码器ffmpeg -encoders6、显示支持...原创 2020-08-27 15:41:39 · 3812 阅读 · 1 评论 -
YUV数据格式的转换(NV12ToI420)和旋转(旋转90度)
1、几种常见格式的YUV数据I420(YU12):先存Y,然后U,最后V。YYYYYYYYUUVVYV12:先存Y,然后V,最后U。YYYYYYYYVVUUNV12:先存Y,然后UV交错存储,iOS下这种模式。YYYYYYYYUVUVNV21:先存Y,然后VU交错存储,Android下这种格式。YYYYYYYYVUVU2、NV12转I420因为NV12的YUV数据UV是交错...原创 2020-03-12 17:01:30 · 4430 阅读 · 0 评论 -
H264码流解析(三):解析SPS和PPS
上两篇里面写了划分NALU和指数哥伦布编码,这一篇主要写解析SPS和PPS。1、下载bs.h头文件下载bs.h头文件,并在项目中使用2、解析SPS先看SPS的结构,再7.3.2.1.1里面包含了SPS结构的介绍其中scaling_list函数在7.3.2.1.1.1里,如图所示vui_parameters函数在E1.1里,如图所示hrd...原创 2020-03-22 14:12:19 · 5434 阅读 · 0 评论 -
H264码流解析(二):Exp-Golomb指数哥伦布编码(理论篇)
在上一篇主要对H.264码流中的NALU进行了一个简单的划分,标出了NALU的类型和长度等信息。因为我们在解析SPS和PPS中要使用到指数哥伦布编码的解析,所有有必要了解一下指数哥伦布编码。指数哥伦布编码(理论篇)指数哥伦布码(Exponential-Golomb code, 即Exp-Golomb code)是熵编码的一种编码方式,正常来说,可以拓展位k阶,但是在H264中使用的是0阶指...原创 2020-03-22 14:11:58 · 1371 阅读 · 0 评论 -
H264码流解析(一):划分每一个NALU
一、H264码流可以分为两层1、VCL(Video Coding Layer):视频编码层,处理编码数据的输出,表示被压缩编码后的视频数据系列2、NAL(Network Abstraction Layer):网络提取层,在VCL层数据存储或者传输之前,这些编码后的数据要被封装在NAL单元里面,所以我们一般接触的编码过后的数据都是NAL层的数据二、H264编码过程中的三种不同的数据形式1、...原创 2020-03-22 14:10:30 · 2122 阅读 · 0 评论