![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
书弋江山
和光同尘,与时舒卷;戢鳞潜翼,思属风云,漆黑如夜,孑然踽行
展开
-
FFmpeg 解码
//注册所支持的所有的文件(容器)格式及其对应的CODEC av_register_all() /* av_register_all该函数注册支持的所有的文件格式(容器)及其对应的CODEC,只需要调用一次,故一般放在main函数中。也可以注册某个特定的容器格式,但通常来说不需要这么做 */ av_register_all(); AVFormatContex原创 2017-11-06 14:55:59 · 456 阅读 · 0 评论 -
数据结构 排序算法
之前每次牵涉到排序都是冒泡排序,别的排序基本很少有,因为最开始是写app的,而且大部分API 都提供的有排序函数,后来就是看一些底层,和一些面试感觉有必要再总结一下 交换数据,指针实现void swiss(int *x,int *y){ int temp = *x; *x = *y; *y = temp;}最简单的冒泡排序void test_maoPao...原创 2017-06-26 00:35:48 · 321 阅读 · 0 评论 -
ffmpeg 编解码流程
去年最流行的非视频直播莫属,出现了几百家的直播平台,毕竟自己也是在直播平台做开发的,然后就写一篇关于直播的文章。这里只说流程,具体的实现就不说了,应付面试应该还是可以的。 先上一张简单的流程图: 上面这张图就是视频直播的流程图,想要开发一款自己的视频直播软件不麻烦,现在有好多直播sdk,比如腾讯视频云,金山视频云,易视云,7牛视频云,等等,使用它们的sdk能很快的...转载 2018-01-19 16:28:15 · 1080 阅读 · 0 评论 -
Ubuntu 相关文章
玩转Ubuntu系列文章 我的收藏 Android视频开发进阶(part1-关于视频的那些术语) http://www.jianshu.com/p/10e357946447Android视频开发进阶(part2-MP4文件的解析) http://www.jianshu.com/p/2b85c9bc3a12Android视频开发进阶(part3-Android的Media API转载 2018-02-02 17:12:39 · 185 阅读 · 0 评论 -
C++常量指针和指针常量
与其说C++中的常量指针和指针常量是一块很有嚼头的语法糖,不如说它是一块相当难啃的骨头。其实本来没什么,这无非是const int *p与int* const p的区别, 但一涉及到起名字,特别是给他们戴上“常量指针”和“指针常量”的中文帽子,由于作者和译者(针对外文书)的不同,就出现了“张冠李戴”和“李冠张戴”的乱像,不知道谁是谁了,弄得人一头雾水,尤其是对于初学者。本文的目的就是针对这一细转载 2018-01-26 11:26:40 · 331 阅读 · 1 评论 -
ffmpeg 对图像数据格式以及图片缩放
利用ffmpeg进行图像数据格式的转换以及图片的缩放应用中,主要用到了swscale.h文件中的三个函数,分别是: struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH,转载 2017-11-08 15:37:43 · 1988 阅读 · 0 评论 -
C 函数指针
c语言函数指针的理解与使用 1.函数指针的定义 顾名思义,函数指针就是函数的指针。它是一个指针,指向一个函数。看例子:123A) char * (*fun1)(char * p1,char * p2);B) char * *fun2(char * p1,char * p原创 2018-01-11 10:01:42 · 313 阅读 · 0 评论 -
ffmpeg YUV420P视频帧旋转
//逆时针旋转90 度-(void)frame_rotate_90WithSorrce:(AVFrame *)src des:(AVFrame*)des{ int n = 0; int hw = src->width>>1; int hh = src->height>>1; int size = src->width * src->height; int转载 2017-12-05 18:47:02 · 1778 阅读 · 0 评论 -
FFmpeg 解码视频流实现yuv播放
参考文章雷神文章 FFMPEG–裸码流解码AVCodec 最简单的基于FFmpeg的libswscale的示例(YUV转RGB) 初始化解码器相关变量-(void)initDecoder{ if (decodeFrame) { return; } int codec_id = AV_CODEC_ID_H264; pCodec = avcodec_原创 2017-12-01 18:18:03 · 1933 阅读 · 0 评论 -
Tutk P2P的原理和常见的实现方式
最近在做tutk P2p相关公司的IP摄像头项目,然后看了一下实现原理,然后改一了一篇文章来记录一下,天下文章一大抄,天下代码也是一样的,下面就是TUTK 的Demo tutk实现的Demo1.简介 当今互联网到处存在着一些中间件(MIddleBoxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信。这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还有原创 2017-12-12 09:25:11 · 22205 阅读 · 1 评论 -
Android 使用CMake 编译NDK
创建cpp文件在android 项目中 创建JNIUtils java类 添加native java 方法 添加的native java方法提示红色,提示上的路径一会儿还要用到创建 c++和 CMakeLists.txt文件 CMakeLists.txt格式# 指定cmake最低版本,如果不知道就复制吧cmake_minimum_required(VERSION 3.4.1)#原创 2017-11-11 19:03:07 · 677 阅读 · 0 评论 -
socket 使用select()非阻塞方式实现
select函数原型如下:int select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);select系统调用是用来让我们的程序监视多个文件句柄(socket 句柄)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变有转载 2017-10-26 15:51:31 · 2634 阅读 · 1 评论 -
信号量sem_t,互斥锁pthread_mutex_t的使用
信号量的数据类型为结构sem_t,它本质上是一个长整型的数。——函数sem_init()用来初始化一个信号量。 它的原型为: extern int sem_init __P ((sem_t *__sem, int __pshared, unsigned int __value));sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前进程的所...转载 2017-10-31 16:18:06 · 5188 阅读 · 0 评论 -
Linux的SOCKET编程详解
1. 网络中进程之间如何通信进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal)UNIX system V有:消息(message)、共享存储区(shared转载 2017-10-23 15:37:47 · 201 阅读 · 0 评论