音视频
文章平均质量分 56
0点51胜
这个作者很懒,什么都没留下…
展开
-
[obs] 编译记录
obs 编译踩坑记录原创 2023-08-16 23:27:37 · 956 阅读 · 1 评论 -
windows 上使用 docker搭建nginx rtmp 推流服务器
nginx rtmp 服务器搭建原创 2023-03-05 19:54:03 · 420 阅读 · 1 评论 -
nginx 踩坑记录
运行 nginx start 后,任务管理器没有查到 nginx 进程。查看 log 后发现,nginx 不能运行在中文路径下。原创 2023-03-05 18:56:50 · 553 阅读 · 0 评论 -
[音视频] wav 格式
WAV文件遵循RIFF规则,其内容以区块(chunk)为最小单位进行存储。WAV文件一般由3个区块组成:RIFF chunk、Format chunk和Data chunk。另外,文件中还可能包含一些可选的区块,如:Fact chunk、Cue points chunk、Playlist chunk、Associated data list chunk等。本文将只介绍RIFF chunk、Format chunk和Data chunk。原创 2023-02-27 09:34:45 · 273 阅读 · 0 评论 -
[音视频] BMP 图片格式分析
BMP 格式分析原创 2023-02-26 16:46:49 · 631 阅读 · 0 评论 -
ffmpeg通过 av_dict_set 设置参数
ffmpeg 设置参数原创 2023-02-10 13:44:22 · 1664 阅读 · 0 评论 -
ffmpeg 硬解命令
ffmpeg原创 2023-02-07 21:01:07 · 372 阅读 · 0 评论 -
调试 obs 代码
obs 调试原创 2023-02-06 15:36:27 · 200 阅读 · 0 评论 -
ShiftMediaProject ffmpeg 编译过程
ffmpeg 编译原创 2022-12-21 17:34:10 · 168 阅读 · 0 评论 -
Direct3D 11 总结 —— 10 变换
_mm_set_ps 是倒叙放置的,参考原创 2022-05-15 23:34:47 · 505 阅读 · 0 评论 -
Direct3D 11 总结 —— 9 通过键盘调整绿幕抠图阈值
介绍本文主要介绍如何通过键盘设置绿幕抠图的阈值,通过设置不同的阈值,看最终的结果。最终结果阈值为 0.9阈值为 0.2阈值为 0.5知识点获取键盘输入当键盘按下后,会给窗口的回调函数,传入 msg:WM_KEYDOWN 事件,并通过 wparam 参数,传入是哪个键按下了。然后窗口回调通过事件的方式通知到 Graphics。将阈值传到 shader 中directX 中有个常量值 vertex shader 和 pixel shader 都可以设置,说是常量值,但是该值是可以改变原创 2022-05-03 23:26:41 · 1211 阅读 · 0 评论 -
Direct3D 11 总结 —— 8 实现简单的绿幕抠图效果
介绍绿幕抠图指将图片中的绿色扣去,并将该处的 alpha 分量设为 0,并将另外一张图片作为背景,以实现背景替换的功能,常用于电影和电视的制作场景。最终效果原始图片绿幕抠图后效果代码这一块的代码改动,主要在像素着色器 shader。ps shader本文只是实现了最简单的绿幕抠图,对于这种比较完美的图片,抠图效果较好,对于其他图片还有较大的优化空间。Texture2D tex : register(t0);SamplerState samplerLinear : register(s原创 2022-04-17 20:32:24 · 1010 阅读 · 0 评论 -
Direct3D 11 总结 —— 7 实现透明效果
介绍当两张图片重叠的时候,可以一张完全盖住另外一张,也可以实现两张图片融合的结果。本文将对图片融合展开介绍。融合的公式如下 C=Csrc⊕Fsrc1ΘCdst⊕Fdst1\ C = C_{src}\oplus F_{src1} \Theta C_{dst} \oplus F_{dst1} C=Csrc⊕Fsrc1ΘCdst⊕Fdst1 A=Asrc⊕Fsrc2ΘAdst⊕Fdst2\ A = A_{src}\oplus F_{src2} \Theta A_{ds原创 2022-04-17 19:46:31 · 1065 阅读 · 0 评论 -
Direct3D 11 总结 —— 6 绘制图片
介绍本文将在上文绘制的矩形中,绘制图片。主要步骤读取图片,并转化为纹理。将该纹理绑定到 Pipeline设置采样器,像素着色器通过该采样器对输出的纹理进行采样代码主要改动CreateWICTextureFromFile通过该函数将图片数据,读取到纹理中。 该函数来自于DirectXTex,引用了WICTextureLoader11.cpp / WICTextureLoader11.h主要向 pipeline 绑定了两个资源PSSetShaderResources读取图片到纹理,然后原创 2022-04-16 22:39:09 · 1821 阅读 · 0 评论 -
Direct3D 11 总结 —— 5 绘制矩形
介绍本文,将在上文的基础上,绘制矩形区域。一般 direct3D 通过绘制三角形,拼成其他图像,对于矩形,本文将绘制两个三角形,以拼成一个矩形。代码主要修改点输入装配阶段一个是输入的坐标点数,之前是3个点,本文输入的 4个点。绘制2个三角形,有两种方式,一种是输入6个点,其中有2对点是一样的。另外一种方式是输入4个点,在加上6个索引点。绘制命令针对两种输入方式,有两个对应的绘制命令。m_pContext->Draw(6, 0); 通过输入顶点绘制6个点绘制图形m_pContex原创 2022-04-13 23:23:21 · 1352 阅读 · 0 评论 -
if ((x - 0x01010101) & (~x) & 0x80808080) 理解
if ((x - 0x01010101) & (~x) & 0x80808080)为了说明方便,可以将 x 看成只有一个字节,则上面的问题可以简化为if ((x - 0x01) & (~x) & 0x80)先看 0x80 对应二进制 0b1000,0000 与该字节进行按位取与,只有在 (x-0x01) 和 (~x) 第8位都为1的情况下,该 if 条件才会成立。对于 (x-0x01) ,只有 x =0 或者 x>0x80,其第8位才为1。对于 (~原创 2022-03-01 22:29:03 · 602 阅读 · 2 评论 -
rtmp flv h264 整理
原创 2022-02-27 23:56:28 · 131 阅读 · 0 评论 -
rtmp源码分析之RTMP_Write 和 RTMP_SendPacket
typedef struct RTMPPacket { uint8_t m_headerType; // chunk type id (2bit)fmt 对应message head {0,3,7,11} + (6bit)chunk stream id /*大部分情况是一个字节 uint8_t m_packetType; // Message type ID(1-7协议控制;8,9音视频;10以后为AMF编码消息) uint8_t m_hasAbsTimestamp; /* timesta原创 2022-02-27 22:21:46 · 637 阅读 · 0 评论 -
flv 格式
https://www.jianshu.com/p/7ffaec7b3be6这篇写的不错,后面有时间,在实战一下原创 2022-02-27 00:42:57 · 180 阅读 · 0 评论 -
h264 文件解析
获得 h264 文件ffmpeg -i test.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 test.264概述h264 数据是保存在 NALU 中的,但是 NALU 之间如何进行分割,常用的有两种方式,一种是 annexb模式,其通过在每个 NALU 前面加上 startcode (0x000001或0x0000001)分割 NALU。另外一种是AVCC模式,通过在 NALU 前面添加表示 NALU 长度的字节。本文使用 annexb 模式分析原创 2022-02-26 23:02:09 · 3235 阅读 · 0 评论 -
ffmpeg 常用命令
1.从文件中获取音频数据和视频数据1.1 从文件中抽取音频数据ffmpeg -i test.mp4 -vn -acodec copy test.aac-i url (input) // 输入的文件地址-vn // 阻止文件中的所有视频流-acodec // 编解码器 https://blog.csdn.net/NewTWG/article/details/86393378 copy // 编码同原始音频ffmpeg -i test.mp4 -vn -acodec copy test.原创 2022-01-09 21:09:34 · 2737 阅读 · 0 评论 -
WAV 文件解析
1.概述wav 文件,原来存放音频的原始数据,即对 PCM 文件进行简单封装,在文件开头加上标识,并提供音频的声道数、采样频率和采样位数等信息,这样播放器解析这些数据就可以正常播放这段音频了。2.格式解析wav 文件一般由3个区块组成:RIFF chunk、Format chunk 和 Data chunk。RIFF chunk:主要说明本文件保存的是什么内容。Formt chunk:主要说明音频文件的格式Data chunk:主要记录音频的数据2.1 RIFF chunkID 固定死,填原创 2022-01-09 18:17:36 · 4751 阅读 · 4 评论 -
windows 上向 ffmpeg 提交代码
github 上直接 pull requests,不被 ffmpeg 接受,故使用下面的方法提交代码。1.订阅ffmpeg-devel邮件列表访问 ffmpeg-devel在1处填上你的邮箱(我是使用 163的邮箱),然后点击订阅就好了,密码和名字都是选填,我没有填。之后会给你邮箱发邮件,确认一下就好了。2.设置邮箱打开 .gitconfig文件,该文件在 c 盘的用户名下,也可以用 everything 搜索一下。然后填如下信息,[user] 和 [credentical] 是之前就有原创 2021-12-18 18:27:35 · 1146 阅读 · 0 评论 -
SDL demo 小结
最近学习 ffmpeg 例程,发现里面常用 SDL 库,进行开发。故最近找了个教程学习了一下,下面对学习的做个小结。1. 第一大坑: main 函数必须写成下面的形式,不然会报错。int main(int argc, char* argv[])应该是 SDL.h 对其进行了一些操作。看源码看到下面这两句,应该就是声明了 int main(int argc, char* argv[]),所以必须实现这个函数,不然就会报错。#define main SDL_mainextern SDLMAIN原创 2021-12-06 19:34:19 · 2746 阅读 · 0 评论 -
音视频——音频
layout 是 声道的分布,既考虑声道的个数,也考虑声道的分布。plane 是 声道的数量,只考虑声道个数。原创 2021-10-29 16:37:03 · 84 阅读 · 0 评论 -
win10 编译 ffmpeg 亲测有效
看本教程前,推荐先看一下视频的讲解,本文最后面的参考文献中有一个 b 站的视频,讲的不错,也可以自行搜索。编译软件需要:源代码和编译工具(源代码比较容易获取,也不会遇到太多问题,主要是编译工具的安装和使用会遇到各种问题)本教程需要你提前安装好 visual studio 。1. 源代码直接 百度、谷歌或者 github 里面搜索就好了。这边给个目前的网站: https://www.ffmpeg.org/ 如下图所示。如果代码不熟悉怎么下载的可以去 b 站搜索, ffmpeg 如何在 windo原创 2021-10-22 00:31:12 · 1527 阅读 · 0 评论 -
YUV420 总结 (YU12、YV12、NV12 和 NV21)
YUV模型是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间。最常见的格式为 YUV420分为两种:YUV420P和YUV420SP。YUV420PYUV420P 为 plane平面模式,Y, U, V分量处于不同平面,即在 ffmpeg 中数据存放在 3 个数组中。其可再细分为 YU12 和 YV12 。YU12该格式的数据分布如下图所示,data[0] 中存放的是 Y 数据,data[1] 中存放的是 U 数据,data[2] 中存放的是 V 数据。其中 Y、U、V 颜色相同的为一原创 2021-10-18 23:38:15 · 4639 阅读 · 0 评论 -
nv12转rgb
nv12 格式nv12 转 rgb 两种格式代码void NV12_T_RGB(unsigned int width, unsigned int height, unsigned char* Y, unsigned char* UV, unsigned char* rgb){ int r, g, b; int y, u, v; for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { y =原创 2021-07-19 14:20:16 · 3388 阅读 · 1 评论