自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(300)
  • 资源 (6)
  • 收藏
  • 关注

转载 ORACLE数据库打开报ORA-03113错误简单快速办法

ORACLE数据库打开报ORA-03113错误简单快速办法

2022-08-17 15:30:56 7291

转载 Git三大特色之Stage(暂存区)

这是开篇有人说,暂存区是 Git 最精彩的设计,同时也是最难理解的部分,两者我都感觉不太明显,但当我想写关于暂存区的理解后,发现的确不怎么好讲,这个玩意,有点只可意会的感觉,用 Git 用熟练了,很自然体会到暂存区设计的精彩之处。在我看来,学习其他命令之前,对暂存区有一个概念和大概理解是非常重要的,因为,很多命令都涉及到了它。为什么 commit 之前要先 add 一下呢?我在刚接触 Git 命令的时候,对 Git 没什么概念,就是赶鸭子上线式的学习,用到什么,就去 Google 什么,例如第一

2022-05-11 18:54:51 5639

转载 ffplay源码分析7-播放控制

7. 播放控制7.1. 暂停/继续暂停/继续状态的切换是由用户按空格键实现的,每按一次空格键,暂停/继续的状态翻转一次。7.1.1 暂停/继续状态切换函数调用关系如下:main() -->event_loop() -->toggle_pause() -->stream_toggle_pause()stream_toggle_pause()实现状态翻转:/* pause or resume the video */static void stream

2022-01-01 23:01:21 417

转载 ffplay源码分析6-音频重采样

