- 博客(36)
- 资源 (11)
- 收藏
- 关注
原创 【FFMPEG】 -filter_complex 的个人理解 以及 ffmpeg命令行操作时需要注意的点
背景 因工作原因,需要使用ffmpeg对视频进行加工处理。其间用到了ffmpeg命令行参数 -filter_complex 。这个选项功能很强大,但是网上对其的讲解很少。遂自己实验了一番,将结果记录下来,以免忘却filter_complex 其实可以从名字看出来,他是一个过滤器,熟悉ffmpeg的人应该都知道ffmpeg的filter很强大。它即是作为ffmpeg的filter的命令行选...
2020-12-11 14:42:27
16332
7
原创 【ffmpeg】编译支持输出 m4a 拓展名
编译支持输出 m4a 拓展名重点是这个ipod,这是m4a的muxer名称。一定要开启它,ffmpeg才能支持输出m4a文件demuxer可以不开启它,使用–enable-demuxer=mov可以同时支持mov,mp4,m4a,3gp,3g2,mj2解复用ffmpeg --enable-encoder=aac --enable-decoder=aac \--enable-muxer=ipod --enable-demuxer=ipod...
2020-07-27 18:27:48
657
原创 【ffmpeg】支持vp8/vp9编码
ffmpeg官方编译指南ffmpeg-centos官方编译指南增加vp8/vp9编码支持使用官方的方法增加vp8/vp9编码后,在 avcodec_find_encoder 时查找vp8编码失败,在使用ffmpeg -codecs命令中也没有找到vp8编码的支持。说明编译时没有编译到vp8编码。在网上查找半天,又自己琢磨了一会,找到了解决方法。解决方法在编译选项中加入 --enable-encoder=vp8_vaapi即可以使用ffmpeg_vp8编码支持,同理加入 --enable-enco
2020-06-11 11:47:57
5760
原创 【FFMPEG】YUV420P格式图像叠加,拼接
YUV420P格式图像叠加,拼接网上的很多代码都有问题!!!话不多说上代码:需要用到库:ffmpeg,用于解码h264,也可以直接用yuv图像进行拼接,只要记住yuv420p的数据存放格式和采样格式就不会出错。sdl2,用于实时显示#include <stdio.h>#include <sstream>#include <string>#i...
2020-02-28 11:44:55
1834
原创 【FFMPEG】x264 命令行去除B帧
三种方法此去除B帧的方法只适用于采用 libx264 编码器编码的视频第一种参数中加 -bf 0ffmpeg -i test.mp4 -vcodec libx264 -bf 0 test-640x480.h264第二种参数中加 -x264opts "bframe=0"ffmpeg -i test.mp4 -vcodec libx264 -x264opts "bframes=...
2019-12-11 18:50:37
7944
1
原创 【vs】vs编译爆出大量莫名其妙错误的解决方法
如果你的vs编译时莫名其妙爆出很多错误,定位到改错误时,又明显没有错误解决方法:可能是那一代码页字符编码有问题,用vs打开该文件,选择 文件->高级保存->编码格式选择【GB2312 - 代码页936】点击保存就好了。...
2019-10-28 18:58:14
10507
2
原创 【docker】pc error: code = 13 desc = invalid header field value "oci runtime error: exec failed 解决方法
docker 报错,无法进入容器rpc error: code = 13 desc = invalid header field value “oci runtime error: exec failed: container_linux.go:247: starting container process caused “process_linux.go:75: starting setns...
2019-09-20 18:11:04
867
原创 【C/C++】 二进制字符串 转 十进制整型
//将传入的二进制字符串转换成十进制,并返回十进制数字。 int BinStr2Dec(char const* const binaryString) { //在此处调用判断一个字符串有多长的函数 int size = strlen(binaryString); //将二进制数字转换为十进制 int parseBinary = 0; for (int i = size;...
2019-07-04 17:14:27
8921
2
原创 关于 RTP (VP8 负载)格式
引用以下链接作为参考:RTP协议之Header结构解析VP8 RTP负载格式RFC6386_Uncompressed Data Chunkdraft-ietf-payload-vp8-17RFC3550
2019-05-10 13:57:41
1425
原创 【FFmpeg】编写 ACC 的 ADTS 信息头
背景 在保存aac格式的信息流时必须要对每一帧aac信息流加以头信息,否则解码器无法识别aac信息流,这个信息头就是ADTS信息头。代码int write_ADTS_header(AVPacket *pkt, AVCodecParameters& codecpar) { int length = pkt->size + ADTS_HEADER_SIZE; uint8_t...
2019-04-19 18:21:10
1766
原创 【FFMPEG】以mjpeg(MJPG)格式解码采集摄像头
背景 在开发中,由于项目需要,使用ffmpeg开源库进行摄像头的采集,但是由于没有相关开发经验,只能慢慢摸索,其中,由于ffmpeg默认解码摄像头采集格式为YUY2(我的摄像头仅支持YUY2以及MJPG两种格式解码),但项目需求在高分辨率下流畅度也要最高,我的摄像头YUY2的解码格式不能满足要求,必须使用MJPG,于是需要采用MJPG进行解码。但苦于不知道如何设置,一直在网上搜寻答案解决方法...
2019-04-13 11:13:37
10591
1
原创 关于avformat_open_input 返回 -1094995529 的个人想法
经验教训环境:windows10,64位,vs2017,ffmpeg 4.1.1(64位) 在学习ffmpeg的过程中,真的是踩了不少的坑,可能是我使用的最新的版本缘故,也可能是个人经验不足导致的。比如这次: 在学习将pcm格式音频编码成aac音频时,出现了一个莫名其妙的问题,在网上怎么查阅资料方法都解决不了:avformat_open_input在打开pcm文件时发生错误返回:...
2019-03-09 15:38:56
5433
4
原创 vs 关于引用多个库可能出现的大量重定义报错问题的解决办法
背景 前段时间在用vs完成一个项目时引用了很多第三方库。在正常编译时vs报出大量错误,都是关于系统库文件重定义等等问题,由于自己经验不足,根本不知道出了什么问题。遂在网上寻求帮助。解决方法 本人先是排除了自己代码的书写问题,其次排除自己单独包含头文件造成的冲突问题,定位在了包含的第三方库本身的头文件可能出现的冲突上,然后再网上查找解决办法,最终发现,包含头文件的顺序不同可能造成大量未知...
2019-03-01 10:50:09
3523
2
原创 FFmpeg avformat_open_input 错误返回 -5 的可能原因
关于FFmpeg项目中遇到一些问题 使用FFmpeg编写录制音频程序时,在avformat_open_input 函数处卡住,该函数一直报错并返回错误码 -5, 百思不得其解,查了很多资料,仍不得解答,后观看 雷神 文章 发现该问题是由于: 我的音频设备名中含有中文字符:audio=麦克风 (Realtek® Audio) 需要从ANSI字符格式转换成UTF-8格式,因为这是FF...
2019-02-26 20:29:16
6879
2
原创 【C++】五子棋 简单实现
文章目录游戏效果预览功能模块源代码展示未实现功能游戏效果预览功能模块 界面显示 游戏逻辑 判断输赢 游戏流程控制 玩家行动 电脑随机行动源代码展示界面展示类#pragma once#include <stdio.h>#include <iostream>#include <vector>#...
2018-11-11 15:52:57
3229
原创 【C语言】算术转换与整形提升
算术转换与整形提升 就在前天,我做了一道这样的题,它使我发现我对数值类型转换这里的知识很肤浅。所以我整理了一下这方面的知识。 下面我做测试的平台是VS 2013 32位环境(小端字节序)。 这是原题: int main(){ char u = 128; unsigned char s = 128; unsigned short us; us...
2018-05-14 16:54:53
942
原创 【C语言】游戏 2048
【C语言】游戏 2048实现函数列表 游戏棋盘结构体 菜单选项枚举 查找可合并块偏移量结构体 menu()菜单函数 InitBoard()初始化棋盘函数 PrintBoard()显示棋盘函数 IsWin()判断输赢函数 IsRound()判断盘内块可否合并函数 AddBlock()随机增加方块函数 MergeBlock()合并方...
2018-05-13 15:02:52
788
原创 【C语言】简单实现通讯录
【C语言】简单实现通讯录已实现功能 新建联系人 删除指定联系人 查找指定联系人 修改指定联系人 显示所有联系人 清空所有联系人 按姓名排序联系人待实现功能 通讯录加密 通讯录联网保存 通讯录导入导出实现效果展示 头文件#ifndef __TONYXUNLU_H__#define __TONG...
2018-05-11 17:34:26
554
原创 【C语言】推箱子小游戏
推箱子小游戏目前已实现功能 选择关卡 便捷地图编辑接口(使用结构体加结构体指针实现)待实现功能 撤回一步 重新开始效果展示 源码头文件#ifndef __TUIXIANGZI_H__#define __TUIXIANGZI_H__#define _CRT_SECURE_NO_WARNINGS 1#include "t...
2018-05-10 14:56:44
7897
14
原创 【C语言】指针数组 _ 数组指针 _ 函数指针 _ 函数指针数组 _ 指向函数指针数组的指针
指针数组 | 数组指针 | 函数指针 | 函数指针数组 | 指向函数指针数组的指针 怎么样?这个标题是否让你还没浏览文章就眼花缭乱了?(笑)别畏惧,看这些词组中有一个共同的特点,就是都有一个词:指针。顾名思义,这些知识当然和指针联系紧密,那就让我们来见识见识这种指针的威力…指针数组 指针数组是个啥?是个指针?还是个数组? 其实,我有个小小的分析这种问题的方法,分享给大家:...
2018-05-09 15:21:41
278
原创 【浅谈】main函数的三个参数
【浅谈】main函数的参数 我们平时使用main函数时,在main函数参数这一栏常常省略不写,或者填上(void)。那么今天我们来看看main函数的参数。main函数的参数有哪些? 在我们写好一个main函数框架后按F10开始单步调试,一直调试到走出main函数大括号外。这时我们能够看到如下代码: 我们可以很清晰的看到main函数时有参数的,而且是三个参数...
2018-05-08 15:43:55
21482
4
原创 【C语言】特性描述及模拟实现strlen、strcpy、strcat、strchr、strstr、strcmp、memcpy、memmove
特性描述及模拟实现strlen、strcpy、strcat、strchr、strstr、strcmp、memcpy、memmove 在学习C语言的过程中,不可避免的会经常接触一些库函数,那么有没有小伙伴想过这些库函数怎么实现的呢? 往往这些库函数都是用最精炼最高效的方式写出的,观摩并模拟出库函数的实现,有利于我们对C语言的深入理解。 今天我将我总结的字符串操作函数及其对应的一些小...
2018-04-29 16:51:02
270
原创 【C语言】练习题及答案(5月9号更新)
练习题及答案【4月29号更新】(备忘)// day_19 //***************** //模拟实现strcpy#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;assert.h&amp;gt;char* my_strcpy(char* dest, const char*src){ assert(dest &amp;amp;&
2018-04-27 15:35:04
168
原创 【有趣的C语言】空瓶换汽水问题
有趣的C语言 相信大家学习C语言的过程中都做过这么一道题: 喝汽水,1瓶汽水1元,两个空瓶可以换一瓶汽水,给20元,可以喝多少瓶汽水。编程实现。 那么这道题在C语言中应该如何实现呢? 下面是我写的代码:#include <stdio.h>#define MONEY 20int main(){ int ...
2018-04-27 13:34:40
2772
2
原创 【简单聊一下】宏和函数的区别
宏和函数的区别 当我们通过学习C语言逐步理解了宏和函数的作用后,不免会产生这样的疑惑:宏和函数有什么区别?为什么有的代码在实现功能时用到的是宏,有的代码中却用到的是函数? 这里我以自己所学的知识总结了它们之间的区别,希望看到本文的小伙伴能够理解它们之间的区别,在以后使用的过程中能不出BUG,尽善尽美的完成代码编辑。什么地方会用到宏? 就我们目前看到的这些代码来看,也有不少用到...
2018-04-25 20:47:58
1213
原创 【浅谈】可变参数列表
【浅谈】可变参数列表什么是可变参数列表? 这里我在网上查了一些资料,发现并没有对可变参数列表做出的定义,那么我以我的理解给可变参数列表做出一个简单的定义(如果有不准确的地方,希望大家在留言区指出): 可变参数列表:通过实现函数多个参数传递,使得函数的参数个数可以为一个到N个,这就是可变参数列表。 为什么需要可变参数列表? 不知道大家有没有留意过在C语言学习过程中常用...
2018-04-25 19:00:07
855
原创 【markdown编辑器】插入图片无法显示的解决方法以及段首缩进
markdown编辑器插入图片无法显示任意markdown编辑器下插入图片无法显示大家有么有遇见过这样的现象,在我给段落进行缩进时,预览区出现了这样的情况: 大萨达大萨达阿斯顿的萨达的阿斯顿爱的阿斯达使得阿斯达实打实的大多数萨达爱上打扫打扫打扫打扫打扫的撒大事大事大大的爱上大叔大婶大大的阿斯顿阿达达萨达使得阿斯顿阿斯顿爱上 大神的![图片](https://img-b...
2018-04-25 16:42:34
11609
原创 【浅谈】栈帧的创建与销毁
【浅谈】栈帧的创建与销毁什么是栈帧? 简单点说,C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。 从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数执行完后返回到哪里等等。 从简单的文字我们无法想象和理解栈帧到底是一个什么样的存在,下面我通过一系列的图片...
2018-04-24 21:08:12
416
3
原创 【C语言】练习题及答案(4月26号及以前)
练习题及其答案:【4月26号更新】(备忘)// day_16//***********************//1.递归和非递归分别实现求第n个斐波那契数。//非递归#include <stdio.h>int Fib(int n){ int ret = 1; if(n <= 2) { return ret;...
2018-04-19 15:18:33
296
原创 【Linux】vim编辑器自动缩进自动补全括号引号设置
为什么要优化vim编辑器? 大家在使用linux系统并用vim编辑器敲代码时有没有感觉到稍稍有些费劲,比如换行缩进,没有行号,我今天给大家分享一点我优化vim这款编译器的小操作。优化小操作分享 首先打开终端,用su命令将用户转换成root用户,然后用cd命令将转移到/etc/目录下,用vim指令打开vimrc这个文件vim vimrc 在普通模式下使用G命...
2018-04-18 18:17:38
2534
原创 【VMware虚拟机】Linux Centos下VMware Tools的安装
其他操作系统安装VMware Tools教程 在 Linux 虚拟机中手动安装或升级 VMware Tools 这个网站里左边栏里有如下几个操作系统的安装教程:为什么要安装VMware Tools?1. 更新虚拟机中的显卡驱动, 使虚拟机中的XWindows可以运行在SVGA模式下.2. 提供一个vmware-toolbox, 这个Xwindows下的工具可以让你修改一...
2018-04-18 15:17:47
403
原创 【C语言】实现简易扫雷(仿windows下扫雷)
背景 个人比较喜欢玩扫雷,恰好又在学习C语言,所以想用自己薄弱的C语言水平实现简单的扫雷小游戏。一来提高自己的编程水平,二来通过编写自己喜欢的游戏,从另一方面获得不一样的成就感。框架 实现扫雷不同于我前面写过的三子棋,扫雷的功能更加复杂,更加有逻辑性。 我首先将我能想到的几个模块都一一列举出来: 游戏实现函数 菜单 ...
2018-04-17 15:12:16
4885
1
原创 【Linux Centos】 gcc的安装
背景 在C语言的学习实践中,程序员往往会用到Linux这个系统进行工作学习,Linux之所以如此受欢迎,很大程度上取决于在这个系统下命令行指令(终端指令)可以帮助程序员完成几乎所有的工作,不需要像windows图形界面下用鼠标点击操作。这样大大提高了程序员的工作效率。而这里我写这篇博客是因为我在实际操作Linux ubuntu 6.5系统下想要进行C语言代码的编译时,出现了下面的问题...
2018-04-11 17:46:40
2098
1
原创 【C语言】简单实现三子棋(井字棋)小游戏
背景C语言学习过程中会有很多有趣的实践小程序需要大家编写,这里带给大家一个常见的三子棋小游戏的代码。如果有不足之处,还望指出,感谢浏览。框架这里给刚开始学习或接触C语言的小伙伴分享一点我个人的经验,C语言语法的学习在于更好更高效的实现自己所想实现的程序。而不管是制作一个大的程序还是一个小程序,都要先列出一个相应的框架,这一点在各个领域都很实用,如果把写程...
2018-04-10 18:15:24
8437
25
原创 【C语言】互换两个数的值的三种方法
我在第一次C语言学习的过程中,对于C语言的认识不够深刻,我觉得这种解法已经非常厉害。毕竟能将简单的两个数的交换用计算机的逻辑编写出来,并实现正确运行......int main(){ int num1 = 10; int num2 = 20; int tmp = 0; tmp = num1; num1 = num2; num2 =...
2018-04-01 20:30:54
3146
visimulator.dll x86 notpad++ vim 插件
2019-06-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人