- 博客(29)
- 资源 (20)
- 收藏
- 关注
原创 ffmpeg 代码实现rtmp推流到服务器
前面2篇已经讲解了如何搭建直播服务器 ffmpeg + nginx配置智播推流服务器和ffmpeg + crtmpserver实现直播推流,并且通过ffmpeg命令实现了推流,下面讲解下如何用代码实现推流,并且通过设置dts来实现推流的速度。之前也写过,将摄像头的数据保存到本地为mp4:ffmpeg 获取电脑摄像头数据,并且保存为MP4视频,这里其实差不多,只是将输出设备从本地文件mp4 改...
2019-04-30 17:28:52 13464 1
原创 ffmpeg 常用函数说明
初始化部分函数1、初始化所有封装和解封装 flv mp4 mov mp3av_register_all();2、初始化网络库avformat_network_init();open部分打开输入设备int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt...
2019-04-30 17:10:51 997
原创 ubuntu一些使用技巧 和命令
1、截图全屏:按键print screen 存储位置 home用户的下的 picture目录下自由画框截图: shift +print screen键 也是存储在 home用户的下的 picture目录下2、进入root 文件模式nautilus会打开一个文件窗口,可以对任何文件进行修改,包括系统文件。3、解压tar -zxvf nainx-1.12.tar.g...
2019-04-30 11:41:25 167
原创 ubuntu 18.04 安装sogou拼音
下载直接百度输入搜狗输入法 for linux,下载ubuntu系统的输入法,download下文件:sogoupinyin_2.2.0.0108_amd64.deb安装cd到下载目录,然后进行安装:sudo dpkg -i sogoupinyin_2.2.0.0108_amd64.deb设置settings里面,看是否有中文,如果没有添加chinese,如果没有,就...
2019-04-30 11:38:29 3123 1
原创 ffmpeg + nginx配置智播推流服务器
nginx是配置网站服务器,但是通过安装相应modue也可以实现直播推流。nginx服务器配置环境ubuntu 16.04 nginx 1.13依赖库安装sudo apt-get install gitsudo apt-get install libssl-devsudo apt-get install libpcre3 libpcre3-dev sudo apt-ge...
2019-04-30 10:27:52 2432
原创 ffmpeg + crtmpserver实现直播推流
搭建服务器crtmpservercrtmpserver是开源的直播服务器,地址:https://github.com/j0sh/crtmpserver环境:虚拟机+ubuntu16.04gcc5.4在虚拟机中打开终端,执行下面操作:sudo apt-get updatesudo apt-get install cmakeasudo pt-get install li...
2019-04-29 10:50:57 1318 1
原创 c++ 读取文本操作
没有时间写博客,参考下:void model::InitModel(const char*modelFilePath,const char*textureImagePath) { std::vector<float> texCoord; std::vector<float> normal; std::vector<float> p...
2019-04-28 16:24:38 326
原创 android samplerExternalOES 纹理
samplerExternalOES 的纹理映射上一章节讲解了opengl顶点坐标与sampler2D坐标,而samplerExternalOES 是android用来渲染 相机数据。但它也存在一个问题,android的后置相机的预览的图像是顺时针旋转90°的,而相对于前置相机则是逆时针旋转90°的,如果想要跟照镜子一样的模式,自拍则还要左右对换。后置摄像头后置摄像头只是需要将纹理旋转...
2019-04-28 11:34:26 6594
原创 opengl 顶点坐标和sampler2D纹理坐标
在利用非固定管线进行纹理渲染的时候,经常要用到纹理和顶点坐标的映射关系,这里从三维角度介绍下二维的纹理坐标映射:顶点坐标:首先得明确:顶点坐标是在世界坐标系上(可参考:从渲染过程来理解opengl坐标系和坐标变换投影),这里的世界坐标系投影的屏幕坐标系(可参考:从渲染过程来理解opengl坐标系和坐标变换投影)上, x、y如上图所示,z正方向是从屏幕向外,人眼的位置则是在原点(0...
2019-04-26 13:13:07 10109 2
原创 yuv格式介绍与opengl 显示 yuv数据
目录yuv数据介绍:yuv444yuv420yuv422Opengl显示yuv数据提取数据创建纹理shader显示yuv数据介绍:yuv数据存储主要分3大种:yuv420、yuv444、yuv422图中:空心圆表示 一个uv, 实心圆表示一个y。下面对三种格式进行一个解释:cb代表u,cr代表v。大部分数据格式再 ffmpeg的枚举类...
2019-04-26 11:45:49 7670 2
原创 FFMpeg opengl显示解码avframe
FFmpeg解码出来avframe,但显示很容易出现乱码,因为为了计算的方便,ffmpeg解码出来的数据,总视根据系统处理器或者系统来补齐为 64、32、16的倍数。这也是我们显示乱码的问题所在。问题比如我显示抖音上的视频的宽为368x640, 解码的帧率avFrame,下面是avframe的一些成员变量:avFrame->format = 0 // 表示是 yuv420p的数据...
2019-04-26 09:55:46 3387 3
原创 android glSurfaceview 底层创建EGL渲染环境
之前 android studio搭建简单jni层的opengl开发框架讲到的是在上层render的三个回调函数中写jni函数,从而在jni层调用opengl的绘制,但是在做播放器的时候,需要用opengl来渲染 每一帧,而底层解码后,再渲染,将渲染放在底层,这样播放器的整个框架都在底层,上层只是UI的一些显示操作,而且 如果在render的onFrame中直接来显示帧,在暂停或者seek的时候由...
2019-04-25 18:02:57 1609 3
原创 C++ 数组作为参数
之前写过,当类对象作为参数,传入函数的时候,在函数内部,进行对类的操作,有的会生效,有的不会,当将类的指针对象传入的时候,就不会不生效。今天同样遇到,将数组指针指针当作参数,传入函数的时候也失效了。就是说,在函数中获得数组的值是错误的。给我的感觉,c++用起来很不安全,好多坑,当然,c++ 用的少自己菜的原因。可能是针对c++ 的 变量的生命周期了解不够透彻。1、函数内部 数组的生命周期...
2019-04-25 16:05:38 1115
原创 ffmpeg音视频同步,seek策略总结。
上一篇音视频同步策略和视频seek策略讲过一些方法,但是总视存在一些小问题,这里花费了近三天的时间对整个 音视频同步,以及seek测率进行较大的调整,使得整个程序更健壮,用户在界面胡乱操作,seek和pause都不会引起程序卡顿和崩溃了。音视频seek策略最简单的方法,就是一个大锁,将音频解码 和 视频解码播放 各用同一个锁锁住,然后,将seek部分用同一个锁锁住,这样seek的时候清空数据就...
2019-04-20 11:30:45 2702 2
原创 C++11 中thread 多线程的使用
1、简单的静态方法使用 void test(int a){ LOGE("test a = %d", a);}void main(){ std::thread seek_th(test ,2); seek_th.detach();}2、在类对象中,调用类的方法,创建线程。void LammyOpenglVideoPlayer::seekThread...
2019-04-19 14:59:52 679
原创 android jni 调用java类方法和成员变量
目录 jni层的2个变量介绍。jni调用java层对象和方法获取上层java的类。调用java层方法调用java成员变量参数 const char* sigjni层的2个变量介绍。JNIENV*env,这个是java jni的接口环境,通过它来和上层和c层打交道。jobject instance 这个变量就是jni 函数所在上层调用此函数的类...
2019-04-19 14:42:27 1363 1
原创 visual Studio 添加新的框架模板
一直在用visual studio开发c++,近期,公司要求利用c#开发一个窗体应用程序,打开vs后,点击c#,发现无wpf 或者 窗体应用程序,应该是当初安装vs的时候,没有选择安装此模块。因此到处需求安装新模板的方法,奈何没有找到,正绝望准备卸载重新安装vs的时候,却让我看到了一个应用: 点击打开此 installer程序然后就可...
2019-04-15 10:30:29 5653 1
原创 SwsContext、sws_scale缩放失败,或者缩放后视频乱码
虽然 ffmpeg的缩放效率比较低,但随着电脑或者硬件设备发展,即使使用低效率的,也可以达到普通播放器的要求了。但在使用的过程中的坑还是很多的。在android手机中使用SwsContext 和sws_scale缩放后,视频总视出现乱码或者 干脆一个黑屏。void FFMVideoShow::show(AVFrame *avFrame){ if(dataManager-&...
2019-04-13 11:31:39 3326
原创 音视频同步策略和视频seek策略
此文章讲的seek测率有一定缺陷,即用户非常快速点击seek操作,主线程会卡,下一篇ffmpeg音视频同步,seek策略总结是对这篇的改进,若想直接了解较好的策略,直接移步到我的下一篇中。音视频同步一般有三种方式,1、设置共同时间标志。这种多用于多视频播放中。2、音频同步视频,(由于人耳对音频比视频敏感,比较少用)3、视频同步音频下面就介绍一种视频同步音频的方法。视频同步音...
2019-04-12 12:06:39 1430
原创 win10 更改或者关闭 繁简写,解决ctr shift F键冲突
作为程序员,主要是系统于IDE的冲突,导致编译器不好用。关键每次找这个地方,找半天,今天记录下点击设置->时间和语言选择语言点击语言后,点击红色框部分,再点击选项然后点击 最下面的 框,微软拼音,然后点击选项进入进入后选择 按键...
2019-04-08 11:21:14 2026
原创 C++ error: unknown type name ' '
今天项目中,遇到一个很奇怪的问题,明明导入了头文件,却一直说不知道该类型。如类 videoInfo 类存储的是视频 的信息参数,它当作参数,传入 解码器,作为解码器的成员变量,,如下:#include <cstdint>#include "IDecode.h"extern "C"{#include "libavformat/avformat.h"#include ...
2019-04-06 12:34:28 9747
原创 C++ 类 和 类指针传参 区别
C++中,类作为成员,传入到函数中时候,在函数中处理的类的成员变量没有 更改,因此,当对类的成员变量有操作的时候最好用指针的形式,传入类的指针。看下面的代码:#pragma onceclass A{public: A(); ~A();public: void setA( const char * name, int age) { url = name; age = a...
2019-04-04 11:55:52 2345 2
原创 vue 框架基础方法学习
vue.js框架的结构原理v-cloak 、v-text ="msg"解决闪烁问题区别常用的操作:事件修饰符:.stop: 阻止冒泡(由内向外).prevent阻止自身的默认事件.capture 添加事件侦听器,使用事件捕获模式,可以事件从外部获取,再传向内。.self 事件只有点击元件本身才生效,但不会组织冒泡.once 事件只出发一次...
2019-04-03 19:13:02 154
原创 OpenSLES android平台播放音频pcm
目录播放流程和条件Opengl SLObjectItf 对象创建的四板斧播放pcm的流程播放流程和条件android自带的openSL库,可用来解码音频,也可以来播放音频,以及录音。要在jni层调用:1、cmakeList 中target_link_libraries 内引入库:OpenSLES2、引入头文件:#include "SLES/OpenSLES....
2019-04-02 09:57:26 929
原创 ffmpeg 音频重采样SwrContext
SwrContext重采样上下文创建分配空间SwrContext *swrContext = swr_alloc();设置参数struct SwrContext *swr_alloc_set_opts(struct SwrContext *s, int64_t out_ch_layout, enum ...
2019-04-01 14:48:00 706
原创 ffmpeg 视频像素尺寸转换SwsContext、sws_scale 函数解释
函数介绍SwsContext格式转换的上下文,下面是初始化函数struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dst...
2019-04-01 12:24:13 1560
原创 ffmpeg android jni端调用mediaCodec实现硬解码
硬解码,用的是cpu上面固化的一段芯片,专门用来处理音视频的,硬解码不会大量占用cpu 也不会占用gpu,但解码的帧率是固化的。ffmpeg是c库,而android只在java端抛出mediaCodec 来实现硬解码,ffmepg已经为andorid设计好了调用java层函数的方法av_jni_set_java_vm,但是我们需要在jni层传入java的对象。硬解码1、在jn...
2019-04-01 11:27:05 3794 4
原创 ffmpeg 新版本avcodec_send_packet 和avcodec_receive_frame实现解码
ffmpeg解码现在完全放在后台去做了,现在分为2个步骤avcodec_send_packet 发送数据到ffmepg,放到解码队列中avcodec_receive_frame 将成功的解码队列中取出1个frameint avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpacket)avpacket ...
2019-04-01 10:01:48 25051 6
原创 ffmepg AVFrame用法
空间分配类似于AVPacket,采用的引用计数。常用参数uint8_t *data[AV_NUM_DSTS_POINTERS] 数据。int linesize[AV_NUM_DSTS_POINTERS] 视频:一行数据大小,音频:一个通道的数据(防止视频 字节对齐)int width height; 视频的宽高int nb_samples 音频单通道的样本数量 ,单通道一...
2019-04-01 09:28:57 3567
rename.zip
2019-11-30
glsurfaceview在native创建EGL环境并渲染
2019-04-25
opengl mvp矩阵实现3d漫游
2019-03-26
android studio opengl jni层搭建开发框架
2019-03-21
go 实现百度图片爬虫(破解百度防爬虫机制)
2019-03-15
快速双边滤波的美颜算法
2019-02-25
node.js 实现图片 压缩,上传下载,以及base64的图片显示、上传和服务端接受
2019-01-24
tensorflow模型以及so 和 jar在android studio中的应用
2019-01-10
libcudnn7_7.3.1.20-1+cuda9.0_amd64.deb
2018-12-14
libcudnn7-dev-doc_7.3.1.20-1+cuda9.0_amd64.deb
2018-12-14
cudnn7.3.1 for cuda9.0中cudnn-9.0-linux-x64-v7.3.1.20.tgz第二部分
2018-12-14
cudnn7.3.1 for cuda9.0中cudnn-9.0-linux-x64-v7.3.1.20.tgz第一部分
2018-12-14
androidopengl相机实时滤镜拍照
2018-12-06
libyuv 编译的so库和include文件
2018-09-03
ffmpeg编译的android so库和include文件
2018-09-01
ffmpeg 编译so库android ndk来对视频编解码
2018-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人