- 博客(19)
- 资源 (1)
- 收藏
- 关注

原创 qt+ffmpeg仿格式工厂
花了将近一个月做的项目。这个程序实现了格式工厂的基本功能:视频,音频,图片的格式转换,视音频拼接,裁剪,混流,分流,视频特效,添加字幕,支持视频录像带有一定的特效效果。内置视频播放器,实现视频播放暂停快进,快退,滑动条拖动视频进度。程序使用FFMPEG+Qt,期间也遇到过不少坑,其实好多时候只要自己塌下心来老老实实研究错误,总会找到解决方法,不要被不知名的错误吓到。其中有一些坑,在后面博客会介绍到
2017-08-17 19:13:01
2146
2

原创 c++即时通讯程序
记录下我上大学的第一个程序项目。第一次写程序,遇到了好多挫折,也学到了好多的书本学不到的知识。该程序主要是仿qq,实现了qq基本聊天的大部分功能包括视频聊天,语音消息,图片消息,添加好友,文件离线发送上传下载,好友分组,群聊等。网络方面集成心跳包和udp发送确认功能。本程序分为服务器和客户端两个程序,服务器使用libevent+qt+protobuf+mysql基本结构,客户端使用qt+pro
2017-03-06 15:24:57
4599
2
原创 epoll机制总结
看了一周的linux epoll源代码做一个总结。epoll源代码在eventpoll.c里。首先是调用epoll_create,内部调用sys_epoll_create,这个函数主要给epoll分配文件描述符fd和文件结构体struct file,并实现file、fd、epoll私有数据结构eventpoll的绑定,主要的函数是ep_alloc和anon_inode_getfd,ep_all...
2020-02-16 22:46:57
316
原创 c语言指针的小问题
一直以为自己对指针了如指掌今天居然被指针卡住了。打算用qsort对一个结构体排序,结构体如下typedef struct record_duration_element { int start_times; int end_times;}record_duration_element;排序代码如下static record_duration_element *re...
2019-08-07 18:50:59
213
原创 pjsip小结
最近一个月学了下pjsip的知识,小结下:pisip是一个sip的库,相比于osip和exosip封装层次比较高,实现起来也比较简单,并且集成了多媒体的功能,不仅仅是一个sip库。学习sip可以下载一些成熟的商用软件个人推荐x_lite(客户端),sip_server 2008(服务器),然后用wireshark抓消息学习sip流程。pjsip是一个sip库,pjsua是以pjsip为基础...
2019-07-28 21:51:56
3510
原创 c++线程使用
一直习惯用c语言的方法创建线程,即pthread_create和_beginthread,但总觉得这样不够面向对象。c++创建线程有两种方法:基于对象的方法和面向对象的方法。面向对象创建线程相比较面向过程的优点是可以复用一些公共函数,像线程的开始,线程的结束,线程的暂停等等。基于对象创建线程代码:class Thread{public: typedef std::function<void(...
2018-07-03 20:11:04
898
原创 ffmpeg开发:小知识点总结(持续更新)
1.ffmpeg打开音频或视频设备常常遇到中文名,前面博客介绍可以使用绰号名,但一定要注意必须只有avdevice-56.dll及以上的动态库版本才能支持以绰号名打开设备,以下不支持。2.ffmpeg向外发送数据包如果数据包太小会把许多数据包合并一起发送,如果所要发送数据包太大,会自动拆分发送,我的电脑ffmpeg会一次发送3000比特数据包。3.刚刚遇到的一个问题,向外发送udp/rtp包在代开...
2018-02-10 22:53:50
537
原创 ffmpeg开发:接受udp视频流
刚开始做代码实现接受udp数据流,总觉得要新开一个线程,接受到视频流放到缓冲区里,然后设置回调函数不断读取。其实ffmpeg已经帮我们做好了。直接调用avformat_open_input(&pFmt, buff, NULL, NULL),buffer内容为要打开的udp地址即可
2018-01-31 09:41:51
5125
6
原创 exosip资料记录
http://sipcommunicator.group.iteye.com/group/topic/8693SDP中m参数中IN是 INTERNET类型,目前仅支持IN
2018-01-28 16:22:34
834
原创 exosip鉴权及使用
刚刚调试成功exosip鉴权,现在总结下。1.sip注册。流程:首先客户端发送注册包不带鉴权信息,服务器探测到不带鉴权信息的register包会回复401,后客户端回复带鉴权信息的注册包,服务器验证密码和账号,通过就返回200成功包,不通过返回403访问拒绝。客户端注册方法:eXosip_register_build_initial_register,eXosip_register_send_re
2018-01-18 21:36:43
2141
原创 libcurl的一些坑
最近用libcurl+qt做了一个下载器,踩过不少坑,我来分享下自己遇到的坑,其他人都不要在犯了。1.在libcurl中,设置进度条用curl_easy_setopt(curlhandle, CURLOPT_XFERINFOFUNCTION, progress_callback);需要注意的是CURLOPT_XFERINFOFUNCTION所对应的回调函数参数必须是curl_off_t,不能使
2018-01-09 15:34:18
3413
原创 ffmpeg开发:qt上添加转换进度条
FFMPEG配界面之视音频转换进度。FFMPEG是一个非常强大的视频处理库,几乎所有视频播放器处理软件都离不开ffmpeg。下面来说说ffmpeg如何用qt显示视频处理的进度。说到进度,qt首先就会考虑到qprogressbar,qprogressbar首先设置进度条总长度,后设置进度数据。问题就是以什么数据作为总进度长度,以什么数据作为更新的进度长度?在我的程序是以视频的dts数据作为进度条
2017-09-03 19:58:53
1762
原创 ffmpeg开发:打开摄像头和麦克风
使用ffmpeg打开电脑的摄像头。用ffmpeg打开摄像头网上雷神有写,不过他的博客把摄像头的地址写死了。当遇到摄像头是英文的描述符时还好说,但是当遇到麦克风或者摄像头是中文描述符就非常坑爹了。当初打开麦克风时,麦克风描述符有中文,用win32的MultiByteToWideChar函数open_input提示打开错误,确实很崩溃。其实当设备有中文可以使用它的Moniker名,Moniker名
2017-09-03 19:02:47
3239
原创 ffmpeg开发:视频数据在qt显示
使用SDL在Qt窗口上显示。sdl1在Qt直接使用putenv窗口HWND就行,sdl2废除了这个api。sdl2该怎么用呢?其实也很简单。先获取Qt的窗口句柄,windows下QWidget.winId()获取窗口句柄强制转化为HWND类型,后SDL_CreateWindowFrom((void*)窗口句柄)即可把视频显示到Qt窗口上。实现视频的播放与暂停功能可使用SuspendThre
2017-08-26 22:05:50
1764
原创 ffmpeg开发:关于对错误pts () < dts () in stream的解决方法
关于对错误pts () 出现这种错误是由于视频pts大于dts。pts是视频播放时间,dts是送入解码器解码时间。所以一帧视频播放时间必须在解码时间点之后。解决方法是进行判断:if(packet.pts 产生错误的原因一般是对dts,pts操作不当。比如在进行视频分割时,常用的方法是视频截取后半段视频pts与dts减去前半段pts和dts。前半段pts可能比dts大(当解码的视频帧不是I帧时)
2017-08-25 21:46:49
5285
原创 ffmpeg开发:关于对Application provided invalid的解决方法
关于对Application provided invalid的解决方法,这个错误是ffmpeg开发中非常常见的错误,之前使用别人代码常常提示这个错误,百度基本找不到相关解决方法,当时也非常崩溃,但静下心来仔细研究这个错误,发现这个错误还是很好解决的。其实只要·沉下心来仔细分析,好多错误只是“纸老虎”。这个错误从字面意思可以看出是因为dts没有一直递增导致的。视频播放是通过pts和dts进行播
2017-08-24 21:08:13
10068
7
原创 使用c语言操控mysql总结
该程序服务器端使用mysql数据库,c语言操控。qt其实也有操控mysql的api,但当时写程序还没学到那,只学过原生态api,所以就使用c了。mysql在vs2013下的配置:一般mysql安装后都有c语言操控库,在mysql安装目录下。选择ALT + F7进入属性VC++目录->包含目录,把MYSQL/Connector.C下include路径拷贝到包含目录内。拷贝Connector.C+
2017-03-08 08:18:13
653
原创 protobuf使用总结
这次写的通讯程序使用protobuf作为自定义协议。protobuf buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。由于它是一种二进制的格式,比使用xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。下面是我用protobuf的自
2017-03-08 08:06:25
991
FFMPEG+QT仿格式工厂
2017-09-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人