
ffmpeg
Eyrane
这个作者很懒,什么都没留下…
展开
-
ffmpeg——无法生成ffplay
在ubuntu中安装ffmpeg 以前的ubuntu中编译ffmpeg时,无法生成ffpaly,这次安装了SDL2,重新编译就有ffplay。 下载解压SDL2安装包,进入目录:./configure make make install 用以下程序验证是否能用SDL的相关函数:#include <stdio.h>#include </usr/in...原创 2018-05-08 15:44:24 · 632 阅读 · 0 评论 -
Matlab 读写yuv文件
clear all; clc;fid = fopen('Data/Testing/down.yuv','r'); %读入文件fod = fopen('Data/Testing/test.yuv','w'); %输出文件row=768/2;col=1024/2; %图像的高、宽frames=97; % total=97 %序列的帧数for frame=1:frames %读入文件 将...原创 2017-05-27 11:34:24 · 13811 阅读 · 3 评论 -
视频播放出现卡顿原理
视频卡顿的原因: 1.ddr频率不够 2.其中一个模块太慢 3.堵车了重点以rkvdec分配的带宽不够进行分析: 可能有三个原因: a.ddr剩余的带宽超过rkvdec所需的 b.由于每次读取不只读取所需的,比如你需要10个,但会读取100个,造成带宽浪费 c.跳转浪费,比如宏块的上下行像素并不是连续存储的,需要跳转。以4K/60HZ(10bits)的片源为例:3840*...原创 2018-05-04 10:09:42 · 10203 阅读 · 0 评论 -
ffmpeg——h263、mpeg2、hevc
gstlibav中h263、mpeg2、hevc中decode_frame这个函数。 以下是h263的参考帧和DPB变化过程:原创 2018-05-04 10:01:37 · 1663 阅读 · 0 评论 -
ffmpeg-----流程图
从读包、解析、到解码。包以ts方式封装。原创 2018-05-04 09:57:59 · 1767 阅读 · 0 评论 -
ffplayer与mpp的对接
ffplayer在hwprepare()最终会调用到mpp中的init()原创 2018-05-03 09:20:12 · 387 阅读 · 0 评论 -
在linux上使用NDK编译hello.c
为了学习使用NDK进行交叉编译,首次在linux上使用NDK编译hello.c,使其生成能在android平台上运行的可执行文件。其makefile如下:PREFIX=/home/xlh/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86/bin/CC=$(PREFIX)/arm-linux...原创 2018-01-12 08:51:01 · 2313 阅读 · 0 评论 -
ubuntu16.04.3安装opencv2.4.13
1.在virtualbox上安装ubuntu ubuntu下载地址:http://releases.ubuntu.com/2.ubuntu的一些使用 用ssh连接,先安装ssh服务:sudo apt-get install openssh-server 从图形界面切换到文字界面:Ctrl+Alt+F1 从文字界面切换到图形界面:Ctrl+Alt+F7 设置固定IP地址:设置–>...原创 2018-01-22 11:44:46 · 572 阅读 · 0 评论 -
ffmpeg——ffserver的一个简单demo
ffmpeg和ffserver配合使用可以实现实时的流媒体服务。ffmpeg,负责媒体文件的transcode工作,把你服务器上的源媒体文件转换成要发送出去的流媒体文件。ffserver,负责响应客户端的流媒体请求,把流媒体数据发送给客户端。ffserver.conf,ffserver启动时的配置文件,在这个文件中主要是对网络协议,缓存文件feed1.ffm(见下述)和要发送的流媒体文件...原创 2018-05-08 15:36:31 · 10533 阅读 · 3 评论 -
ffmpeg——decodevideo的一个demo
doc\examples文件夹中的decode_video.c为例: main—>avcodec_find_decoder—>av_parser_init—>avcodec_alloc_context3—>avcodec_open2—>av_parser_parse2—>decodeint main(int argc, char **argv){ ...原创 2018-05-08 11:00:09 · 2885 阅读 · 0 评论 -
ffmpeg——url初始化
URLContext中是对具体资源文件进行操作的上下文,URLProtocol则是在将资源进行分类的基础上,对某一类资源操作的函数集。typedef struct URLContext { const AVClass *av_class; /**< information for av_log(). Set by url_open(). */ const struc...原创 2018-05-08 10:58:27 · 1690 阅读 · 0 评论 -
ffmpeg——rtsp
void av_url_split(char *proto, int proto_size, char *authorization, int authorization_size, char *hostname, int hostname_size, int *port_ptr, ...原创 2018-05-08 10:05:37 · 906 阅读 · 0 评论 -
url
http://mail.163.com/index.html1)http://:这个是协议,也就是HTTP超文本传输协议,也就是网页在网上传输的协议。2)mail:这个是服务器名,代表着是一个邮箱服务器,所以是mail.3)163.com:这个是域名,是用来定位网站的独一无二的名字。4)mail.163.com:这个是网站名,由服务器名+域名组成。5)/:这个是根目录,也就是说...原创 2018-05-08 09:07:04 · 223 阅读 · 0 评论 -
ffmpeg——TS流解析
RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。实时传输协议RTP(Real-time Transport Protocol)是一个网络传输协议,RTP协议详细说明了在互联...原创 2018-05-07 09:34:20 · 8156 阅读 · 0 评论 -
ffmpeg——ts相关信息
1.ES PES TS TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度。 PS包与TS包在结构上的这种差异,导致了它们对传输误码具有不同的抵抗能力。在信道环境较为恶劣,传输误码较高时,一般采用TS码流;而在信道环境较好,传输误码较低时,一般采用PS码流。由于TS码流具有较强的抵抗传输误码的能力,因此目前在传输媒体中进行传输的MPEG-2码流 基本上都采用了TS...原创 2018-05-07 09:30:29 · 1594 阅读 · 0 评论 -
下载并编译android8.1工程
1.下载工程环境 路径:https://redmine.rockchip.com.cn/projects/rk3328-android-8-0-box-sdk-dev/wikirepo init --repo-url ssh://git@10.10.10.29/tools/repo -u ssh://10.10.10.29:29418/android/platform/manifest ...原创 2018-01-25 17:24:49 · 7676 阅读 · 1 评论 -
隔行扫描和逐行扫描
但是传统技术使得电视机来不及一次将五六百行的内容都刷新一遍,电子枪扫描到屏幕下面时,上面的内容已经衰减了。于是采用了奇偶行交替的补救办法。第一遍先刷新奇数行,第二遍再刷新偶数行,第三遍在奇数行刚开始衰减时电子枪又杀回来了,重新刷新奇数行,如此反复。这种扫描方式被称为“隔行扫描”(interlace scan),它一次虽然只能扫描一半屏幕,但毕竟不是上半部或者下半部,而是全屏,效果还是不错的,但会出...原创 2018-02-25 17:16:45 · 2091 阅读 · 0 评论 -
Mat
IpelImage基于c语言。Mat基于c++,不需要手动(1)为其开辟空间(2)空间释放。 Mat是一个类,包括了:(1)矩阵头(包含矩阵大小、存储方法、存储地址等信息),(2)指向存储所有像素的矩阵的指针。矩阵头的尺寸是常数,但矩阵大小会依据图像而变化。 在使用opencv库函数时,函数中的参数(图像)传递非常普遍,引入了计数机制,让每个Mat对象有自己的信息头,但共享同一个矩阵。这通过让...原创 2018-01-22 09:24:44 · 349 阅读 · 0 评论 -
ffplayer——dlopen dlsym dlclose
函数说明: http://www.cnblogs.com/Anker/p/3746802.htmlDecoderVideo::initVpuCodecContext(VpuCodec** vpu_codec){ c->open_codec = (VpuCodecOpenFactory) dlsym(gRkVpuLibHandle, "vpu_open_context");//...原创 2018-05-03 08:52:00 · 368 阅读 · 0 评论 -
ffplayer编译和运行
一,编译 1.配置环境: 在3228_4.4根目录下: source build/envsetup.sh lunch rk3228-eng 2.编译: 在3228_4.4/frameworks/av/media/libffplaye...原创 2018-05-02 15:28:54 · 856 阅读 · 0 评论 -
ffplayer与mpp对接
static bool getRkVpuLibHandle(){ if (gRkVpuLibHandle == NULL) { gRkVpuLibHandle = dlopen(RK_VPU_LIB, RTLD_NOW);//dlopen以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程 } if (gRkVpuLibHandle == NULL...原创 2018-05-02 15:28:10 · 1057 阅读 · 0 评论 -
HEVC统计skip、mv、qp的信息
merge和skip模式ffmpeg中h265的软解流程skip信息mv信息qp信息所写代码1.merge和skip模式merge模式:从时空相邻PU块构建参考列表,从中选择出最优的运动信息索引,将索引和mvd发送到解码端。skip模式是merge中的一种特殊模式,传输时无残差无mvd。 merge模式:merge_index + 残差 skip模式:skip...原创 2018-02-25 19:40:05 · 1959 阅读 · 1 评论 -
ffmpeg.c
使用RTMP技术的流媒体系统有一个非常明显的特点:使用 Flash Player 作为播放器客户端,而Flash Player 现在已经安装在了全世界将近99%的PC上,因此一般情况下收看RTMP流媒体系统的视音频是不需要安装插件的。用户只需要打开网页,就可以直接收看流媒体,十分方便。 可以这样概括一下:凡是想实现“无插件直播”的流媒体系统,都会使用RTMP。RTMP:Real Time M...原创 2018-02-24 09:04:27 · 325 阅读 · 0 评论 -
ffmpeg相关链接
在linux中安装ffmpegffmpeg的demoffmpeg源码分析 包括了av_register_all、avcodec_register_all、av_find_decoder、avcodec_open2、avformat_open_input、avformat_find_stream_info、av_read_frame、avcodec_decode_video2等ffmp...原创 2018-02-23 14:45:19 · 199 阅读 · 0 评论 -
ffmpeg常用结构体
参考:http://blog.youkuaiyun.com/leixiaohua1020/article/details/116939971.之间的关系 FFMPEG中结构体很多。最关键的结构体可以分成以下几类:a) 解协议(http,rtsp,rtmp,mms) AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLPro...原创 2018-02-23 15:07:45 · 624 阅读 · 0 评论 -
ffmpeg——main()
ffmpeg的主函数入口:ffmpeg.c中的main函数int main(int argc, char **argv){ int i, ret; int64_t ti; init_dynload(); register_exit(ffmpeg_cleanup); setvbuf(stderr,NULL,_IONBF,0); /* win32 r...原创 2018-02-23 14:25:26 · 1448 阅读 · 0 评论 -
使用c语言编写统计带宽的工具
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <signal.h>#include <sys/time.h>#include <time.h>#include <sys/mman.h>#include &l原创 2018-01-15 17:34:15 · 1458 阅读 · 0 评论 -
linux中使用NDK编译ffmpeg的android平台的可执行文件
linux中使用NDK编译ffmpeg,使其生成可在android平台上运行的可执行文件原创 2018-01-11 11:10:06 · 1084 阅读 · 0 评论 -
HEVC解码相关代码
ffmpeg中hevc解码相关代码原创 2018-01-11 16:12:40 · 1414 阅读 · 0 评论 -
ffplayer——状态机
状态参考BlurayPlayer.cpp中的PlayerStatusenum PlayerStatus { PLAYER_STATE_ERROR = 0, PLAYER_IDLE = 0x01, PLAYER_INITIALIZED = 0x02, PLAYER_PREPARING =...原创 2018-05-02 15:31:36 · 601 阅读 · 0 评论 -
ffplayer——线程
class FFMPlayer{ pthread_t mReadThread;//StartPlayer pthread_t mCancelThread;//CancelThread pthread_t mBufferingThread; pthread_t ...原创 2018-05-02 15:32:17 · 255 阅读 · 0 评论 -
mpp——编译和运行
一,编译 1.用secureCRT登陆服务器,然后进入mpp/build/android/arm文件 2.vim make-Android.bash(该步骤用于修改NDK路径,若路径正常则不用管) 3.source make-Android.bash(或./make-Android.bash)//生成libmpp.so和libvpu.so二,运行 在cmd中操作 1.adb remo...原创 2018-05-03 08:47:05 · 4054 阅读 · 3 评论 -
ffplayer——FFMPlayer::start() FFMPlayer::stop()
status_t FFMPlayer::start(){ int status = getCurrentStatus(); if (status == PLAYER_PREPARED) { if (mMessageQ.get() != NULL) { enqueueMessage(new MessageStart(NULL)); //创建类...原创 2018-05-03 08:45:52 · 778 阅读 · 0 评论 -
ffplayer——说明
prepareAsync:主线程不断产生packet,放入PacketQueue* mQueue;//av_read_framestart:视频解码形成从mQueue中取出一个packet,然后对此包进行操作://decode 在mpp中,该packet会进入mpp_list *mPackets;//decode_sendstream 从mpp_list *mFrames中...原创 2018-05-02 15:38:13 · 2899 阅读 · 0 评论 -
ffplayer——render流程和buffer分配
采用显示和解码共享内存机制,相比较与旧的机制有速度快、IO吞吐量低的特点。在主线程中: FFMPlayer::prepareVideo()–>initRender(mColorFormat, 0,HW);—–>checkReAllocateBuffers(decoderType, isInfoChange);———->mNativeWindowBufferAll...原创 2018-05-02 15:37:46 · 1192 阅读 · 0 评论 -
ffplayer——显示线程Threadproc(start)
status_t FFMPlayer::doStart(){ if (pfrmanager) { pfrmanager->start(this); pfrmanager->play(); } SAFE_CALL_STARTASYNC(mDecoderVideo); ret...原创 2018-05-02 15:36:15 · 524 阅读 · 0 评论 -
ffplayer——消息线程sched_thread(setDataSource)
status_t FFMPlayer::setDataSource(int fd, int64_t offset, int64_t length){ startMessageQueue();//消息队列 mFd = fd;//int FFMPlayer::mFd; mUri = &path[0]; mOffsetLength = length;...原创 2018-05-02 15:35:38 · 360 阅读 · 0 评论 -
ffplayer——视频解码线程startThread(start)
FFMPlayer::start()会调用enqueueMessage(new MessageStart(NULL));创建类型为CMD_START的meg,然后将该meg放入mQueue。根据meg的类型会调用FFMPlayer::doStart(),该函数会调用SAFE_CALL_STARTASYNC(mDecoderVideo);即DecoderVideo::startAsync()...原创 2018-05-02 15:34:53 · 517 阅读 · 0 评论 -
ffplayer——主线程StartPlayer
主线程StartPlayer(prepare prepareAsync) prepare方法是将资源同步缓存到内存中,一般加载本地较小的资源可以用这个,如果是较大的资源或者网络资源建议使用prepareAsync方法,异步加载。 在异步中,若想让资源start()起来,必须设置监听,否则拿不到这个资源。如果让线程睡眠一段时间,则可以取得资源,因为这个时候,异步线程已经取得资源,但不可能使...原创 2018-05-02 15:33:32 · 589 阅读 · 0 评论 -
在Linux中编译安装ffmpeg
在解压完ffmpeg包后,输入命令./configure出现如下问题: 解决方法是安装yasm,但在./configure;make;make install安装,安装失败(yasm –version查看),要使用./configure –prefix=/usr;make;sudo make install安装。注意安装路径 http://blog.youkuaiyun.com/u014037733/...原创 2017-11-15 15:37:36 · 585 阅读 · 0 评论