自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一念之间、

生命不停,学无止境。

  • 博客(122)
  • 资源 (4)
  • 收藏
  • 关注

原创 滴滴(媒体处理方向)一面

一面总时长:70分钟面试岗位主做服务端,我这边是视频播放端,上来面试官问有服务端相关经验吗,我顿时心里一凉。1、自我介绍2、介绍一个项目重点(讲了点websocket服务程序,勉强跟服务端相关,讲了很久,主要是面试官不了解里面的流程,问的细节有点多,开始有点紧张,答得不太流畅,问了为啥不用浏览器自带的去做播放)3、讲一讲使用的ffmpeg做的事情(ts转mp4使用ffmpeg的流程、音频重采样)4、rtp解包过程5、音视频同步6、弱网对抗7、硬解(问了MediaCodec和l

2021-08-12 21:30:40 339

原创 涂鸦智能一面(视频面试)

1、自我介绍2、h264编码流程3、g711编码方式4、rtsp交互5、rtp封装h2646、讲讲硬解流程(英伟达)7、rtmp握手过程8、渲染技术,讲了d3d优化9、rtmp跟rtp里面的时间戳的差异(rtp固定间隔,如90000/25,rtmp时间戳单位为毫秒)10、jitter buffer概念11、mp4在录制过程中切换分辨率后要怎么办?12、手机播放时一半正常一半绿屏可能是什么原因?13、花屏可能的原因?14、哈夫曼编码原理15、webrtc

2021-08-11 22:10:30 382

原创 字节(互娱部门)一面凉经

项目面试24分钟算法15分钟,没写出来1、自我介绍2、支持哪些协议,rtsp、rtmp、gb28181?3、项目有什么挑战性的地方,解决过哪些比较难的问题?==》答的intel硬解内存泄漏问题4、硬解码怎么做的,直接调用解码库接口?有什么难点吗?==》面试官满满的嘲讽意味5、提了个项目里内存泄漏的问题是怎么定位的?6、音视频同步怎么实现的?7、如何抗网络抖动,方案跟webrtc里jutter buffer有什么区别吗?8、安卓多媒体这块了解吗?==》具体问题听不清

2021-08-05 18:40:29 882

原创 网易云信(音视频sdk)一面凉经

项目:1、讲一讲最近几年做的项目里面自己做的功能,然后实现的能力和一些解决的问题2、这期间除了维护有做过什么优化或者解决什么问题吗?2.1、app出图速度、回放信令优化、d3d渲染优化(被问到目标分辨率,答实现64路D1不卡顿)3、项目里有文件流格式吗?,你熟悉这些格式吗?(简单讲了ts和flv)4、播放器有支持媒体流的快慢放吗?(回放流更多的是依赖设备发流速度,本地文件可以内部控制)==》音频的快放是怎么实现呢?(重采样)==》有做过变速不变调的快放吗?(不支持)==》播放器的视频源旋

2021-07-17 15:40:04 651

原创 海康(nvr部门媒体组)一面凉经

1、做过些啥优化==》app回放优化,信令优化、丢数据、三方设备解码优化2、做过hls点播,讲讲实现方案3、rtsp和rtmp区别==》rtmp实习性较高,封装flv tag4、客户对接过程遇到的难题==》ffmpeg库合一、单线程select下长时间起流后必现三次握手失败(使用多线程方式解决)5、单层nat下通过upnp实现端口映射后做udp起流6、有啥优化==》DrectDraw替换daD3D实现渲染性能7、有做过网络传输相关优化?==》只是客户端,不关心传输,但做过内部缓冲动态

2021-07-14 21:57:15 168

原创 RingCentral(厦门铃盛)一面凉经

1、介绍一下自己最熟悉的项目,并讲讲遇到的难题及解决思路==》websocket接收大数据时出现丢数据的情况2、说两个c++11里比较常用的特性==》锁和智能指针,guard_lock的用法和局限性,unique_lock用法,智能指针shared_ptr3、音视频同步==》讲了ffplay的三种同步方式4、ffmpeg里处理MP4文件播放==》先创建上下文,查找解码器,读帧,解码、播放5、avpacket和avstream的区别==》前者存储解码器数据,后者存放解码后数据6、音视频里的

2021-07-12 22:17:28 974

原创 FFMPEG--使用Filter实现YUV图像翻转

工具:ffmpeg过滤器模块相关过滤器,其创建过程如下:创建一个过滤器节点,如overlay:avfilter_get_by_name(“overlay”);创建一个过滤器上下文并将其添加到FilterGraph上,如:avfilter_graph_create_filter(&overlayFilter_ctx, overlayFilter, “overlay”,“y=0:H/2”, NULL, filter_graph); // overlay filter:视频合成

2021-05-26 17:10:34 752

原创 通过一个tcp连接获取客户端ip和端口

在多路实况下出现某几路视频卡顿时,最好的办法是分析流数据,但抓包时同时可能抓了多路视频流,一般会先分析日志,确定哪几路流存在问题,然后通过日志里的客户端ip和端口号去找到要分析的那路流,一般情况流媒体服务器的端口是554,地址也知道,比较好寻找,而客户端的地址信息就需要通过getsockname去获取,具体代码如下:struct sockaddr stAddr = {0};struct sockaddr_in stAddrIn = {0};long lNameLen = sizeof(struct s

2021-02-17 15:13:51 4136

原创 Win下判断线程是否还活着

bool bRet = false;LPDWORD lpExitCode = 0;bRet = GetExitCodeThread(ThreadHandle, &lpExitCode);if((bRet) && (STILL_ACTIVE != lpExitCode)){ void *pArgs = NULL; DWORD dwThreadid; CloseHandle((HANDLE)ThreadHandle); ThreadHandle = CreateThrea

2021-02-17 14:59:49 514

原创 FFMPEG操作流数据-获取aac音频文件

多媒体文件是一个容器,在容器里有很多的流(Stream/Track【翻译:轨】),如视频流、音频流、字幕流等。步骤解复用获取流(AVStream)读数据包(AVPacket)拼帧解码/编码渲染释放资源常用结构体AVFormatContext 格式上下文,保存这一路流的相关信息,如时间戳、解码器等AVStream 流相关AVPacket 包相关...

2021-01-23 16:55:17 1307 1

原创 Linux ffmpeg编译修改目标名(库合一)

目的解决一个项目同时存在多版本ffmpeg出现编译错误修改方法libavcodec/avcodecres.rcLine 43 VALUE “InternalName”, “libavcodec_target”libavcodec/libutvideodec.cppLine 114 utv->codec = CCodec::CreateInstance(UNFCC(avctx->codec_tag), “libavcodec_target”)libavcodec/libutvide

2020-09-22 11:14:56 2025

原创 SDL2源码编译生成目标实体libSDL2.so

目的解决默认编译得到的SDL2-2.so.0.7.0可能在不同机器上链接不上的问题方法解压源码后打开Makefile.in修改前:LT_LDFLAGS = -no-undefined -rpath $(libdir) -release $(LT_RELEASE) -version-info (LTCURRENT):(LT_CURRENT):(LTC​URRENT):(LT_REVISION)????(LT_AGE)修改方法1:LT_LDFLAGS = -no-undefined -rpat

2020-09-22 10:55:05 581

原创 Python3学习之路4 -- 字符串、序列

可以使用单引号将字符串包裹起来,也可以使用双引号,但务必要成对编写,不能一边单引号另一边双引号。切片也可以应用在字符串中。字符串和元组一样,一旦确定下来就不能再修改了。...

2019-08-04 22:47:39 165

原创 Python3学习之路3--列表、元组

# Author: TQSongnames = "hello my name is tqs"names = ["wnn", "tqs", "123", "good", "girl", "boy"]print(names)print(names[0], names[3])names.append("456")print(names)names.insert(1, "789")...

2019-07-29 23:17:02 149

原创 Python3学习2--if、while、for、三目运算符

简单的学习了变量的使用以及输入输出,现在就可以学习if…else、while、for了。在python中,你将看不见大括号,取而代之的是缩进,缩进的严格要求使得python代码显得十分精简和富有层次,但是必须要特别小心的处理缩进,否则出现的结果就会和期望相差甚远。今天学习中的条件判断语句和循环语句将会体会到缩进是如何代替其他语言中的大括号。条件语句条件语句的使用结构如下:if xxx: ...

2019-07-28 22:04:51 807

原创 Python3学习1--环境安装、输入输出

学习Python的目的并不是目前工作中需要,只是想在学习主语言之外学习一门脚本语言,而且目前Python确实很火也相对比较容易上手,更重要的是这也是为工作积攒实力,万一哪天机会就砸下来了呢。环境搭建这方面的内容不细讲,Python官网里面下,载一个最新的安装包安装即可,安装完成后需要把环境变量添加到系统变量的Path中,如图:安装完成后需要测试一下是否安装成功,打开cmd命令行,键入“...

2019-07-28 18:12:53 190

原创 github简单使用二--版本回退和版本前进

学会了版本库的创建后再需要的就是学习版本管理。版本回退在git-bash命令行里使用gitk命令查看可视化的版本情况:根据图中描述可知,只有一次提交记录,所处分支为master分支,与远程github中的origin仓库是关联在一起的,新增的内容为ReadMe.txt中的“first use github”。为了达到版本回退的目的,需要在之前的本地仓库中新增内容,为了简便,仅在R...

2019-06-18 18:24:27 815

原创 github简单使用一--上传文件至远程仓库

第一次使用github,最开始完全不懂如何去入手,经过一番了解之后总算知道该如何去入手,具体过程如下文所述。申请github账号在浏览器搜索框输入github.com,进入github页面进行注册,需要输入用户名(自定义)、邮箱、密码。填写成功后按照页面提示进行信息补充,最后还需要到注册邮箱中按指定步骤完成账号申请,至此,我就有一个可以使用的github账号了。创建仓库使用github...

2019-06-18 12:58:42 442

原创 C++学习笔记--new失败后的处理

众所周知,C++中使用new关键字申请内存成功时会返回申请的内存起始地址,并在该地址上调用构造函数。那么,有考虑过失败的情况吗?动态申请的处理方式C语言int *p = (int*)malloc(10000000000000000000);if(NULL == p){ //申请失败处理分支}else{ //申请成功处理分支 //..... free(p);}C+...

2018-12-23 23:07:02 3391 3

原创 C++学习笔记--C语言模拟this指针

都知道,C++中类的成员变量和成员函数是分开存储的,变量可以存储在堆、栈、全局区,而函数只能存在代码段,并且一个类只对应一套成员函数,那么如何通过类对象调用成员函数呢?答案是通过this指针,类对象将this指针传递给函数,所以函数能够使用类对象的成员变量,而this指针保存的就是当前对象的地址。这个传递的行为被编译器隐藏起来了,下面通过C代码模拟this指针的传递过程。头文件test.h#...

2018-10-25 23:26:54 3861 3

转载 如何转载他人CSDN博客

在参考“如何快速转载CSDN中的博客”后,由于自己不懂html以及markdown相关知识,所以花了一些时间来弄明白怎么转载博客,以下为转载CSDN博客步骤和一些知识小笔记。 参考博客原址:http:...

2018-10-05 15:53:47 151

原创 Qt学习之路28--拖放事件

什么是拖放事件?将一个文件往应用程序窗口里拖放时,操作系统能感知这个动作,并发送系统消息到应用程序后会产生一个拖放事件。怎么处理拖放事件?所有的QWidget对象都能处理拖放事件通过两个函数实现事件处理(分别对应拖和放): -void dragEnterEvent(QDragEnterEvent* event);这个事件处理程序在拖动过程中被调用,当鼠标拖动文件进入当前QWi...

2018-09-16 23:35:23 3619

原创 音视频--SDP协议

SDP:会话描述协议,是一种会话描述格式,为描述多媒体数据而设计。SDP协议介绍SDP 完全是一种会话描述格式(对应的RFC2327 , RFC4566)它不属于传输协议 ,它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议也是基于文本的协议,这样就能保证...

2018-09-10 22:57:44 1254

原创 Qt学习之路27--事件传递过程和事件过滤器

事件传递过程 在子组件中将事件进行处理后可能再将事件传递给父组件对象。 QEvent类是所有事件处理的父类QEvent中的关键成员函数–void ignore(); 接收者忽略当前事件,但事件可能传递给父组件 –void accept(); 接收者期望处理当前事件 –bool isAccept(); 判断当前事件是否被处理示例:事件处理的顺序先构建一个自定...

2018-09-09 23:32:43 7110 2

原创 音视频--视频参数基本概念

视频参数视频是利用人眼视觉暂留的原理,通过播放一系列的图片,使人眼产生运动的感觉。单纯传输视频画面,视频量非常大,对现有的网络和存储来说是不可接受的。为了能够使视频便于传输和存储,人们发现视频有大量重复的信息,如果将重复信息在发送端去掉,在接收端恢复出来,这样就大大减少了视频数据的文件,因此有了H.264视频压缩标准。帧率表示一秒播放的视频中有多少个帧,单位是FPS(Frame Per S...

2018-09-09 20:09:35 2715

原创 Qt学习之路26--事件处理、事件重写、关闭文本编辑器操作

消息处理模型 - GUI程序必须依赖操作系统运行 - GUI应用程序提供的功能必须由用户来触发 - 消息的产生一般是通过用户对应用程序进行了某种操作(如点击某个按钮),随之操作系统捕捉到这个操作,并让系统内核将这个操作事件转换成一个系统消息然后发送给应用程序,最后应用程序收到这个系统消息后就会调用相应的消息处理函数对这个用户操作进行最终的处理。系统内核会将系统消息发送给应用程序,那么...

2018-09-08 23:44:46 2810 1

原创 Qt学习之路25--QMap和QHash

在C++标准库中是有map容器的概念。QMapQMap是一个以升序键顺序存储键值对的数据结构QMap原型为class QMap

2018-09-08 00:43:05 14189

原创 Qt学习之路24--简易文本编辑器--实现可打开、编辑、保存文件操作

在前面几节,从学习主窗口QMainWindow开始都是为了简易的文本编辑器的开发,在QMainWindow中学习了菜单栏、状态栏以及工具栏,这正是构成一个简易文本编辑器所需的界面功能。 文本编辑器的主体界面如上,在之前学习QMainWindow时候也完成过部分组件的添加,在私底下我又将其余部分补充到代码里面,最终就形成这样的一个界面,包含菜单栏每个菜单及其快捷方式、工具栏里面的快捷操作,并通...

2018-09-06 23:35:28 14760 2

原创 Qt学习之路23--缓冲区QBuffer和目录QDir

缓冲区缓冲区的概念就是一段连续的存储空间Qt中使用QBuffer类进行缓冲区相关操作在Qt中可以将缓冲区看做是一种特殊的IO设备文件流辅助类是针对IO设备的,可以像操作文件直接作用于缓冲区只要有数据的读写和存取都可能会用到缓冲区缓冲区的使用可以简化数据传递过程,读写数据都是一个缓冲区对象 -如何使用:将缓冲区和文本流或数据流对象绑定,直接通过文件流对象操作缓冲区缓冲区使用场...

2018-09-03 23:39:07 2674

原创 音视频--RTSP协议

RTSP简介RTSP协议以客户端/服务器方式工作,如:暂停/继续、后退、前进等。它是一个多媒体播放控制协议,用来控制用户在播放从因特网下载的实时数据,因此 RTSP 又称为“因特网录像机遥控协议”。RTSP(Real-Time Stream Protocol)是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。 是TCP/IP协议体系中的一个应用层协议,...

2018-09-01 17:38:23 3112

原创 Qt学习之路22--文本流和数据流

Qt中的文件分为两类文本文件:文件内容是直接可读的字符数据文件:文件内容是二进制数据在上一节中的QFile直接支持文本文件和数据文件的读写,具体见https://blog.csdn.net/tqs_1220/article/details/82193502。如何将一个浮点数写入文本文件或数据文件?按照之前的方式可以直接通过QFile类将浮点数写入到文件。QFile f...

2018-08-30 23:05:15 3082

原创 Qt学习之路21--文件操作

Qt中IO操作的处理方式Qt通过统一的接口简化了文件与外部设备的操作方式,秉承了Linux下的“一切皆文件”。Qt中的文件操作与外部设备操作相同,文件操作就是一种特殊的外部设备,都属于IO操作。IO设备操作四部曲:打开设备、读设备数据、写设备数据、关闭设备。 打开设备 bool open(OpenMode mode)读取数据QByteArray read(qint64 maxsize...

2018-08-29 23:38:53 726 1

原创 Qt学习之路20--文本编辑组件

Qt中支持三种常用的文本编辑组件:QLineEdit:单行文本编辑组件QPlainTextEdit:多行普通文本编辑组件QTextEdit:多行富文本编辑组件,在普通的文本格式下增加了一些多媒体(图片视频等)的效果 在Qt中,越是在顶层的类相对来说功能就会越简单,而继承关系越靠后的类使用相对就会更复杂。三种编辑组件的异同点往编辑组件插入内容和获取内容QLin...

2018-08-27 23:21:00 623

原创 Qt学习之路19--主窗口QMainWindow之工具栏QToolBar、状态栏QStatusBar

工具栏存在的意义:

2018-08-26 23:02:21 6454

原创 Qt学习之路18--主窗口QMainWindow之菜单栏QMenubar

什么是主窗口? 主窗口通常是应用程序启动后显示的第一个窗口,是与用户进行长时间交互的顶层窗口,因为绝大的功能都是由主窗口进行提供,还有部分功能由对话框提供。 在Qt中直接支持主窗口的概念,通过QMainWindow类来提供主窗口所需的所有方法。...

2018-08-26 20:01:02 7868

原创 Qt学习之路17--布局管理器之向导界面

前前后后学习了四种布局管理器了,分别是盒子布局管理器QBoxLayout、网格布局管理器QGridLayout、表单布局管理器QFormLayout、栈式布局管理器QStackedLayout。练习可以通过这四种布局管理器实现一个向导界面,向导界面的作用就不用多说了吧,在电脑上装过软件的人都接触过,下一步、下一步、下一步、完成。向导界面就是用来指引用户操作的。 练习要求:在同一个界面...

2018-08-24 23:17:24 1761 1

原创 Qt学习之路16--布局管理器(QStackedLayout)和QTimer

前言QStackedLayout,通过名字里带有一个stack,大概可以猜到今天学习的布局管理器的行为应该和stack相关,也就是和栈相关,通过栈能想到栈的后进先出以及每次只能拿到栈顶的数据,没错,今天学的就叫栈式布局管理器,这是最特别的一个布局管理器。QStackedLayout特点所有组件垂直于屏幕的方向被管理被管理的组件都能够被显示在屏幕上但每次只有一个组件被显示在屏幕上...

2018-08-21 23:26:15 1708

原创 Qt学习之路15--布局管理器(QFormLayout)

前面两节学习了布局管理器中的QBoxLayout和QGridLayout。 今天学习Qt中的第三种布局管理器–QFormLayout 在正式介绍之前抛出一个问题,怎样设计下面这个GUI界面? 根据之前学习过的内容来看有以下三种方式: - 绝对定位,左边摆放QLabel,右边放QLineEdit。 - 嵌套使用QBoxLayout,在QVBoxLayout中嵌套使用QHBoxLayou...

2018-08-20 23:25:55 22471 5

原创 Qt学习之路14--布局管理器(QGridLayout)

上一节讲过以行列布局的QBoxLayout布局管理器,最后通过布局管理器嵌套的方式实现了两行两列的布局,今天我们学习另外一种布局管理器QGridLayout,它也能实现同样的功能。 由于网格布局管理器中的组件也是会随着窗口拉伸而发生变化的,所以也是需要设置组件之间的比例系数的,与QBoxLayout不同的是,网格布局管理器需要分别设置行和列的比例系数layout->setRow...

2018-08-19 23:07:10 54191 5

原创 Qt学习之路13--布局管理器(QBoxLayout)

布局管理器在之前的GUI开发中我们通常使用绝对定位的方式,通过move函数和resize函数进行位置确定,这种方式是直接在像素级别上进行定位,这样的方式就会存在一个比较严重的问题,那就是坐标信息无法进行根据窗口大小进行位置自适应。在Qt中有另外一种方案能够实现对窗口组件进行布局–布局管理器。通过使用布局管理器后能够使得窗口中的组件进行自动排列;当窗口大小发生变化后其内部的组件大小也会随之...

2018-08-19 22:11:00 2283 2

基于STM32的智能节水控制系统

本次设计一种IC卡刷卡收费节水控制系统实现对水资源的有效管理,拒绝浪费,节约用水。该系统采用IC射频卡作为系统控制钥匙来控制出水时间及出水量,这是利用一种现代无线射频感应技术,通过用户预估使用水量对应的时间达到节约用水的目的。通过键盘输入预设时间,经确认后刷卡认证一下即可出水,同时显示剩余时间和射频卡剩余水费,并控制电磁阀打开水龙头;显示预扣设定水费开始倒计,用完停水;中途如需停用按水控机上的暂停键即可,按下恢复键继续出水。 系统主要分为七大部 1、MCU控制器:STM32F103C8T6 2、按键部分用于设置时间和暂停出水操作 3、电源为普通数据线实现5V供电 4、存储芯片用于保存对应IC卡所剩余额 5、射频卡用于用户验证,蜂鸣器做提示工作 6、OLED显示屏显示所有信息,包括剩余时间和剩余水费,以及一些提示性界面 7、继电器和LED灯共同模拟水龙头的开关和工作状态

2021-03-28

基于STM32的语音功能的电子密码锁

本套智能入户门系统是基于STM32单片机的控制下实现的密码开锁和语音控制开锁。一、当用户在矩阵键盘上输入密码确认完成后由单片机驱动继电器打开电子锁模块,三次失败则报警。二、当选择单片机通过语音模块进行语音识别后与单片机中存储的信息进行匹配,在信息匹配正确的情况下由单片机驱动继电器模块打开电子锁模块然后打开房间的智能门系统。三、该系统支持报警功能、修改密码功能、显示信息功能。

2021-03-28

基于STM32的家庭安防控制系统

设计了一种基于互联网的家庭安防监控系统,实现防盗、防火、燃气泄漏、报警、通信等功能。对家的安全进行多方位的监测。 .该系统采用STM32F103C8T6做为主控对该监测系统进行控制,利用现代传感技术及WiFi通信技术。对室内烟雾,火焰,陌生人员进出,燃气进行监控并能通过WiFi进行数据实时传输及报警的新型安防监控装置。利用各类传感器对室内环境进行监测,通过OLED显示采集到的数据,通过蜂鸣器作为报警响应。

2021-03-28

基于stm32的电子密码锁

基于STM32单片机的控制下实现手机端与单片机通信,使用到stm32单片机、蓝牙模块、液晶显示、密码存储与更改、系统自动报警、4*4矩阵键盘、蓝牙调试助手 支持功能:键盘上设定好六位密码,可以在键盘上改密码, 用键盘输入设定的正确密码按确认后开锁,输入错误密码达到3次系统报警,使用手机接收到系统的蓝牙信号打开调试助手输入正确密码开锁,输入错误密码达到3次报警,液晶显示,用于直观地提示用户输入开锁密码、密码信息的正误提示、开锁信息的显示等,显示整个电子密码锁的工作状态。

2020-12-13

空空如也

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

TA关注的人

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