- 博客(108)
- 资源 (13)
- 收藏
- 关注
原创 利用FFmpeg将一系列jpg图片封装成mp4格式
#include "libavformat/avformat.h"#include "libavutil/timestamp.h"#define NUMS 33void saveframe(AVFrame *frame, const char *filename) { FILE *file; file = fopen(filename, "wb+"); int width = 320; int height = 480; unsigned char *buf = (unsigned c.
2022-04-22 11:14:22 2149 2
原创 HTTP包格式
①HTTP请求格式请求行:包括 方法+URL+版本Header:包括请求的属性,是由冒号分割的键值对,每组属性用\n分割,遇到 空行 说明Header结束Body:空行之后都是Body的内容,Body允许是空字符串,如果不为空,那么在Header中会有一个Content Length属性说明Body的长度实例1、请求方法GET:请求获取Request——URL所标识的资源POST:在Request——URL所标识的资源后附加资源HEAD:请求获取由Request——URL所标识的资源的响.
2022-04-15 11:33:24 921
转载 NAT类型及工作原理
一、概述在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。根据规范,路由器是不能这样工作的,但它的确是一个方便且得到了广泛应用的技术。当然,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。协议详细说明:http://www.rfcr
2021-12-10 10:30:04 1888 1
转载 stl中的upper_bound与lower_bound
https://blog.csdn.net/qian2213762498/article/details/79250097
2020-09-04 15:41:49 151
原创 c++中的new与delete
int *p = new int[10]; //分配一个内存,指针P指向这个内存delete p; //或者 delete []p; 两个都没错,释放这个内存class A{public: A(){ std::cout << "构造函数" << std::endl; } ~A(){ std::cout << "析构函数" << std::endl; }}A *p1 = new .
2020-08-22 22:52:36 172
原创 c++中的const与const_cast
int select(const int& num){ int* p = const_cast<int*>(&num); //强制去掉const属性 *p = 40; //num = num - 5; //会出现错误 return num;}int main(){ const int a = 20; int b = 10; std::cout << "the num is: " <&l.
2020-08-16 23:36:34 155
转载 C++模板判断类是否存在某个成员变量
#include <iostream>#include <type_traits> // 检查 xxxx 是否是类T的成员template <typename T>struct has_member_xxxx{ // 如果 &T::xxxx 合法, 本函数就合法 // 下面check<T>(0)优先调用本函数, 返回值是void template<typename U> static void check(declty.
2020-06-12 17:27:58 1948
原创 nvenc硬件编码相关设置
1.如何设置强制I帧编码 av_opt_set_int(context->priv_data,"forced-idr",1,0); 接收到强制I帧请求之后,设置video->pict_type =AV_PICTURE_TYPE_I。2.如何设置无缓冲编码(即编码一帧出一帧,无囤帧现象) context->max_b_frames = 0; (必须是无b帧编码) av_opt_set_int(context->priv_data, "zerolat...
2020-05-24 20:20:31 1702
转载 H264码流解析
https://blog.csdn.net/u010512264/article/details/82083467?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonec
2020-05-21 20:47:57 300
原创 ffmpeg多线程解码
一。ffmpeg中使用到的多线程的概念: 2.共享变量的互斥 互斥锁(mutex-lock)是一种信号量,用来防止两个线程在同一时刻访问相同的共享资源,它有锁定状态和非锁定状态,在任意时刻,一个线程要想存取共享数据,线程必须首先获得mutex-lock,当此线程释放此共享数据的时候必须对mutex-lock解锁,在一个任意的时间内,只有一个线程能锁定互斥锁,通过函数pthrea...
2020-01-17 17:32:02 2997 2
转载 C++重写(覆盖)、重载、重定义、多态
1 重写(覆盖)override override是重写(覆盖)了一个方法,以实现不同的功能。一般用于子类在继承父类时,重写(覆盖)父类中的方法。函数特征相同,但是具体实现不同。重写需要注意: 被重写的函数不能是static的,必须是virtual的 重写函数必须有相同的类型,名称和参数列表 重写函数的访问修饰符可以不同。尽管virtual是private...
2019-12-06 11:56:24 1742 1
转载 支持向量机SVM(任意点到超平面的距离公式)
支持向量机就是找到划分超平面中间隔最大的超平面,设定划分超平面的线性方程为:其中 w 决定了超平面的方向 ; b 为位移项,决定了超平面与原点之间的距离.显然,划分超平面可被法向量 ω 和位移 b 确定 。其中任意点到超平面的距离公式y为:上述是点在超平面的正一侧的情形,如何点再在超平面负的一侧,只需在公式前加-号即可。综上所述,点与超平面的距离公式可表示为:yi*y...
2019-12-05 11:17:24 4224
转载 python中pandas的iloc与loc函数的用法,与drop函数的用法
loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行)iloc函数:通过行号来取行数据(如取第二行的数据)1. 利用loc、iloc提取行数据import numpy as npimport pandas as pd#创建一个Dataframedata=pd.DataFrame(np.arange(16).reshape(4,4),index...
2019-10-21 15:28:38 1998
原创 python中split与splitext的区别
两个方法都是切割字符串的方法。split是从前往后搜索字符串,splitext是从后往前搜索字符串。os.path.splitext()更多的运用在了搜索文件路径(path)和文件的扩展名(ext),这两个组合在一起构成了完整的路径,如果使用正常的split()函数来获取扩展名,那么效率是很低的。...
2019-09-24 12:15:09 864
原创 python中关于类的操作
1.类的继承 创建子类的实例时,首先需要完成的任务就是给父类的所有属性进行赋值,为此,子类方法__init__()需要父类施以援手, 上述中的super()方法是一个特殊的函数,能够将父类与子类联系,可以调用父类的__init__函数方法2.子类自己的属性与方法3.子类重写父类的方法从上面我们可以看到子类重写了父类的print_informatio...
2019-09-08 00:23:36 152
转载 视频中的TI与SI指标
SI表征一帧图像的空间细节量。空间上越复杂的场景,SI值越高。TI表征视频序列的时间变化量。运动程度较高的序列通常会有更高的TI值。SI计算方法:对第n帧视频进行Sobel滤波,然后对滤波后图像计算标准差。选这些帧中的最大值为SI。TI计算方法:求n与n-1帧图像的帧差,然后对帧差图像计算标准差。选这些帧中的最大值为TI。以下截图分别显示Sobel滤波和帧差结果:Sobel滤波...
2019-09-06 16:08:15 2442
原创 python中的函数使用
1.让函数的实参变为可选2.传递任意数量的实参3.结合使用位置和任意数量实参 如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。4.使用任意数量的关键字实参 有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成...
2019-08-31 14:28:17 178
转载 python中的正则表达式
python中的re模块主要是用来进行正则表达式的的。查找匹配的字符串//查找字符串是否以某个字符串开头import restr = "lili is good girl"result = re.match("lili",str)print(result.group()) //打印liliresult1 = re.match("good",str) //找不到匹配的,因为ma...
2019-08-30 16:27:02 105
转载 C++中截取两个字符之间的字符串
string picture_name = “edj_sdjj.bmp”;//this is picture numberstd::cout << "图片名:" << picture_name << endl;int nPos_1 = picture_name.find("_"); //如果改为.find("edj_"),输出将变为dj_sdjj,如果...
2019-08-26 18:22:22 2454
原创 python中关于列表的操作
bicycles = ['trek', 'cannondale', 'redline', 'specialized']可以使用负数进行索引,如bicycles[-1]表示列表的最后一个元素,-2表示倒数第二个元素1.1 修改列表元素的值。 直接进行赋值就可以,bicycles[0] = 'abcd'就可以将列表中的第一个元素的值改为abcd1.2 在末尾添加元素 ...
2019-08-24 18:10:34 193
原创 python中关于字符串的操作
字符串的定义,用双引号与单引号都可以name="hello'world!" 正确name="hello"world!" 错误name = 'hello"world' 正确name = 'hello'world' 错误title方法:将字符串中单词的首字母变为大写,其他字母均为小写name="love live"print(name.title())输出为:...
2019-08-24 17:09:16 116
转载 Linux下使用Git上传和更新代码
一、上传代码1、去github(码云)上根据网站的提示来创建自己的远程Repository(仓库)2、建立本地git仓库$ git init注意:此指令本地源码根目录执行,执行成功后,会在当前目录生成一个隐藏的名字为“.git”的目录。所有对本地仓库的操作信息都在此目录下存储。3、将项目的所有文件添加到本地仓库中$ git add .说明:此处的“.”...
2019-08-15 16:12:28 1125
转载 FFmpeg-4.0 的filter结构体关系与定义
一。结构体间的关系图filter涉及的结构体,主要包括:> FilterGraph, AVFilterGraph> InputFilter, InputStream, OutputFilter, OutputStream> AVFilter, AVFilterContext> AVFilterLink> AVFilterPad;从上图可以看到,FFm...
2019-07-22 11:51:03 473
转载 如何在服务器上部署Jupyter
1.安装Anacondawget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh安装过程中会有:... ...installing: zlib-1.2.8-3 ...installing: anaconda-4.4.0-np112py27_0 ...installing: conda-4...
2019-07-10 14:59:06 3085
转载 C++中的c_str()函数
#include"iostream"std::string info_extend;void main(){//std::cout << "printsomething: " <<info_extend << std::endl;//ERROR!!std::cout << "printsomething: " << i...
2019-07-05 12:06:19 456
原创 Linux下如何获取可执行文件的路径以及如何将绝对路径变为相对路径
一/ 获取可执行文件的路径在Linux的home/yi/C++目录下新建a.c文件,代码如下,编译出可执行文件a :gcc -o a a.c#include <stdio.h>#include <unistd.h>#include <libgen.h>char * get_exe_path( char * buf, int count){...
2019-07-03 16:12:50 1547
转载 FFMPEG之TimeBase成员理解
FFMPEG的很多结构中有AVRational time_base;这样的一个成员,它是AVRational结构的typedef struct AVRational{ int num; ///< numerator int den; ///< denominator} AVRational;AVRational这个结构标识一个分数,num为分数,den为分母。...
2019-06-13 18:08:29 346
原创 如何检测一个packet中的数据是关键帧
通过AVPacket中的flags来判断。具体的代码参考如下:#include "stdafx.h"#include<stdio.h>#include<stdlib.h>#include<iostream>extern "C"{ #include <libavcodec/avcodec.h> #include <lib...
2019-06-13 12:05:10 983
转载 ffmpeg中的协议解析
协议的相关结构:协议操作的顶层结构是AVIOContext,这个对象实现了带缓冲的读写操作;FFMPEG的输入对象AVFormatContext的pb字段指向一个AVIOContext。AVIOContext的opaque实际指向一个URLContext对象,这个对象封装了协议对象及协议操作对象,其中prot指向具体的协议操作对象(如URLProtocol),priv_data指向具体的协...
2019-05-31 16:09:22 1676
原创 ffmpeg中转码时的数据流走向
一.ffmpeg中的解码操作是在函数static int process_input(int file_index)中完成的。1.在该函数中首先会调用static int get_input_packet(InputFile *f, AVPacket *pkt)函数将通过av_read_frame(f->ctx, pkt)函数将文件中的视频或音频数据读取到AVPacket结构体中。2...
2019-05-29 20:32:21 1287
转载 windows和linux下的静态链接库与动态链接库
一 windows下obj,lib,dll,exe的关系 lib是和dll对应的。lib是静态链接库的库文件,dll是动态链接库的库文件。 所谓静态就是link的时候把里面需要的东西抽取出来安排到你的exe文件中,以后运行你的exe的时候不再需要lib。 所谓动态就是exe运行的时候依赖于dll里面提供的功能,没有这个dll,你的exe无法运行。 ...
2019-05-22 20:18:42 802
转载 linux下C编程main函数的参数问题
在做linux下的应用编程时,main函数被定义成这个样子:int main(char argc,char *argv[])argc保存的是命令行参数的数目,而argv是指向个参数的各指针所构成的数组。argv是命令行参数个数 不带参运行 argc值为1argv是命令行参数argv[0]代表程序本身argv[1]代表第一个参数以此类推mmap.c编译好之后得到二进制文件mmap带...
2019-05-21 10:26:47 182
转载 ffmpeg在Linux下的编译与使用
ffmpeg在Linux下的编译请看文章:https://blog.csdn.net/yihuanyihuan/article/details/84405091ffmpeg安装第三方库请看文章:https://blog.csdn.net/yihuanyihuan/article/details/84405111linux下编译ffmpeg后会生成相关的动态文件与头文件,如何按照上述方法进行...
2019-05-20 15:35:50 1034
转载 视频质量评估工具VMAF的使用
一。安装 vmaf git clone https://github.com/Netflix/vmaf.git cd vmaf git submodule update --init --recursive make echo export PYTHONPATH="$(pwd)/python/src:$(pwd)/sureal...
2019-05-16 11:55:01 9123
转载 从ffmpeg中抓取mv/mb_type/dct_coeff/qp和MBSize等数据(H.264)
1. mv——运动矢量mv——Motion Vector,即运动矢量。做视频运动相关的同学对这个感念应该不陌生,其实它描述的就是block级别的光流,视频编码过程中以块为单位进行亚像素精度的运动矢量的搜索,得到两个相关块之间的运动矢量,描述两帧之间的运动方向和大小。编解码中传递的其实是当前block与相邻block的运动矢量之间的差值,经过熵解码和运动矢量预测,才能得到真正的当前bloc...
2019-05-08 20:14:27 785
转载 ffmepg将mp4视频切割成ts文件从而形成m3u8文件
切片生成m3u8列表命令:ffmpeg -i input.mp4 -c:v libx264 -c:a aac-f hls output.m3u8此转换命令默认的每片(即一个ts文件)时长是2s,m3u8列表文件中默认只保存最后的5条片信息,也就是播放器在拉流时只能播最后的那5条ts视频文件。这肯定不是你想要的,那么幸运的是ffmpeg提供了更改这些相关设置的参数,如下:相关设置参数:...
2019-04-23 12:01:14 2645
原创 ubuntu中左侧菜单栏消失
问题:ubuntu中左侧菜单栏消失,使用ctrl+alt+t无法启动终端,进去系统之后只有一个桌面,什么都没有。本人是安装python3的时候出现了此类问题解决:1.CTRL+ALT+F1打开命令行模式 2.sudo apt-get installcompizconfig-settings-manager 3.运行 “ dconf reset -f...
2019-04-22 17:00:57 5502
转载 ModuleNotFoundError: No module named 'pandas' 解决方案
解决方法一:安装pandas包Files→Settings→Project:07_语法进阶(注:当前项目名)→Project Interpreter→右侧列表栏,点击“+”符号→搜索Pandas,安装并应用上述在安装过程中可能出现“”解决办法:找到安装目录下 helpers/packaging_tool.py文件,找到如下代码:修改为如下,保存即可:上面代码一定要注...
2019-04-20 22:00:27 34001
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人