- 博客(76)
- 资源 (43)
- 收藏
- 关注
原创 搭建了nginx直播,然后用ffmpeg推流以及vlc拉流播放的场景
最近在研究直播中各种音频和视频同步,以及音频视频处理的业务,所以自己搭建了一个简单的直播环境,用nginx做直播服务器,实现推流和拉流的场景模拟,首先nginx中的配置,是参考网上大神的配置。直接加入一个live的模拟server,然后ffmpeg推流的命令也是相当之简单,ffmpeg -re -i test.mp4 -f flv rtmp://localhost:1935/live,然后vlc直接输入网络串流地址,就可以播放,输入的可以是本地文件,也可以是网络上的rtmp之类的流。接下来想分析下ffmpe
2021-03-01 18:12:43
425
原创 ffmpeg 基础以及编解码流程简述
ffmpeg的一些基础和流程,记录下,加深理解。1 首先来说,重要的结构体AVFormatContext 环境上下文,对每个媒体或者网络媒体环境的管理类AVCodecContext 编解码上下文,某个流(音频或视频)的上下文环境,记录媒体信息AVCodec 具体编解码器,编解码器,用于媒体编解码AVPacket 编码包AVFrame 解码包2 公共的一些函数av_register_all()...
2021-02-12 12:30:06
536
原创 linux下的音频采集那些事儿
之前一直在windows下作多媒体,谁知道跑到linux下不灵了,在网上查了些资料,总算是有点思路了,主要是两大家族oss和alsa,选择了alsa来进行开发,编译alsa-lib和alsa-utils编译alsa-lib 是这样的,../configure --host= aarch64-linux-gnu --prefix=/usr/local/ --enable-shared --disable-python接下来就是make make install完成就是写了音频采集的线程,如下:
2020-08-30 12:36:57
713
转载 vlc在arm下的编译
VLC Media Player是和Mplayer齐名的优秀的开源播放器。我想用它休闲娱乐,也想做二次开发,当然不想后者的不成熟打扰前者,故做两种安装就很必要啦。官网上有讲如何安装和编译,但有些凌乱,现将我的实践记录并整理如下。I. 用于播放的安装Ubuntu下的安装很容易,在命令行下: $ sudo apt-get install vlc 如果想要插件,则在后面加上相应的插件选项即可:vlc-plug...
2020-08-20 18:43:38
1553
转载 qt表单上传文件的那些事儿
QT http上传文件实现的方式有点繁复,不过还是通过QNetworkAccessManager 以及QNetworkRequest QNetworkReply来实现,可以通过表单的形式来添加用户数据,为了区分是否时一次上传,还规范了boundary,至于表单中文件数据以及私有数据的上传,可以参考下文。Qt使用QHttpMultiPart发送文件的方法在上传图像时用到了提交表单的方法。 QNetworkRequest request; //request初始化 ...
2020-07-21 20:11:43
1225
转载 ffmpeg 在linux下的使用
1.FFmpeg编译1.1.安装yasm这里我是直接通过ubuntu包安装的,当然也可以通过编译源码来安装。sudo apt-get install yasm1.2.下载FFmpeggit clone https://git.ffmpeg.org/ffmpeg.git1.3.配置、编译FFMPEG./configure --prefix=host --enable-shared --disable-static --disable-doc 关于FFMPEG的配置参数,我
2020-07-13 16:00:23
733
转载 arm下编译ffmpeg
交叉编译器版本:4.8.3依赖x264,lamex264:1.wget ftp://ftp.videolan.org/pub/x264/snapshots/last_stable_x264.tar.bz22.tar xvf last_stable_x264.tar.bz23.cd x264-snapshot-20170903-2245-stable4.export CC=arm-linux-gnueabi-gcc5.export AR=arm-linux-gnueabi-ar
2020-07-09 20:05:59
1767
原创 ffmpeg的那些事儿
今天在做编解码时,遇到一个奇怪的问题,就是av_image_alloc 导致内存泄漏,这点比较纳闷,场景是这样的,在视频传输过程中,需要根据网速来切换码流大小哦,如果带宽不够自动切换低码流传输,于是我将采集的1080p的视频转化成yuv格式发送。过程如下:首先初始化编解码环境: if (_thumbCodecContext != nullptr && _thumbCodec != nullptr) { return 0; } int ret; AVCodecID c
2020-07-03 15:10:50
1145
原创 关于jpg的那些事儿
bmp的码流相当费空间,所以一般在传输时,都会编码为其他格式,就效率来说,一般rgb32的原始码流在转换为yuv时是减半的,如果说对画面质素要求不高的,可以转换为jpg码流,当然h264是传输码流的首选,代码如下#include <iostream>extern "C"{#include <libavformat/avformat.h>#include <libswscale/swscale.h>}#pragma comment(lib,"avfor
2020-07-01 17:57:32
245
原创 ffmpeg关于sws_scale的那些事儿
随便聊聊,sws_scale 在对rgb处理上,基本都是把数据放于一个通道,而且针对行来扫描,所以linedata就是图像的宽 * 通道数,而在对yuv的处理上,基本上都是依据具体的格式,分为三个通道来处理下面对其函数参数进行详细说明:1.参数 SwsContext *c,转换格式的上下文。也就是 sws_getContext 函数返回的结果。2.参数 const uint8_t *const srcSlice[],输入图像的每个颜色通道的数据指针。其实就是解码后的AVFrame中的data[..
2020-07-01 17:34:59
1330
原创 windows ui的那些事
说起来,从毕业到现在一直在做UI这块,不过直到最近才大概明白了点,其实就那一套,包括注册窗口,创建,显示和刷新以及消息循环。简单的流程辅以windows api,可以实现许多复杂的功能,我对这点研究的不太多,所以也没什么发言权。最近研究音视频,才觉得,原来所做的都是小意思,重点在这里,窗口的话,只是一个载体,有这个载体,可以得到一个画布,在哪块画,画什么,就看画师的技巧。windows 在...
2020-05-02 22:06:44
218
原创 vscode 使用的那些事儿
最近在ubuntu下使用了下vscode,感觉马马虎虎,可能对vscode还处于初级阶段,多多挖掘它的好处吧是这样的,hello world 很新鲜,搞两下可以过了,但是一旦工程中包含的多了,那就得费一番功夫了首先来说打开目录,然后源文件都在里边,可以搞一下,然后新建launch.json,这个是用来为执行准备环境的,所以如下{ "version": "0.2.0", ...
2020-04-10 17:30:08
171
原创 开启 Windows 的 FTP 服务,并创建用户
在windows 10 家庭版下搭建ftp服务器,并创建用于登录的用户。创建用户,不能在一般条件下创建,一般在“我的电脑”右键选择“管理”然后在“计算机管理”中选择“本地用户”进行添加用户即可。但是Win10中没有“本地用户”这一功能:既然没有就尝试使用“运行”命令的方式调用“本地用户及组”的功能吧。步骤:快捷键:“win+R” ->输入“lusrmgr.msc”打开“本地用户及组...
2020-03-27 20:37:31
960
原创 脚本的那些事儿
最近学习ubuntu,不禁对linux系统的脚本产生了浓厚的兴趣,使然之下,越来越觉得兴趣浓厚,不过随着深入,发现一些命令都记得模糊了,之前都是简单的应用 cp mount sudo mv fdisk touch mkdir make nmake configure tar zip 等也没有做一个分类,学本来,各种正则式,混合着命令,看起来都糊涂了,[[]] [] {} () $$ -a -f -...
2020-03-24 16:59:48
167
原创 linux进程间的那些事儿
写这篇文章之前,我对linux的进程间通讯还是有些畏惧的,不过看了一些其它文章之后,觉得linux进程间远比我学到的要难得多,首先来说,linux下线程的概念被淡化了,线程又名轻量级进程。线程机制是现代编程技术中常用的一种抽象,提供了在同一程序中共享内存地址控件的一组线程。这些线程可以共享打开的文件和其它资源。线程机制支持并发程序涉及技术,可以保证真正并行处理。linux实现线程的机制非常独特,从...
2020-03-09 14:17:07
262
原创 关于QT富文本的那些事儿
去年折腾的一个项目,其中的某个部分就是在一段文字中的重点突出某个符号,采用不同的字体和颜色,一开始我还不太明白,后来才开始理解了原来是要富文本显示,这块目前用QT实现,然后查了一些富文本的例子,QLabel控件是支持富文本显示的,只不过网上的一些基于正则表达式的例子不能对单个字符过滤,所以下面改进了一些,不多说了,直接上代码QString strSupplement = QString::f...
2020-03-03 13:20:33
496
原创 windbg调试的那些事儿
这两天一直在查一个qt程序的异常崩溃,把多年不用的windbg拾起来真实不容易,记得之前用的时候,敲命令熟悉的不行,而且那个symbols也是轻松就下载下来了,想故技重施吧,命令忘记的都差不多了,汗。先来熟悉一下creator的环境,配置cdb调试环境,需要工具->选项->构建和运行->Debuggers->中配置,自动检测到CDB然后路径,分别标注Name和Pat...
2020-02-26 20:16:01
379
原创 关于网络的那些事
重拾基础,今天要来说一下关于网络的那些事,特意找了一些资料来学习笔记。iocp是Windows中比较经典的一个模型,这个模型堪称全异步通信,所以找了实例强悍的一位大牛来学习分析。先看主要的APIHANDLE CreateIoCompletionPort(HANDLE fileHandle, //连入的套接字句柄,没有置空 ...
2020-02-21 11:04:18
213
原创 聊一聊网络的那点事
最近在抓一些基础,所以偶尔也会写一些实例程序,可能写的有点糙,所以拿上来大伙品评品评。服务端代码:#include <winsock2.h>#include <windows.h>#include <stdio.h>#pragma comment(lib,"ws2_32")#define PORT 5150#define DATA_BUFSI...
2020-02-20 17:27:06
172
原创 windows网络的一点整理
基于对网络的一点兴趣,突然之间想总结以下windows网络相关的一些内容。通常的网络io模型有四种1 同步阻塞(blocking io)2 同步非阻塞(non-blocking io)默认创建的socket都是阻塞的,非阻塞io要求socket被设置为nonblock,3 io多路复用(io multiplexing),又称为异步阻塞io,经典的reactor模式。4 异步io...
2020-02-20 15:55:13
250
原创 关于生存-我想说点什么
不太想写关于这个命题的一些文章,但却又时时刻刻在琢磨着该如何更舒适的生存下去,尤其是今年察觉了,快乐少了,皱纹多了,钱包瘪了,岁数大了,无忧没了,烦恼多了。最近在看关于分布式运算方面的帖子,顺便逛一逛论坛,也是基于朋友的一些建议,所以关注了程序员生存相关。突然看到有个同行在网上絮叨,关于程序员怎么接私活。https://blog.youkuaiyun.com/qing_gee/article/deta...
2020-02-19 16:35:29
170
原创 qt傻瓜式应用
最近也在研究QT的一些核心代码和应用部署相关内容,关于qtcreator在配置工程中shadow build和非shadow build还是有不同的,这不刚刚遇到 一个莫名其妙的问题,在一个widget中,添加了两个按钮,之后运行的时候发现崩溃了。我debug之后,没有任何思路,找了半天,网上大部分都说非法指针,或者空指针,但是调试发现并没有空指针,所以我懵了。主要是这类问题调试的话,没有任何...
2020-02-19 15:49:53
137
原创 关于QT发布时需要注意的地方
以前都是静态编译好环境之后,直接拷贝可执行文件和资源文件发布,windows下发布程序的时候,竟然遇到了不是可执行的应用程序以及缺少相关的运行库,对于前者已在上一篇博文中解决了,遇到问题也是各种搜索,至于缺少运行库的问题,只要定位到相关的可执行文件目录,然后执行windeployqt,即可将依赖的库拷贝进去,然后通过相应的打包程序,打包即可。...
2019-12-05 15:50:48
144
原创 关于QDoubleValidator增加上下限无效的解决
一般设置QDoubleValidator是不生效的,因为QT是依据每次输入都要判定一次,所以这时候需要针对基类的validator重新实现,下面是判断从10.0-1000.0,小数点只有一位的一个测试用例class WeightDoubleValidator:public QDoubleValidator{public: WeightDoubleValidator(double ...
2019-12-05 11:10:25
2437
2
原创 关于QT编译成的程序在winxp下运行提示不是有效win32应用程序的解决
昨天纠结了好长时间,今天才有点眉目,果然是QT的配置pro文件有点坑,需要加上以下内容以兼容XP平台win32 { QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01 QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE,5.01 DEFINES += _ATL_XP_TARGETING# ...
2019-12-03 09:54:15
3037
1
转载 QtCharts总结
开始研究下qt的charts的一些知识,由于刚开始研究,有什么错误欢迎大家指正。一般用到简单折线的话,通常是下面的思路。先创建Series,然后将Series添加到chart中。创建Axis添加到chart中,然后在添加到Series中。绘图只需要控制chart以上的内容就可以了,chart不需要中途销毁创建只画图不需要交互,简单显示 用QChartView + QChart...
2019-10-10 10:39:53
536
原创 windows常见窗口样式和控件风格以及类样式
Windows常见窗口样式和控件风格王佰营 徐丽红一、窗口样式WS_POPUP 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)WS_CHILDWINDOW 子窗口(不能与WS_POPUP合用)WS_MINIMIZE 创建窗口拥有最小化按钮WS_MINIMIZEBOX 创建窗口拥有最小化按钮,须同时指定WS_SYSTEM样式WS_VISIBLE 可见状态WS_DI...
2019-08-05 07:39:30
1622
原创 ffmpeg 被否决的版本冲突
最近在练习ffmpeg开发音视频的一些内容,发现ffmpeg由于版本的冲突,有些api已经不再使用。所以抽时间整理一下av_free_packet这个api的使用已经替换为 av_packet_unref,两者在使用上没有任何的不同,就是API的替换AVStream::codec 这个成员已被否决使用,与之替换的是AVStream::codecpar,此成员保留了AVStream...
2019-07-21 12:38:20
741
原创 win32显示图片
一直对win32 程序没什么研究,今次需要从基础抓起,写了一个测试程序,显示bmp图片,首先还是windows 基本程序,然后处理win_paint消息,置入如下函数void OnBnClickedBtnShowBmp(HWND hWnd){ static TCHAR szFileName[MAX_PATH]; HWND hwnd; HDC hd...
2019-07-18 17:44:38
2448
转载 windows 编译libtorrent
转载https://blog.youkuaiyun.com/z345436330/article/details/89068299花了几天的时间,查找了很多资料,基本上没有找到能够编译成功教程特留下此篇博客已做参考:windows编译libtorrent需要依赖于OpenSSL库,和boost库,建议直接下载一. 编译OpenSSL的库编译OpenSSL网上教程一大堆,自...
2019-07-14 00:26:13
476
转载 android 开源项目
从网上看到几个开源项目,最近在学习android,所以记录下来,方便学习http://www.sohu.com/a/215922374_6116011微阅一款 新闻客户端, MVP + RxJava + Retrofit + Dagger2,总体体验效果还不错,功能和数据相关还算齐全。作者提供了Kotlin和Java两个版本。Kotlin版本:https://...
2019-07-09 08:42:38
196
转载 vlc源码分析二
vlc音视频同步vlc播放里媒体时实现音视频同步,简单来说就是发送方发送的RTP包带有时间戳,接收方根据此时间戳不断矫正本地时钟播放音视频时根据本地时钟进行同步播放。首先了解两个概念:stream clock 和system clock,stream clock是流时钟,即打包RTP中的时间戳,system clock是本地时钟,当前系统的tick。当第一个rtp包来到时fSyn...
2019-07-01 21:14:12
1025
转载 vlc源码分析一
原文地址https://www.cnblogs.com/jiayayao/p/6736201.html首先,此篇文章是借鉴的网上一位大牛的神作,我只是借此学习并整理出来,但愿对自己和各位都有帮助。RTSP的会话流程一 查询服务器端可用方法C--S : OPTION request //询问都有哪些方法可用S--C : OPTION response...
2019-07-01 20:11:00
1126
转载 libevent多线程信令处理
https://blog.youkuaiyun.com/flyingleo1981/article/details/51862857因为原作者是在linux平台下码的代码,所以我将其中不同的api提出来,简单的定义了下,只为以后编写代码调试用/*multiserver.h */#pragma once#include <stdio.h>#include <stdlib...
2019-06-27 14:50:21
348
转载 stun 服务器
转自:https://gist.github.com/zziuni/3741933# source : http://code.google.com/p/natvpn/source/browse/trunk/stun_server_list# A list of available STUN server.stun.l.google.com:19302s...
2019-06-23 17:44:41
1722
转载 环形缓冲区设计
流的处理很多地方都用到了环形缓冲区,其实就是开辟的一段内存区域,重复使用,有流经过时,就写入里边,当前的写入点,可以是缓冲区中的任意一点,当然,此时读入点和写入点重合的话,表明此时的缓冲区已被占满,流的尺寸太大。class CCycleBuffer{ public:bool isFull();bool isEmpty();void empty();int getLeng...
2019-06-13 14:40:02
274
转载 directshow捕获摄像头数据
directshow捕获摄像头的数据并显示#include "stdafx.h" #include <DShow.h> #include <Guiddef.h> #include <strmif.h> #define CHECK_HR(s) if (FAILED(s)) {return 1;} #define SAFE_RELEASE...
2019-06-12 13:32:38
2288
1
转载 ANSI,UNICODE,UTF8之间的相互转换
经常用到多字节,unicode之间转换,这次从网上摘抄了些代码,用以记录。std::wstring AnsiToUnicode(const std::string &strAnsi){ //获取转换所需的接收缓冲区大小 int nUnicodeLen = ::MultiByteToWideChar(CP_ACP, 0, strAnsi.c_str(), -1...
2019-06-01 10:57:34
702
转载 二维码的生成和应用C++
现在越来越多的商店和应用都要扫码进行一些应用,所以扫码一时成为点对点连接和多点登陆的应用,今天看了一个二维码的库,感觉还不错,可以实现二维码的生成,封装的信息格式可以自己封装。https://github.com/fukuchi/libqrencode二维码的库的地址,支持cmake编译,编译之后,就可以直接应用了,会遇到一个getopt的错误,在windows平台下,只需把with_too...
2019-05-31 16:19:05
857
转载 duilib 自定义list(一)
duilib库之前也用过一段时间了,但是对于其机制老是模糊不清,所以现在应用起来也是不太顺畅,所以自定义一个list也是花费很长时间,看来记录的确很重要了。下面仿照duilib给出的实例,来自定义列表大概思路都是自定义CListContainerElementUI作为列表项,然后加载xml文件,每添加一项列表项,就加一条记录。列表项如下:<?xml version="1.0" e...
2019-05-31 16:11:50
1520
swift桌面聊天代码
2016-10-10
SDL和ffmpeg实例
2016-06-01
ffmpeg yuv文件处理
2016-06-01
Window api函数实例讲解
2016-04-26
OLE2编程技术
2016-04-15
UNIX环境高级编程
2015-12-20
cpp开源框架
2015-12-18
windows程序设计源代码
2011-09-26
live555搭建的rtsp服务器发送当前屏幕(x264)
2017-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人