摘要:最近编码的时候发现生成的视频不能用Windows Media Player等系统自带的播放器播放,也没有缩略图。找了很久,最后才发现在avcodec_open2之前添加一行代码就行了: codec_ctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; 调用该行代码后,
阅读全文
12 2021 档案
摘要:在使用FFMPEG的类库进行编程的过程中,可以直接输出解复用之后的的视频数据码流。只需要在每次调用av_read_frame()之后将得到的视频的AVPacket存为本地文件即可。 经试验,在分离MPEG2码流的时候,直接存储AVPacket即可。 在分离H.264码流的时候,直接存储AVPacke
阅读全文
摘要:参考http://blog.csdn.net/leixiaohua1020/article/details/11800877 H.264码流第一个 NALU是 SPS(序列参数集Sequence Parameter Set) 对应H264标准文档 7.3.2.1 序列参数集的语法进行解析 H.264
阅读全文
摘要:本文是“FFmpeg从入门到精通”系列的第三篇,由金山云供稿,并授权LiveVideoStack发布。此前两篇为FFmpeg代码导读——基础篇和FFmpeg代码导读——HEVC在RTMP中的扩展。FFmpeg广泛应用与音视频领域,被誉为音视频开发的“瑞士军刀”。“FFmpeg从入门到精通”系列将由浅
阅读全文
摘要:4. HEVC在RTMP中的扩展 为推进HEVC视频编码格式在直播方案中的落地,经过CDN联盟讨论,并和主流云服务厂商达成一致,规范了HEVC在RTMP/FLV中的扩展,具体修改内容见下。 4.1 FLV规范扩展 HEVC为视频编码格式,因此对FLV规范的扩展,只集中在Video Tag,其它部分,
阅读全文
摘要:从事音视频技术开发对FFmpeg都不会感到陌生,通过它可以完成音视频采集、编解码、转码、后处理以及流媒体服务等诸多的功能,可以说涵盖了音视频开发中绝大多数的领域。金山云多媒体SDK团队在移动直播、短视频等项目中遇到了许多问题,本文为《FFmpeg从入门到出家》系列的第一篇上半部分,由LiveVide
阅读全文
摘要:不使用 CMake 的“打开文件夹”项目可以将 IntelliSense 的项目配置设置存储在 CppProperties.json 文件中。 (CMake 项目使用 CMakeSettings.json 文件。) 配置包含名称/值对,定义了 #include 路径、编译器开关和其他参数组成。 有关
阅读全文
摘要:文章目录 C/C++环境之launch.json、tasks.json、c_cpp_properties.json极简设置Setp1. setp2.setp3.launch.jsonsetp4.setp5.setp6.setp7.tasks.jsonsetp8.setp9.setp10.c_cpp_
阅读全文
摘要:这篇笔记的目的就是配置好c/c++插件代码的智能提示,方便以后写嵌入式代码的时候能够快速配置好例子(来自官方文档) { "env": { "myDefaultIncludePath": ["${workspaceFolder}", "${workspaceFolder}/include"], "my
阅读全文
摘要:任何事物都有两面性。你只有了解了分布式系统背后的“暗流涌动”现象是什么,才能避免掉到“坑”里去。暗流的含义是流动的地下水,是潜伏在“深层”的,我们往往过度地沉迷于表面的美好,而忽略了它。在分布式系统当中,最容易被我们忽略的是本文将介绍的这六大“暗流”。 本文是分布式系统系列第三篇文章,前两篇传送门:
阅读全文
摘要:本次内容主要分为三个部分:一是实时音视频为基础的流媒体服务端设计;二是录制服务方案设计;三是视频会议传输质量控制。 1 实时音视频为基础的流媒体服务端设计 1.1 分发架构 在设计以实时音视频为基础的流媒体服务器之前需要解决的一个问题是:转发方案的选取。讨论比较多的方案有三种: 一是Mesh方案,即
阅读全文
摘要:转自 : http://ju.outofmemory.cn/entry/351897 编辑:公众号程序员面试 前言 说到后台技术栈,脑海中是不是浮现的是这样一幅图? 图 1 有点眼晕,以下只是我们会用到的一些语言的合集,而且只是语言层面的一部分,就整个后台技术栈来说,这只是一个开始,从语言开始,还有
阅读全文
摘要:作者:可均可可 来源:cnblogs.com/PatrickLiu/p/13925259.html 一、简介 这些年软件的设计规模越来越庞大,业务需求也越来越复杂,针对系统的性能、高吞吐率、高稳定性、高扩展等特性提出了更高的要求。可以说业务需求是软件架构能力的第一推动力,由于这些因素导致了软件架构思
阅读全文
摘要:负载均衡由来 在业务初期,我们一般会先使用单台服务器对外提供服务。随着业务流量越来越大,单台服务器无论如何优化,无论采用多好的硬件,总会有性能天花板,当单服务器的性能无法满足业务需求时,就需要把多台服务器组成集群系统提高整体的处理性能。 基于上述需求,我们要使用统一的流量入口来对外提供服务,本质上就
阅读全文
摘要:编程是一门艺术,它的魅力在于创造。 65 哥已经工作两年了,一直做着简单重复的编程工作,活活熬成了一个只会 CRUD 的打工 boy。 65 哥:总是听大佬讲分布式分布式,什么才是分布式系统呢? 分布式系统是一个硬件或软件系统分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。在
阅读全文
摘要:A coroutine is a function that can suspend execution to be resumed later. 协程不是系统级线程,很多时候协程被称为“轻量级线程”、“微线程”、“纤程(fiber)”等。简单来说可以认为协程是线程里不同的函数,这些函数之间可以相互
阅读全文
摘要:作者:李小翀链接:https://www.zhihu.com/question/22764869/answer/31277656来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 首先推荐4本书 大型分布式网站架构设计与实践 http://item.jd.com/1152
阅读全文
摘要:一、概述 本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。 特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径 二、基本
阅读全文
摘要:0、介绍 本篇文章是在我看完《从零开始学架构》之后,以架构演变为主线,梳理了一下演变过程中出现的问题以及解决方案,文章中引用了这本书的一些内容和图片 分布式和集群的概念经常被搞混,现在一句话让你明白两者的区别。 分布式:一个业务拆分成多个子业务,部署在不同的服务器上集群:同一个业务,部署在多个服务器
阅读全文
摘要:Redis大家都不陌生,就算是没用过,也都听说过了。 作为最广泛使用的KV内存数据库之一,在当今的大流量时代,单机模式略显单薄,免不了要有一些拓展的方案。 笔者下文会对各种方案进行介绍,并且给出场景,实现 等等概述,还会提到一些新手常见的误区。 ### 正文 先从基础的拓展方式开始,这样更便于理解较
阅读全文
摘要:最近面试季节,估计「如何保证缓存和数据库一致性」这个问题经常会被问到,这是一个老生常谈的话题了。 但很多人对这个问题,依旧有很多疑惑: 到底是更新缓存还是删缓存? 到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库? 为什么要引入消息队列保证一致性? 延迟双删会有什么问题?到底要不要用?
阅读全文
摘要:1. 什么是数据的一致性 “数据一致”一般指的是:缓存中有数据,缓存的数据值 = 数据库中的值。 但根据缓存中是有数据为依据,则”一致“可以包含两种情况: 缓存中有数据,缓存的数据值 = 数据库中的值(需均为最新值,本文将“旧值的一致”归类为“不一致状态”) 缓存中本没有数据,数据库中的值 = 最新
阅读全文
摘要:原创文章,版权所有,允许转载,标明出处: http://blog.csdn.net/wanghantong/article/details/40787739 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器, 并将本来要直接发送到Web服务器上的http请求
阅读全文
摘要:本文是学习大型分布式网站架构的技术总结。对架构一个高性能、高可用、可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考。文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好的参考价值。 一、大型分布式网站架构技术 1、大型网站的特点 用户多,分布广泛 大流量,高并发 海量
阅读全文
摘要:什么是幂等性? 一般在服务调用时,读服务如果调用失败了,会自动按配置次数转移到别的服务上去请求。而写服务就不能重复请求,如果因为超时或者网络故障等原因被调用服务并没有返回成功的响应,服务调用方就认为是失败了,但很有可能的是已经成功了,如果继续重复请求写服务,如转账类的服务,可能会造成严重的后果。所以
阅读全文
摘要:本文基于 FFmpeg 4.1 版本。 1. 数据结构定义 1.1 相关基础概念 在阅读 AVFrame 数据结构之前,需要先了解与之相关的几个基础概念(此处只考虑视频相关): pixel_format:像素格式,图像像素在内存中的排列格式。一种像素格式包含有色彩空间、采样方式、存储模式、位深等信息
阅读全文
摘要:以下界面所示的三个工具,如果没安装过,则勾上让其安装。MsysGit为Git的Windows版本,必须要安装;Kdiff为对比/合并工具,可选安装,可以换为使用其它的相关工具;最后一个Windows Credential Store for Git用于在Windows Credential Mana
阅读全文
摘要:Visual Studio Tools for Git GIT代码管理工具 Resharper 代码生成工具 CSOutline2017 语法级别的代码折叠 SwitchStartupProject 以列表的方式选择启动的项目 Code Alignment 提供代码对齐功能, 比如按 =, (, )
阅读全文
摘要:1.缩进标尺 (IndentGuide) 安装方式1:先打开VS,选择菜单栏下 【工具】=》【扩展和更新】,打开后选择联机搜索IndentGuide下载安装,安装可能需要重启VS完成。 安装方式2:如果方式一搜索不到,或者想装汉化版可在官网上下载该插件(汉化版)安装,地址:https://marke
阅读全文
摘要:struct AVFrame{uint8_t *data[4];分别指向yuv三个位面及一个未知的位面或者是rgb模式下只有data[0]指向raw dataint linesize[4];四个位面分别的内存块大小}AVFrame *avcodec_alloc_frame() //Allocates
阅读全文
摘要:文档来源:http://www.ffmpeg.org/ffmpeg-filters.html#Description 1 Description This document describes filters, sources, and sinks provided by the libavfilt
阅读全文
摘要:方法一方法是设置超时参数 AVFormatContext *pAVFormatContext = avformat_alloc_context();//申请一个AVFormatContext结构的内存,并进行简单初始化 AVDictionary* options = NULL; av_dict_se
阅读全文
摘要:FFmpeg长时间无响应的解决方法需要解决的问题1、FFmpeg去连接的时候相机不在线导致avformat_open_input等函数一直死等,造成程序卡死 2、av_read_frame的过程中相机断开连接导致读取码流一直死等 解决方法打开流媒体之前注册FFmpeg回调函数 AVFormatCon
阅读全文
摘要:在上一篇FFMPEG实时解码网络视频流中使用av_parser_parse2来组合数据包,判断是否已经得到一帧数据,但如果多媒体流中混合音频和视频,这种方法似乎走不通。 下面使用另一种方法实现,先初始化: int CTcpH264Dlg::InitDecode(){ av_register_all(
阅读全文
摘要:从内存中读取数据 ffmpeg一般情况下支持打开一个本地文件,例如“C:\test.avi” 或者是一个流媒体协议的URL,例如“rtmp://222.31.64.208/vod/test.flv” 其打开文件的函数是avformat_open_input(),直接将文件路径或者流媒体URL的字符串
阅读全文
摘要:一. av_guess_format()函数 原型 AVOutputFormat *av_guess_format(const char *short_name, const char *filename, const char *mime_type); av_guess_format中支持的sho
阅读全文
摘要:1.设置rtsp超时 AVDictionary* opts = NULL; av_dict_set(&opts, "rtsp_transport", m_bTcp ? "tcp" : "udp", 0); //设置tcp or udp,默认一般优先tcp再尝试udpav_dict_set(&opts
阅读全文
摘要:之前一直用Directshow技术采集摄像头数据,但是觉得涉及的细节比较多,要开发者比较了解Directshow的框架知识,学习起来有一点点难度。最近发现很多人问怎么用FFmpeg采集摄像头图像,事实上FFmpeg很早就支持通过DShow获取采集设备(摄像头、麦克风)的数据了,只是网上提供的例子比较
阅读全文
摘要:在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: 1. 注释从“#”开始,到这一行结束。 2.模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:TEMPLATE = appA> app -建立一个
阅读全文
摘要:C++ 拷贝构造函数 赋值构造函数 拷贝构造函数和赋值构造函数的异同由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视。请先记住以下的警告,在阅读正文时就会多心:如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有指针变量,那
阅读全文
摘要:一般会产生临时对象的三种情况: 1,以值的方式给函数传参; 2,类型转换; 3,函数需要返回一个对象时; 我们知道给函数传参有两种方式。1,按值传递;2,按引用传递(指针chua)。按值传递时,首先将需要传给函数的参数,调用拷贝构造函数创建一个副本,所有在函数里的操作都是针对这个副本的,也正是因为这
阅读全文
摘要:简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk
阅读全文
摘要:shell 与 export命令用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令 或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。 此时,系统中将有两个shell,一个是登录时系统启动的shel
阅读全文
摘要:一、为什么要用xargs: linux的命令中很多的命令的设计是先从命令行参数中获取参数,然后从标准输入中读取,xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割) 然后将参数传递给其后面的命令,作为后面命令的命令行参数; 二、xargs的一些有
阅读全文
摘要:本文的例子部分是引用网络上的一篇文章。 Linux的IO输入输出有三类 Standard Input 代码 0Standard Output 代码 1Standard Error 代码 2 举个例子:ls test.sh test1.sh >success.txt 2>&1 将前面执行结果的标准输出
阅读全文
摘要:#### 题目要求计算文档a.txt中每一行中出现的数字个数并且要计算一下整个文档中一共出现了几个数字。例如a.txt内容如下:12aa*lkjskdjalskdflkskdjflkjj我们脚本名字为 ncount.sh, 运行它时:bash ncount.sh a.txt输出结果应该为:20sum
阅读全文
摘要:一. 管道命令 管道命令操作符是:”|”,它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入. 管理命令的输出说明: 【指令1】正确输出,作为【指令2】的输入 然后【指令2】的输出作为【指令3】的输入 ,【指令3】输出就会直接显示在屏
阅读全文
摘要:IF条件判断 1、基本语法:if [ command ]; then 符合该条件执行的语句fi 2、扩展语法:if [ command ];then 符合该条件执行的语句elif [ command ];then 符合该条件执行的语句else 符合该条件执行的语句fi 3、语法说明:bash she
阅读全文
摘要:变量简介变量就是程序设计语言中的一个可以变化的量,当然,可以变化的是变量的值。变量几乎所有的程序设计语言中都有定义,并且其涵义也大同小异。从本质上讲,变量就是在程序中保存用户数据的一块内存空间,而变量名就是这块内存空间的地址。在程序的执行过程中,保存数据的内存空间的内容可能会不断地发生变化,但是,代
阅读全文
摘要:git的fast-forward在之前的文章有介绍过,但是介绍的不细: http://www.cnblogs.com/charlesblc/p/5953066.html fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情
阅读全文
摘要:顺水人情,指的是利用机会顺便给人好处,管道命令|就喜欢干这事。但是偏偏有人不领情,那管道命令就傻眼了。 书接上文,我们知道很多命令都喜欢胡吃海喝,但是有的命令却不喜欢从键盘上捡食儿,看看这位: echo '4567' | kill kill大佬就不处理标准输入的参数,管道命令傻眼了吧,这个时候只能求
阅读全文
摘要:作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的。 首先谈一下grep命令的常用格式为:grep [选项] ”模式“ [文件] grep家族总共有三个:grep,egrep,fgrep。 常用选项: -E :开启扩展(Extend)的正则表达式。
阅读全文
摘要:例子:1. :格式: grep [option] pattern filename 注意: pattern如果是表达式或者超过两个单词的, 需要用引号引用. 可以是单引号也可双引号, 区别是单引号无法引用变量而双引号可以. grep '\<Tom\>' file 包含单词Tom的行grep 'Tom
阅读全文
摘要:-1- 前言 ①目的 我于今年4月开学习CS,前几月一直使用VSCode + GCC + GDB + Git进行学习,翻阅韩骏老师的《Visual Studio Code 权威指南》时,发现他在C++栏目里推荐了名为「vscode-clangd」的插件(已改名为clangd)。 后配置相关插件时遇到
阅读全文
摘要:让VSCode中的"Find all reference"正常工作熟悉Visual Studio的同学, 在Linux用VSCode的时候发现经常使用的"Find all reference"不能工作. 这是因为需要个人做些配置. 1. 安装VSCode这个大家都会,就不多说了. 2. 安装gnu
阅读全文
摘要:在开源软件VSCODE中,一般会安装扩展插件,提高工作效率。 特别是C/C++一般这几个是必须的: 1)C/C++ 2)C++ Intellisense 其中:C++ Intellisense插件需要GNU Global的支持,这是一个类似CTag的,能够创建用于实现索引和自动补全功能所需的Tag的
阅读全文
摘要:众所周知,linux下进程当收到某些信号而终止时,会保存进程上下文信息进入coredump文件中;以帮助程序员们分析调试。它可以通过执行如下命令使能coredump生成。其生成路径定义在/proc/sys/kernel/core_pattern文件中,生成文件名格式定义在内核源码的Documenta
阅读全文
摘要:一、基本信息统计工具 1)捕获文件属性(Summary) 1. File:了解抓包文件的各种属性,例如抓包文件的名称、路径、文件所含数据包的规模等信息 2. Time:获悉抓包的开始、结束和持续时间 3. Capture:抓包文件由哪块网卡生成、OS版本、Wireshark版本等信息 4. Disp
阅读全文
摘要:一、ARP协议 ARP(Address Resolution Protocol)地址解析协议,将IP地址解析成MAC地址。 IP地址在OSI模型第三层,MAC地址在OSI第二层,彼此不直接通信; 在通过以太网发生IP数据包时,先封装第三层(32位IP地址)和第二层(48位MAC地址)的报头; 但由于
阅读全文
摘要:一、捕获过滤器 选中捕获选项后,就会弹出下面这个框,在红色输入框中就可以编写过滤规则。 1)捕获单个IP地址 2)捕获IP地址范围 3)捕获广播或多播地址 4)捕获MAC地址 5)捕获所有端口号 6)捕获特定ICMP数据 当网络中出现性能或安全问题时,将会看到ICMP(互联网控制消息协议)。 在这种
阅读全文
摘要:一、数据包详细信息 Packet Details面板内容如下,主要用于分析封包的详细信息。 帧:物理层、链路层 包:网络层 段:传输层、应用层 1)Frame 物理层数据帧概况 2)Ethernet II 数据链路层以太网帧头部信息 3)Internet Protocol Version 4 互联网
阅读全文