6. 音频重采样FFmpeg解码得到的音频帧的格式未必能被SDL支持,在这种情况下,需要进行音频重采样,即将音频帧格式转换为SDL支持的音频格式,否则是无法正常播放的。音频重采样涉及两个步骤:打开音频设备时进行的准备工作:确定SDL支持的音频格式,作为后期音频重采样的目标格式 音频播放线程中,取出音频帧后,若有需要(音频帧格式与SDL支持音频格式不匹配)则进行重采样,否则直接输出6.1 打开音频设备音频设备的打开实际是在解复用线程中实现的。解复用线程中先打开音频设备(设定音频回调函数供SD

2022-01-01 22:59:19 490

转载 ffplay源码分析5-图像格式转换

5. 图像格式转换FFmpeg解码得到的视频帧的格式未必能被SDL支持,在这种情况下,需要进行图像格式转换,即将视频帧图像格式转换为SDL支持的图像格式,否则是无法正常显示的。图像格式转换是在视频播放线程(主线程中)中的upload_texture()函数中实现的。调用链如下:main() -- >event_loop -->refresh_loop_wait_event() -->video_refresh() -->video_display() -->

2022-01-01 22:57:02 407

转载 ffplay源码分析4-音视频同步

4. 音视频同步音视频同步的目的是为了使播放的声音和显示的画面保持一致。视频按帧播放,图像显示设备每次显示一帧画面,视频播放速度由帧率确定,帧率指示每秒显示多少帧;音频按采样点播放,声音播放设备每次播放一个采样点,声音播放速度由采样率确定,采样率指示每秒播放多少个采样点。如果仅仅是视频按帧率播放,音频按采样率播放,二者没有同步机制,即使最初音视频是基本同步的,随着时间的流逝,音视频会逐渐失去同步,并且不同步的现象会越来越严重。这是因为:一、播放时间难以精确控制,二、异常及误差会随时间累积。所以,必须要采

2022-01-01 22:55:10 549

转载 ffplay源码分析3-代码框架

3. 代码框架本节简单梳理ffplay.c代码框架。一些关键问题及细节问题在后续章节探讨。3.1 流程图3.2 主线程主线程主要实现三项功能:视频播放(音视频同步)、字幕播放、SDL消息处理。主线程在进行一些必要的初始化工作、创建解复用线程后,即进入event_loop()主循环,处理视频播放和SDL消息事件:main() -->static void event_loop(VideoState *cur_stream){ SDL_Event eve.

2022-01-01 22:50:26 345

转载 ffplay源码分析2-数据结构

2. 数据结构几个关键的数据结构如下:2.1 struct VideoStatetypedef struct VideoState { SDL_Thread *read_tid; // demux解复用线程 AVInputFormat *iformat; int abort_request; int force_refresh; int paused; int last_paused; int queue_attach

2022-01-01 22:48:41 152

转载 音视频同步原理及实现

本文主要描述音视频同步原理,及常见的音视频同步方案,并以代码示例,展示如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放。内容如下:1.音视频同步简单介绍2.DTS和PTS简介2.1I/P/B帧2.2时间戳DTS、PTS3.常用同步策略4.音视频同步简单示例代码1.音视频同步简单介绍对于一个播放器,一般来说,其基本构成均可划分为以下几部分:数据接收(网络/本地)->解复用->音视频解码->音视频同步->音视频输出。基本框架如下图所示:为什么需

2021-12-26 21:59:33 921 1

原创 visual studio code 1.61.2 c++ debug环境配置

1、tasks.json配置{ "version": "2.0.0", "options": { "cwd": "${workspaceFolder}/build/" }, "tasks": [ { "label": "cmake", "type": "shell", "command": "cmake", "args": [ ...

2021-12-14 19:23:34 919

转载 FFMPEG结构体:AVPacket解析

因为FFmpeg更新的比较快,API也会跟着有所变动,所以声明一下,本文使用的FFmpeg版本为V3.3.5。1.AVPacket简介AVPacket是FFmpeg中很重要的一个数据结构,它保存了解复用(demuxer)之后,解码(decode)之前的数据(仍然是压缩后的数据)和关于这些数据的一些附加的信息,如显示时间戳(pts),解码时间戳(dts),数据时长(duration),所在流媒体的索引(stream_index)等等。对于视频(Video)来说,AVPacket通常包含一个压缩的F

2021-11-25 15:23:41 1287

转载 VSCode 调试

VSCode 调试更全面的信息可以参考官方 调试手册 ,以下记录我用 VSCode 调试的一些经验。调试配置想要在 VSCode 里调试,需要配置两个文件 tasks.json 和 launch.json 。tasks.json:用于构建任务,也就是编译链接程序。 launch.json:用于配置调试环境,例如调试器(gdb),可执行文件路径等。这两个文件按 F5 后会自动在 .vscode 目录下生成。tasks.json一般默认生成的 tasks.json 文件如下:

2021-11-24 19:04:52 4033 1

转载 个人关于FFmpeg编解码中涉及到的pts总结(关于时间戳和时间基)

想要播放一个视频,需要拿到视频画面和音频数据,然后对比一下他们的时间,让他们的时间对齐,再放入显示器和扬声器中播放。在FFmpeg里,对于视频,它把画面一帧一帧增加认为是一个单元,因此对于视频来说,一个帧率为10帧每秒的视频,那么在1秒内它就是1 2 3 4 5 6 7 8 9 10这样的一个计数,可以简单地认为这里的1 2 3 4 5 6 7 8 9 10就是其中的一个时间戳(pts)解码部分:AVStream.time_base是AVPacket中pts和dts的时间单位。解码时通过av_read_

2021-10-11 16:53:19 3396

原创 ffmpeg编译命令

1、ffmpeg编译命令./configure --prefix=/usr/local --enable-shared --enable-libx264 --enable-libwebp --enable-nonfree --enable-gpl --enable-libfreetype --enable-libfontconfig --enable-libfribidi --enable-debug --disable-asm --disable-stripping --enable-open

2021-09-28 19:04:06 303

原创 docker基本命令

1、登录镜像服务器命令sudo docker login -u [user] -p pwd hostname2、host模式启动容器docker run --network=host --name 容器名 -d 镜像ID /bin/bash3、登录镜像docker exec -it 镜像ID /bin/bash

2021-09-28 18:58:54 74

原创 cmake编译注意点

1、链接静态库和动态库target_link_libraries(可执行文件, -Wl,--start-group, ${CMAKE_CURRENT_SOURCE_DIR}/libs/libzlog/libzlog.a, -Wl,--end-group)链接库链接:-Wl,--start-group与Wl,--end-group是一组group,表示组内的静态库不存在先后顺序。2、设置编译flagif (UNIX AND NOT APPLE) set(CMAKE_CXX_FLA...

2021-09-28 18:52:19 984

原创 服务端开发信息收集

1、处理http1.x协议的c库:http-parser

2021-09-02 09:27:35 62

原创 win10搭建wsl+visual studio code c/c++开发环境

1、microsoft storage搜索ubuntu(免费)或centos(收费)安装,我安装的ubuntu。2、linux系统安装之后目录已经映射到windows文件系统。3、进入windows的ubuntu的系统文件夹,资源管理器输入:\\wsl$4、进入ubuntu系统后输入code . 即可打开当前目录的工程内容。5、安装插件Remote-WSL、C/C++、C++ Intellisense,重启visual studio code,ubuntu会安装visual code ser

2021-08-18 10:19:04 298

转载 海康摄像头PS流格式解析(RTP/PS/H264)

概览上文记录了如何模拟 SIP Server 和 SIP Client 基于 GB28181 从海康 IPC 摄像头获取 PS 流,本篇文章结合实例,用于记录分析推送过来的 PS 流的内容及结构。上图为国标 GB28181 关于数据封装说明,能够接入 GB28181 平台的 IPC 符合上述标准。先行准备如果已经能够接收到海康的 RTP 流,那么用 wireshark 来看就行,或者下载我本次使用的二进制数据,它就是 wireshark 的 Payload 部分:hikvision-ps

2021-07-19 10:31:17 7810

转载 流媒体:RTMP 协议完全解析

转自:流媒体:RTMP 协议完全解析 - 知乎 (zhihu.com)背景RTMP(Real Time Messaging Protocol) 是由 Adobe 公司基于 Flash Player 播放器对应的音视频 flv 封装格式提出的一种,基于TCP 的数据传输协议。本身具有稳定、兼容性强、高穿透的特点。常被应用于流媒体直播、点播等场景。常用于推推流方(主播)的稳定传输需求。一、RTMP 的传输:消息块 & 消息封包传输RTMP 协议为了维持稳定连续传递,避免单次传输数据量问题,

2021-07-19 09:49:43 1491

原创 mongodb研究

mongodb研究mongodb大部分操作都在内存中,但mongodb并不是单纯的内存数据库,甚至个人认为不属于内存数据库。相反,redis就是一个不折不扣的内存数据库,mysql是一个不折不扣的硬盘数据库。对比:1、持久化方式:redis所有数据都是放在内存中的,持久化是使用RDB方式或者aof方式。mongodb的所有数据实际上是存放在磁盘的,所有要操作的数据通过mmap的方式映射到内存某个区域内。然后,mongodb就在这块区域里面进行数据修改,避免了零碎的硬盘操作。至于mmap的

2021-07-15 09:24:57 1081

原创 cgo编程

一、编译和链接参数1、编译参数:CFLAGS/CPPFLAGS/CXXFLAGS编译参数主要是头文件的检索路径、预定义的宏等参数。CFLAGS:对应c语言编译参数(*.c),CPPFLAGS对应c/c++代码编译参数(*.c/*.cc/*.cpp/*.cxx),CXXFLAGS对应纯C++编译参数(*.cc/*.cpp/*.cxx)。2、链接参数:LDFLAGS链接参数主要包含链接库的检索目录和链接库的名字。链接库不支持相对路径,必须为链接库指定决定路径。CGO中的$(SRCDIR)为当

2021-07-15 09:24:17 631

原创 linux下如何判断动态库是否-g编译

objdump --debugging libmedia.soobjdump --debugging libmedia.a

2021-07-14 09:04:34 404

转载 如何比较golang中的结构体是否相等

转自:https://blog.csdn.net/jcetpoor/article/details/108946530如果是相同的无复杂类型的结构体创建的对象 可以直接使用 == 对比值和指针简单类型可排序的数据类型整型Integer浮点型Floating-point字符串String可以比较的数据类型除了上述三种外,还有Boolean,Complex,Pointer,Channel,InterfaceArray复杂类型 不可比较的数据类型SliceMapFunc

2021-07-02 16:30:31 2399

转载 ldconfig详解 Linux 共享库: LD_LIBRARY_PATH 与ld.so.conf (新增库文件)

转自:http://blog.sina.com.cn/s/blog_698f90230100xedt.htmlLinux 运行的时候,是如何管理共享库(*.so)的?在 Linux 下面,共享库的寻找和加载是由/lib/ld.so 实现的。 ld.so 在标准路经(/lib, /usr/lib) 中寻找应用程序用到的共享库。但是,如果需要用到的共享库在非标准路经,ld.so 怎么找到它呢?目前,Linux 通用的做法是将非标准路经加入 /etc/ld.so.conf,然后运行 ldconfig 生.

2021-07-01 17:03:56 1120

转载 https加解密过程

1、强枚举类型枚举是名称对应到数值,也可以是匿名的,匿名会有意想不到的用处,是编译时期的名字,会得到编译器的检查。当程序中需要数值的名字时,可用下面三种方式表示:a、第一种 宏宏的弱点在于其是预处理阶段的名字,是做替换,常用大写字母区别正常的代码。...

2021-06-23 09:50:42 458

转载 ldconfig , ldd 与 LD_LIBRARY_PATH 之间的关系

转自:https://www.cnblogs.com/sddai/p/10397510.html#注意事项64位的linux机器上的默共享库的查找路径为:/lib64 /usr/lib64。实测发现不会搜索/lib /usr/lib。而且以上的两个目录没有什么so文件。/usr/local/lib64、/usr/local/lib 这两个目录也不会搜索的。 动态库的搜索路径搜索的先后顺序是: //注释:居然没有当前路径**   1.编译目标代码时指定的动态库搜索路径; //LDIRNAME   2

2021-06-22 13:53:33 369

转载 HLS-搭建Nginx流媒体服务器

Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功能相对比较完善的流媒体服务器.这个流媒体服务器可以支持RTMP和HLS(Live Http Stream)从安装开始Nginx的安装参照我之前的这个:http://blog.csdn.net/redstarofsleep/article/details/45092127在configure的时候需要增加..

2021-06-21 10:51:28 1710

转载 探究 Nginx 中 reload 流程的真相

转自:今天这篇文章主要来介绍下 Nginx 的 reload 流程。实际上在之前文章中,在更改了 nginx 配置文件时,我们都会执行 nginx -s reload 命令,我们执行这条命令的原因是希望 nginx 不停止服务始终在处理新的请求的同时把 nginx 的配置文件平滑的把旧的 nginx.conf 配置更新为新的 nginx.conf 配置。这样一个功能对于 nginx 非常有必要,但是有时候我们会发现在执行 nginx -s reload 命令后,worker 子进程的数量会变多了,这

2021-06-15 16:53:50 467

转载 如何将HLS延时缩短至4秒,HLS+技术详解

转自:在直播应用中,RTMP 和 HLS 是两种较为成熟且广泛应用的流媒体协议,基本上可以覆盖所有客户端。RTMP 是互联网 TCP/IP 五层体系结构中应用层的协议,主要优势就是实时性高,基本可将直播延时控制在3秒以内,因此广泛应用于低延时直播。HLS是由 Apple 公司实现的基于 HTTP 的流媒体传输协议,拥有性能高、完美支持 iOS等优势。相比于 RTMP 协议,HLS 无需在移动端安装 APP,同时兼容HTML5,因此在移动直播的传播和体验上都拥有巨大的优势。不过HLS 的实时性较差,业

2021-06-11 16:48:23 1185

转载 关于hls切片和rtmp视频源的gop有关

二.GoP性能调优分析Group of Picture(以下简称GoP)顾名思义就是有一组帧组成的一个序列。Wikipedia上给出的一个图简单的解释了GoP是怎么回事GoP由I帧开始,后面跟随者一组B帧和P帧,直到下一个I帧之前的帧为一个GoP。了解了GoP之后,就会发现播放器只有在拿到某个GoP中的I帧之后才能播放视频。对于GoP来说,编码器都是可以进行设置的,像OBS,ffmpeg等程序可以通过对应的设置和参数对视频的GoP进行设置。那么引出了一个问题:GoP到底应该设置多大...

2021-06-11 16:42:29 963

原创 g++编译命令行参数源文件和库文件位置不能互换

当前目录下有librestyhash.a 和 main.cpp,那我编译时必须g++ -Wall -g -o main.cpp librestyhash.a,为什么main.cpp和librestyhash.a不能交换?

2021-06-10 15:46:40 190

转载 nginx 是如何分配 worker 进程连接数的

转自:https://www.cnblogs.com/Json159/p/11995863.html

2021-06-10 13:55:57 868

转载 nginx是以多进程的方式来工作的

转自:https://blog.csdn.net/xxb2008/article/details/42238557

2021-06-09 16:19:30 572

转载 epoll水平模式和边缘模式在读写时候的区别

转自:读(EPOLLIN)水平模式(LE)只要socket缓冲区非空,就会一直触发;即,若线程没有read或没有read完,下一次epoll_wait仍会通知线程。即epoll会将其一直挂在就绪链表。边缘模式(ET)socket有数据到来就触发一次,不管线程程有没有read,后续不再触发;直到有新的数据到来才会触发。即epoll_wait后就将socket从就绪链表撤下来。写(EPOLLOUT)水平模式只要socket的缓冲区非空就一直触发,即每次调用epoll_wait都会返回so

2021-06-09 15:48:40 101

转载 TCP高并发连接数

转自:单机最大tcp连接数网络编程在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少?如何标识一个TCP连接在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系统用一个4四元组来唯一标识一个TCP连接:{local ip, local port,remote ip,remote port}。client最大tcp连接数client每次发起tcp连接请求时,除非绑定端口,通常会

2021-06-02 19:17:14 1489

转载 HLS协议解析

转自:https://www.cnblogs.com/jimodetiantang/p/9133564.html

2021-06-02 18:38:41 1840

转载 m3u8 文件格式详解

简介M3U8 是 Unicode 版本的 M3U,用 UTF-8 编码。"M3U" 和 "M3U8" 文件都是苹果公司使用的 HTTP Live Streaming(HLS) 协议格式的基础,这种协议格式可以在 iPhone 和 Macbook 等设备播放。上述文字定义来自于维基百科。可以看到,m3u8 文件其实是 HTTP Live Streaming(缩写为 HLS) 协议的部分内容,而 HLS 是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。HLS 的工作原理是把整个流分

2021-06-02 15:01:00 3276

转载 HTTP 的重定向

转自:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/RedirectionsHTTP 的重定向URL 重定向,也称为 URL 转发,是一种当实际资源,如单个页面、表单或者整个 Web 应用被迁移到新的 URL 下的时候,保持(原有)链接可用的技术。HTTP 协议提供了一种特殊形式的响应—— HTTP 重定向(HTTP redirects)来执行此类操作。重定向可实现许多目标:站点维护或停机期间的临时重定向。 永久重定向将在更改站点的UR

2021-05-27 16:49:33 4320

转载 RTP协议分析

转自:https://blog.csdn.net/u011006622/article/details/80675054RTP协议分析第1章.RTP概述1.1.RTP是什么RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Proto...

2021-05-07 15:27:35 154

gccupdate.rar

gcc4.4.7升级到gcc4.9.4需要的资源包MP6.1.1、MPFR3.1.5、MPC1.0.3、gcc-4.9.4.tar.gz

2019-05-30

Thinking in C++中文版

经典的高清的PDF文件,请大家下载

2016-07-08

lua经典教程

lua经典教程,非常经典

2016-07-08

swift开发中文版

iphone app Swift开发

2014-07-02

swift英文版pdf

swift英文版 赚点小分 供以后下载用用

2014-07-01

空空如也

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

TA关注的人

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