自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 Qt软件打包

打开关于release相关的文件夹,找到该目录下release目录下的.exe程序。将这个.exe文件拷贝出来,创建一个单独的文件夹,放在这个文件夹下。从Windows图标找到Qt软件,如下图所示,本人电脑里有5个编译工具,找到与第一步里相同的编译工具,打开。如下图所示,选择 release ,有时需要选择编译工具,可以看到图中的编译工具是MinGW 32bit。此时程序目录如下,点击exe文件即可正常运行程序。在该命令行窗口中通过盘符和cd命令转到才拷贝出来的exe程序所在的目录。

2023-05-30 14:28:50 1791

原创 Qt没有被正确安装,请运行make install问题的解决

目录即可,其中XXXX/qt-everywhere-opensource-src-5.12.9/Qt-5.12.9/bin是第三方厂家提供的qt的qmake存放的目录。目录即可,其中XXXX/qt-everywhere-opensource-src-5.12.9/Qt-5.12.9/bin是第三方厂家提供的qt的qmake存放的目录。直接在ubutun下装个qt 5.12.9然后,然后把qt安装目录下的: Qt 5.12.9/gcc_64/bin的qt.conf拷贝到。

2023-04-12 15:20:15 1295 2

原创 QT+MySQL程序打包发布后提示driver not loaded driver not loaded的终极解决办法

QT+MySQL程序打包发布后提示driver not loaded driver not loaded的终极解决办法

2023-01-10 16:43:58 542

原创 std::shard_ptr初始化

shared_ptr

2022-11-18 16:13:06 483

原创 Qt报错: error: C2001: 常量中有换行符

Qt报错 C2001: 常量中有换行符

2022-07-27 11:01:37 625

原创 vs2019生成obs.exe

记得配置DepsPath参考文章:https://mingshiqiang.blog.csdn.net/article/details/117790512vs2019编译报错解决:添加:winmm.lib和setupapi.lib

2022-05-17 16:43:57 105

原创 编译CEF

编译CEF步骤cmake编程成功用vs2019运行报错:解决方案:CefString markedText(“か”);改为: CefString markedText(“demo”);

2022-05-17 13:50:26 138

原创 错误 LNK2019 无法解析的外部符号 “protected: __thiscall XVideoCapture::XVideoCapture(void)

严重性 代码 说明 项目 文件 行 禁止显示状态错误 LNK2019 无法解析的外部符号 “protected: __thiscall XVideoCapture::XVideoCapture(void)” (??0XVideoCapture@@IAE@XZ),函数 “public: __thiscall CXVideoCapture::CXVideoCapture(void)” (??0CXVideoCapture@@QAE@XZ) 中引用了该符号 qt_audio_rtmp D:\YangHanJie

2022-05-05 21:50:26 289

原创 vs-2019 加载ffmpeg、opencv首先需要的配置

vs-2019加载ffmpeg要先导入一下文件加载opencv需要导入一下文件VC++目录 – 包含目录VC++目录 – 库目录链接器 – 输入 – 附加依赖项

2022-04-26 22:50:20 2117

原创 vs-2019 QAudioForamt 报错 无法解析

解决:

2022-04-26 21:23:03 150

原创 opencv-程序无法正常启动(0x000007b)

编译opencv64位时正常,然后又编译opencv32位后启动程序时出现以为是编译或者vs2019配置时出现的问题,结果重新编译后有重新配置了几遍还这样错误,最后发现是没有把编译后的opencv加入环境变量加入环境变量后就可以正常运行了。...

2022-04-17 21:07:14 2877

原创 opencv无法打开摄像头

解决方法:先测试摄像头有没有打开没有打开就按FN+摄像头按键如还解决不了,或者其他报错,请自行搜索

2022-04-17 15:23:53 4811 1

原创 win10下用 Visual Studio 2019 重新生成 OpenCV 解决方案报 LNK1104 无法打开文件 “python38_d.lib”

解决方法原因: 这是因为使用的 python 是 Release 版,而编译是在 Debug 模式下编译的(Release 模式下没有此问题)在 python 的安装位置找到 include 文件夹,在文件夹下找到 pyconfig.h 文件因为我用的是anaconda3装的,所以我的 pyconfig.h 位置为 D:\Programs\anaconda3\include\pyconfig.h将 comment(lib,“python38_d.lib”) 改为 comment(lib,“pytho

2022-04-12 20:51:38 2578 2

原创 c++ 派生类

1.派生类是对类的具体化,而类是派生类的抽象。2.派生类的声明方式:class 派生类名 继承方式 基类名。3.派生类的继承方式有protected private public。4.公用继承的介绍:代码示例如下:#include<iostream>#include<string>using namespace std;class Student//声明基类{public: void get_1()//输入姓名及性别 { cin

2022-04-06 13:52:22 6634

原创 \lib\libws2_32.a: No such file o

检测一下pro文件中的路径对不对

2022-03-31 16:01:50 644

原创 Windows桌面端录屏采集实现

实时屏幕共享功能,在视频会议、游戏直播、在线教育等场景中已广泛被应用。近日,主打屏幕分享的社交应用「Squad」被Twitter收购,让我们看到了实时屏幕共享融于更多行业,开启丰富玩法的趋势。作为实时屏幕共享的第一步,录屏采集在不同终端和系统上的实现方式有所不同。之前我们已经分享了Android端、iOS端、macOS桌面端实现录屏采集的方式,可以戳下面查看:下面将分享本系列的最后一篇,如何实现Windows桌面端屏幕共享的录屏采集。在进入具体的方式讨论前,我们先看看 Windows 桌面图形界面的简

2022-03-30 10:59:34 1649

原创 vs2022安装

官方下载地址: https://visualstudio.microsoft.com/zh-hans/vs/点击安装:点击继续:等待安装:根据需求选择:选择语言包和安装位置:

2022-03-28 11:44:55 321

原创 fatal error LNK1104:

错误:1>D:\YangHanJie\c++\testffmpeg\include\libavutil\rational.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失1>LINK : fatal error LNK1104: 无法打开文件“avformat.lib”解决:添加目录错误:rror C4996: 'fopen': This function or variable may

2022-03-26 12:29:14 429

原创 ffplay播放yuv

ffplay -f rawvideo -video_size 768x320 -pixel_format yuv420p out_crop_vfilter.yuv

2021-10-25 17:56:07 2806

转载 avcode_alloc_context3

一.avcodec_find_decoder获取解码器。在使用之前必须保证所用到的解码器已经注册,最简单的就是调用avcodec_register_all() 函数,就像之前注册解封装器的时候,也要注册一下。。AVCodec *avcodec_find_decoder(enum AVCodecID id);// 查找解码器,第一种方法就是直接通过ID号查找,这个ID号从哪里获取呢?就像刚才我们解封装之后,你可以发现我们的AVStream里面其实是有一个codecID, 那个ID号就是我们要用到的解码.

2021-10-19 13:57:14 2283

原创 av_dump_format

av_dump_format, 打印关于输入或输出格式的详细信息/** * Print detailed information about the input or output format, such as * duration, bitrate, streams, container, programs, metadata, side data, * codec and time base. * * @param ic the context to analyze *

2021-10-19 10:06:19 284

原创 av_parser_parse2

av_parser_parse2()拿到AVPaket数据,将一个个AVPaket数据解析组成完整的一帧未解码的压缩数据;跟av_read_frame类似。输入必须是只包含视频编码数据“裸流”(例如H.264、HEVC码流文件),而不能是包含封装格式的媒体数据(例如AVI、MKV、MP4)。av_parser_init():初始化AVCodecParserContext。其参数是codec_id,所以同时只能解析一种AVCodecParser用于解析输入的数据流并把它们分成一帧一帧的压缩编码数据。.

2021-10-18 10:03:04 1667

原创 av_parser_init

AVCodecParserContext *av_parser_init(int codec_id){ AVCodecParserContext *s = NULL; const AVCodecParser *parser; void *i = 0; int ret; if (codec_id == AV_CODEC_ID_NONE) return NULL; // 1.基于id查找AVCodecParser解析器 while ((

2021-10-18 09:51:54 798

原创 h264测试

av_bsf_get_by_name定义指定比特流过滤器/*** @return 具有指定名称的比特流过滤器,如果没有,则返回 NULL * 存在比特流过滤器。 */const AVBitStreamFilter *av_bsf_get_by_name(const char *name);源码:const AVBitStreamFilter *av_bsf_get_by_name(const char *name){ const AVBitStreamFilter *f = N

2021-10-14 16:53:50 1137

原创 av_find_best_stream

通过av_find_best_stream()函数来获取流的索引:/*** 在文件中找到“最佳”流。 * 最佳流根据各种启发式确定为最 * 可能是用户所期望的。 * 如果解码器参数非空,av_find_best_stream 将找到 * 流编解码器的默认解码器;没有解码器可以处理的流 * 被发现被忽略。 * * @param ic 媒体文件句柄 * @param type 流类型:视频、音频、字幕等。 * @param Wanted_stream_nb 用户请求的流号, * 或 -1

2021-10-14 16:47:16 2585

原创 AAC-ADTS测试

1,AACAAC是在MPEG-2和MPEG-4中定义的,是一系列编码规格的统称。AAC标准包括一系列编码规格,这里列出常用的几种:AAC-LC,AAC-LD,AAC-ELD,HE-AAC。可以将它们之间的关系理解成H264中base,main,highprofile的关系。AAC-LC定义在MPEG-2中。AAC-LD,AAC-ELD,HE-AAC定义在MPEG-4中。2, 应用场景既然是一种音频编码格式,它有两大基本应用场景:媒体存储文件(storage),如常见的h264+aac的mp4文.

2021-10-14 14:35:43 472

原创 AVFormatContext

/*** 格式化 I/O 上下文。 * 新的字段可以添加到小版本颠簸的末尾。 * 删除、重新排序和更改现有字段需要一个主要的 * 版本凹凸。 * sizeof(AVFormatContext) 不能在 libav* 之外使用,使用 * avformat_alloc_context() 创建一个 AVFormatContext。 * * 字段可以通过 AVOptions (av_opt*) 访问, * 使用的名称字符串匹配相关的命令行参数名称和 * 可以在 libavf.

2021-10-14 12:15:46 282

原创 解封装测试

#include <stdio.h>#include <libavformat/avformat.h>int main(int argc, char **argv){ //打开网络流。这里如果只需要读取本地媒体文件,不需要用到网络功能,可以不用加上这一句// avformat_network_init(); const char *default_filename = "believe.mp4"; char *in_filename =

2021-10-14 11:36:20 53

原创 AVPacket

AVPacket是存储压缩编码数据相关信息的结构AVPacket是FFmpeg中很重要的一个数据结构,它保存了解复用之后,解码之前的数据(仍然是压缩后的数据)和关于这些数据的一些附加信息,如显示时间戳(pts)、解码时间戳(dts)、数据时长,所在媒体流的索引等。对于视频来说,AVPacket通常包含一个压缩的Frame,而音频(Audio)则有可能包含多个压缩的Frame。并且,一个Packet有可能是空的,不包含任何压缩数据,只含有sidedata(sidedata,容器提供的关于Packet的

2021-10-13 14:38:49 1870

原创 Frame

AVFrame介绍AVFrame必须使用av_frame_alloc()来分配。注意,这只是分配AVFrame本身,缓冲区的数据(解码成功后的数据)必须通过其他途径被管理.因为AVFrame通常只分配一次,然后多次复用来保存不同类型的数据,复用的时候需要调用av_frame_unref()将其重置到它前面的原始清洁状态.注意调用avcodec_receive_frame()时会自动引用减1后再获取frame,所以解码过程中无需每次调用释放的时候必须用av_frame_free()释放。常用函数

2021-10-13 13:54:39 410

转载 FFMPEG的结构体之间的关系

FFMPEG中结构体很多。最关键的结构体可以分成以下几类:a) 解协议(http,rtsp,rtmp,mms)AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLProtocol存储输入视音频使用的封装格式。每种协议都对应一个URLProtocol结构。(注意:FFMPEG中文件也被当做一种协议“file”)b) 解封装(flv,avi,rmvb,mp4)AVFormatContext主要存储视音频封装格式中.

2021-10-13 10:59:37 121

原创 AVBuffer

结构体分析在FFMPEG的位置libavutil\buffer_internal.h(对于调用者是隐藏的)和libavutil\buffer.h(对于调用者是公开的)AVBuffer是一个具有引用计数的数据缓存,FFMPEG提供了一套完善的API对AVBuffer进行操作。AVBuffer和AVBufferRef是API的两个核心结构体。AVBuffer代表数据缓存本身,但一般情况下调用者不应该直接调用它,而是需要通过AVBufferRef的调用,让API内部对AVBuffer进行操作。当然了,

2021-10-13 10:39:49 489

原创 av_read_frame

ffmpeg中的av_read_frame()的作用是读取码流中的音频若干帧或者视频一帧。例如,解码视频的时候,每解码一个视频帧,需要先调用 av_read_frame()获得一帧视频的压缩数据,然后才能对该数据进行解码(例如H.264中一帧压缩数据通常对应一个NAL)。对于视频的编解码来说,要对数据进行解码,那么首先要获取视频帧的压缩数据。 av_read_frame()的作用就是获取视频的数据。注:av_read_frame()获取视频的一帧,不存在半帧说法。但可以获取音频的若干帧。说明①:av.

2021-10-12 17:20:28 7008

原创 avformat_find_stream_Info

avformat_find_stream_Info声明:所属库:libavformat(lavf)头文件:avformat.h声明: 从如下声明的解释可以获知以下几点信息1)该函数将读取媒体文件的音视频包去获取流信息。本函数常用于avformat_open_input()函数之后,在avformat_open_input()函数中会调用输入文件格式的read_header()函数,比如flv格式的flv_read_header()函数来读取文件头,由于flv格式的头很简单,只能知道是否存在音频流和视

2021-10-12 16:20:53 3652

原创 FFMPEG中结构体

FFMPEG中结构体很多。最关键的结构体可以分成以下几类:1)应用层(提纲挈领) AVFormatContext 结构体按名字来说,应该将其归为封装层,但是,从整体的架构上来说,它是FFMPEG中提纲挈领的最外层结构体,在音视频处理过程中,该结构体保存着所有信息。这些信息一部分由AVFormatContext的直接成员持有,另一部分由后续要介绍的这些数据结构所持有,而这些结构体都是AVFormatContext的直接成员或者间接成员。总的来说,AVFormatContext结构体作用可以类比于WebRt

2021-10-12 14:57:05 240

原创 av_realloc

原文链接:https://blog.csdn.net/ice_ly000/article/details/90510504av_realloc() 声明:所属库:libavutil(lavu),该库是ffmpeg的功能库,当前函数属于内存管理功能头文件:libavutil/mem.h功能:1. 分配空间 / 重新分配空间(已分配空间的伸缩) / 释放一块内存。1)ptr为NULL,且size>0时,分配一块新的内存块;2)ptr不为空,size=0时,释放ptr指向的内存空间;3)

2021-10-12 14:56:10 210

原创 ffmpeg中字典类型的描述

ffmpeg中字典类型的描述:字典类型 API使用简介/** * @文件 * 公共字典API。 * @已弃用 * 提供 AVDictionary 是为了与 libav 兼容。它既在 * 实现以及 API 效率低下。它没有规模,是 * 使用大词典时速度极慢。 * 建议新代码使用我们来自 tree.c/h 的树容器 * 在适用的情况下,它使用 AVL 树来实现 O(log n) 性能。 */#ifndef AVUTIL_DICT_H#define AVUTIL_DICT_H#i

2021-10-12 14:55:49 700

原创 avformat_open_input()

avformat_open_input()。该函数用于打开多媒体数据并且获得一些相关的信息。它的声明位于libavformat\avformat.h,如下所示。avformat_open_input()* 打开一个输入流并读取头部。未打开编解码器。 * 必须使用 avformat_close_input() 关闭流。 * @param ps 指向用户提供的 AVFormatContext 的指针(由 avformat_alloc_context 分配)。 * 可能是一个指向 NULL 的指针,在这

2021-10-12 14:53:39 9465 1

原创 avformat_alloc_context

该函数用于分配空间创建一个AVFormatContext对象,并且强调使用avformat_free_context方法来清理并释放该对象的空间。分配空间,创建一个 AVFormatContext对象。avformat_free_context() 可用于释放上下文和所有内容由其中的框架分配。/** * Allocate an AVFormatContext. * avformat_free_context() can be used to free the context and ever

2021-10-11 15:02:23 3158

转载 系列博客---从零开始学习音视频编程技术

内容从零开始,慢慢深入(在每篇文章的前面加上原文链接,文中的ps内容为加上自我感悟所写,不同见解也会在此提出):从零开始学习音视频编程技术之初出茅庐从零开始学习音视频编程技术(一) 视频格式讲解从零开始学习音视频编程技术(二) 音频格式讲解————————————————版权声明:本文为CSDN博主「ice_ly000」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/ice_ly000/art

2021-10-11 12:05:03 192

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除