![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FFmpeg
文章平均质量分 73
小小的熊OnlyOne
这个作者很懒,什么都没留下…
展开
-
ffmpeg画中画效果
ffmpeg画中画效果转载 2022-06-08 09:57:34 · 684 阅读 · 1 评论 -
ffmpeg解决帧丢失问题:还有几帧数据缓存在解码器中,需要取出来
前言 最近在学习如何使用ffmpeg解析视频,在网上查找的办法大同小异,直接说解码函数avcodec_send_packet和avcodec_receive_frame,这两个是一起的,必须同时出现,我是通过子线程读取视频文件,不停地将读取出来的包放入videoQueue或audioQueue中,再利用SDL创建videoThread来不断从video队列里拿出packet送入解码器中,即利用avcodec_send_packet将包送入解码器中,利用avcodec_receive_fra...转载 2022-05-24 18:08:37 · 3545 阅读 · 0 评论 -
RTP有效负载(载荷)类型 (RTP Payload Type)
下图为RTP部格式:*****************************************************1) V:RTP协议的版本号,占2位,当前协议版本号为22) P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。3) X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头4) CC:CSRC计数器,占4位,指示CSRC 标识符的个数(作用...转载 2021-11-16 17:31:24 · 7449 阅读 · 0 评论 -
ffplay 分析概述
ffplay是ffmpeg源码中提供的一个播放器实现例子。很多成熟播放器是基于ffplay修改而来的,如果想基于ffmpeg实现自己的播放器,或者维护一个基于ffmpeg的播放器,ffplay都是一个很好的切入点。在阅读ffplay的代码前,需要先具备一定的音视频基础,这方面可以阅读雷神的博客:https://blog.csdn.net/leixiaohua1020/article/details/15811977。(除了这篇文章,还可以自行翻阅雷神的其他文章,都写的很好,浅显易懂,简洁明了)在视频转载 2021-10-13 17:04:51 · 1658 阅读 · 0 评论 -
FFmpeg常用结构体分析--5. AVPacket
5. AVPacketFFmpeg用 AVPacket来存放编码后的视频帧数据,AVPacket保存了解复用之后、解码之前的数据(仍然是压缩有的数据)和关于这些数据的一些附加信息,比如显示时间戳(PTS)、解码时间戳(DTS)、数据时长、所在媒体流的索引等。对于视频(Video)来说,AVPacket通常包含一个压缩的帧,而音频(Audio)则有可能包含多个压缩的帧。并且,一个Packet有可能是空的,不包含任何压缩数据,只含有附加数据 side data(side data 指的是容器提供的关于P转载 2020-08-31 11:08:53 · 1681 阅读 · 0 评论 -
FFmpeg常用结构体分析--4. AVCodecContext
4. AVCodecContext这是编码器上下文的数据结构,包含了解码器需要的参数信息。如果是单纯使用libavcodec,这部分信息需要调用者进行初始化,如果是整个FFmpeg库,这部分信息在调用av_open_input_file()和 av_find_stream_info()的过程中会根据文件头部信息以及媒体流内的头部信息完成初始化。结构体定义:typedef struct AVCodecContext{ const AVClass *av_class;//av_log使转载 2020-08-31 11:08:09 · 1377 阅读 · 0 评论 -
FFmpeg常用结构体分析--3. AVStream
3. AVStreamAVStream 是存储视频/音频流信息的结构体。解复用器的目的就是从容器在分离(解析出来)不同的流。而FFmpeg中流对象是AVStream,它由解复用器的read_header()函数创建,保存着AVFormatContext的nb_streams(容器中流条数)和stream[]数组中结构体定义:typedef struct AVStream { int index; //在 AVFormatContext中 streams[] 中AVStream对应转载 2020-08-31 11:07:23 · 1435 阅读 · 0 评论 -
FFmpeg常用结构体分析--2. AVInputFormat
2. AVInputFormatAVInputFormat是FFmpeg的解复用器对象。一种文件格式对应一个AVInputFormat结构,在程序运行时候有多个实例。next变量用于把支持的所有输入文件容器格式连接成链表,便于遍历查找。priv_data_size标识具体的文件容器格式对应的Context大小。对应的结构体定义如下:typedef struct AVInputFormat{ const char *name;//类似列表形式的格式的短名称 const cha转载 2020-08-31 11:06:20 · 1273 阅读 · 0 评论 -
FFmpeg常用结构体分析--1. AVFormatContext
1. AVFormatContext/*** Format I/O context. * ... */AVFormatContext可以说是贯穿全局的数据结构,很多函数都要用它作为参数。此结构包含了一个视频流的格式内容。其中AVInputFormat(或者AVOutputFormat,但是同一时间AVFormatContext内只能存在其中一个),AVStream,AVPacket这几个重要的结构以及一些其他信息,比如title,author,copyright等,后还有一些可能在编解码中会转载 2020-08-31 11:00:52 · 872 阅读 · 0 评论 -
音视频:基础知识点
音视频相关知识点1. 帧率定义为每秒显示帧数(frames per second,fps),或者赫兹(Hz)。每秒显示帧数(fps)或帧率,表示图像处理器处理场时每秒能够更新的次数。高帧率可以得到更逼真更流畅的动画。一般来说30fps就是可以接受的,但是将性能提升到60fps则可以明显感受到逼真感。等过了75fps,提升就没那么明显了。帧率并不是越高越好,如果超过了屏幕的刷新率,则会浪费图像处理能力。此外,安卓里面有16ms刷新一次屏幕的说法android 为了优化显示性能,and转载 2020-08-31 10:57:04 · 590 阅读 · 0 评论 -
FFmpeg命令行实现两路/多路视频拼接 合并 合成 同时播放
首先放一个两路视频合并的例子ffmpeg -pix_fmt rgb24 -s 960x960 -i bag_level_7_renderSize_1_960x960_8bits_rgb24i.rgb -pix_fmt rgb24 -s 960x960 -i bag_level_7_renderSize_1_960x960_8bits_rgb24i.rgb -filter_complex "[0:v]pad=iw*2:ih[a];[a][1:v]overlay=w*1" -pix_fmt rgb24 o转载 2020-08-05 16:19:40 · 5699 阅读 · 0 评论 -
ffmpeg缩放视频尺寸
FFmpeg有一个非常强大的缩放过滤器,可用于完成各种任务。其中一些列在这里。更多信息可以在官方文档中找到。在所有示例中,起始图像(input.jpg)将是这一个(535⨉346像素):简单重新缩放如果您只需将视频大小调整为特定大小(例如320⨉240),则可以使用最基本形式的缩放滤镜:ffmpeg -i input.avi -vf scale = 320:240 output.avi同样适用于图像:ffmpeg -i input.jpg -vf scale = 320:.转载 2020-08-05 16:05:35 · 11202 阅读 · 0 评论 -
Vs2015编译vlc源码
1.直接运行下面链接VLC源码,直接用默认v120运行即可,不要改成最新的v140. 分享一下,不然大家以为vs2015不能编译,网上都是vs2013编译,开始我以为不行找了很久。 https://download.csdn.net/download/xionglifei2014/10630622 注意:直接运行v140会出现很多错误。...原创 2018-08-28 10:25:31 · 2670 阅读 · 0 评论 -
FFMpeg无损合并视频的多种方法
众所周知,从某些视频网站下载的视频是分段的。比如新浪视频每隔6分钟分段,俗称“6分钟诅咒”。现在的任务是将这些视频片段合并起来,并且尽量无损。方法一:FFmpeg concat 协议对于 MPEG 格式的视频,可以直接连接:ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg对于非 MPEG 格式容器,但是是 ...转载 2018-06-21 15:11:47 · 3158 阅读 · 1 评论 -
波特率与比特率
波特率与比特率自己理解了之后写个记录,如果有错,欢迎指正。1.比特率比特率顾名思义,是单位时间内传输了多少位(比特),单位是bit/s。波特率并不是比特率,只是有时候和比特率正好相等而已。2.编码要理解波特率,就要知道编码(调制)。举个简单的例子:01001111这串信号有8位(比特),如果一位一位的来看,那就是有两种不同的离散值0和1。但是假设现在经过调制,我们现在认为每两个bit作为「一个符号...转载 2018-05-22 12:33:07 · 183 阅读 · 0 评论 -
dll可以只运行一次的函数位置
dll可以只运行一次的函数位置,例如下面的FFmpeg使用。BOOL WINAPI DllMain( HINSTANCE hinstDLL, // handle to DLL module DWORD fdwReason, // reason for calling function LPVOID lpReserved) // reserved{ // Perform actions ...原创 2018-05-07 12:19:25 · 553 阅读 · 0 评论 -
FFmpeg相关资源
1.FFmpeg DXVA2硬件解码实例FFmpeg DXVA2硬解码实例,基于MFC的项目。下载地址--https://download.csdn.net/download/xionglifei2014/10397049原创 2018-05-07 11:21:18 · 281 阅读 · 0 评论 -
FFmpeg格式转换
static bool YV12ToBGR24_FFmpeg(AVFrame *YV12Frame, AVFrame * frameVideoOut){ SwsContext* imgCtx = sws_getContext(frameVideoOut->width, frameVideoOut->height, AV_PIX_FMT_NV12, frameVideoOut->w...原创 2018-05-07 09:07:18 · 652 阅读 · 0 评论 -
FFmpeg函数记录1
1.为AVFrame重新分配空间 int av_frame_get_buffer(AVFrame *frame, int align);align指位深度。2.取消引用的所有缓冲区并重置AVFramevoid av_frame_unref(AVFrame *frame);3.复制图片平面void av_image_copy_plane(uint8_t *dst, int dst_lin...原创 2018-05-05 15:52:18 · 1088 阅读 · 0 评论 -
D3DPRESENT_PARAMETERS详解
定义后台缓存表面的参数(包括深度模板缓存是否定义和像素格式).typedef structD3DPRESENT_PARAMETERS { UINT BackBufferWidth; // 窗口模式可以为0,全屏模式是EnumAdapterModes的一个返回值 UINT BackBufferHeight;//同上 D3DFORMAT...转载 2018-05-11 15:40:36 · 1469 阅读 · 0 评论 -
DLL_PROCESS_ATTACH通知
DLL_PROCESS_ATTACH通知当DLL被初次映射到进程的地址空间中时,系统将调用该DLL的DllMain函数,给它传递参数fdwReason的值DLL_PROCESS_ATTACH。只有当DLL的文件映像初次被映射时,才会出现这种情况。如果线程在后来为已经映射到进程的地址空间中的DLL调用LoadLibrary(Ex)函数,那么操作系统只是递增DLL的使用计数,它并不再次用DLL_PRO...转载 2018-05-11 15:32:16 · 10684 阅读 · 0 评论 -
FFmpeg函数记录2
1.av_image_alloc指定一张图片的大小(宽w、高h),像素格式(pix_fmt),填补相应的指针和线宽.int av_image_alloc(uint8_t *pointers[4], int linesizes[4], int w, int h, enum AVPixelFormat pix_fmt, int align);例子: AVFrame *frameVideoOut = ...原创 2018-05-11 15:14:30 · 580 阅读 · 0 评论 -
下个时间戳计算
下个时间戳计算:(1)视频时间戳计算videoDelay_Pts = in_stream->time_base.den / (in_stream->r_frame_rate.num / in_stream->r_frame_rate.den);(2)音频时间戳计算 packet_out.duration*音频个数或pFrame_out->nb_samples...原创 2018-11-21 11:50:21 · 303 阅读 · 0 评论 -
流媒体服务器搭建总结
原文地址:http://lib.csdn.net/article/liveplay/46293框架:Live555获取网络相机流ffmpeg对获取网络相机码流转码视频码流的高效显示一、 live555、ffmpeg及D3D的简介 Live555是一个标准流媒体传输的跨平台C++开源项目。 Ffmpeg是一个音视频解码的开源项目。 DerictX9是微软的游戏引擎库。...转载 2018-12-14 10:45:00 · 1492 阅读 · 1 评论 -
FFmpeg学习6:视音频同步
原文地址:https://www.cnblogs.com/wangguchangqing/p/5900426.html在上一篇文章中,视频和音频是各自独立播放的,并不同步。本文主要描述了如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放的。主要有以下几个方面的内容视音频同步的简单介绍 DTS 和 PTS 计算视频中Frame的显示时间 获取Audio clock(a...转载 2019-02-16 16:35:21 · 147 阅读 · 0 评论 -
Android FFMpeg应用实例(三):利用AVfilter实现视频添加水印,滤镜等特效功能(附Demo)
在前面的几篇文章中我们已经学会了用FFMpeg对音视频进行编解码,下面我们主要来介绍一下libavfilterFFMpeg的libavfilter是为音视频添加特效功能的,其关键函数如下所示:avfilter_register_all():注册所有AVFilteravfilter_graph_alloc():为FilterGraph分配内存avfilter_graph_create_f...转载 2019-08-06 13:35:01 · 1615 阅读 · 0 评论 -
(二) ffmpeg filter学习--混音实现
Audio 混音实现从FFMPEG原生代码doc/examples/filtering_audio.c修改而来。ffmpeg版本信息 1 2 3 4 5 6 7 8 9 10 11 ffmpeg version N-82997-g557c0df Copyright (c) ...转载 2019-08-05 15:37:50 · 3143 阅读 · 0 评论 -
ffmpeg:解码低延迟
dec_ctx->flags |= AV_CODEC_FLAG_LOW_DELAY;原创 2019-07-05 15:50:50 · 4120 阅读 · 0 评论 -
ffmpeg:强制编码输出关键帧
if (m_NextFrameIsKey) { pFrameYUV->pict_type = AV_PICTURE_TYPE_I;//指定必须是关键帧 } m_EncodeRet = avcodec_send_frame(m_CodecCtx, pFrameYUV); if (m_EncodeRet >= 0) {...原创 2019-07-05 10:34:15 · 1664 阅读 · 0 评论 -
ffmpeg:avcodec_receive_packet返回-11
AVERROR(EAGAIN)值为-11.返回值为-11意味着需要新的输入数据才能返回新的输出。在解码或编码开始时,编解码器可能会接收多个输入帧/数据包而不返回帧,直到其内部缓冲区被填充为止。...原创 2019-07-05 10:35:47 · 11910 阅读 · 14 评论 -
ffmpeg:清空流数据
avformat_flush(formatCtx);原创 2019-07-04 17:22:43 · 2535 阅读 · 0 评论 -
VS2017编译FFmpeg3.3.1源码
参考源:https://blog.csdn.net/et_endeavoring/article/details/75331359操作系统:WIN10-64位编译平台:VS2017FFmpeg版本:3.3.1解决方案配置:DEBUG (看个人需要选择DEBUG,RELEASE,DEBUG DLL等)解决方案平台:X641、下载 依赖包源码,依赖包 ShiftMediaPro...原创 2019-07-12 09:06:14 · 1134 阅读 · 0 评论 -
[dshow @ 000000001cf86580] real-time buffer ... [video input] too full or near too full (90% of size
[dshow @ 000000001cf86580] real-time buffer ... [video input] too full or near too full (90% of size: 3041280 [rtbufsize parameter])! frame dropped!原因:内存不够大解决方法:av_dict_set_int(&options, "rtbu...原创 2019-07-09 14:13:47 · 11590 阅读 · 3 评论 -
ffmepg编码
转载 2019-05-31 10:36:18 · 189 阅读 · 0 评论 -
FFmpeg deprecated pixel format used问题描述
It seems you're trying to readAV_PIX_FMT_YUVJXXXPframes which are deprecated (see thelibav doc). You can use this workaround to manage it :AVPixelFormat pixFormat;switch (_videoStream->codec...转载 2019-05-31 09:45:18 · 4312 阅读 · 1 评论 -
FFmpeg:Avframe内存分配方式
1.第一种 m_pFrameVideoOut = av_frame_alloc(); m_pFrameVideoOut->format = AV_PIX_FMT_BGR24; m_pFrameVideoOut->width = m_VideoCodecCtx->width; m_pFrameVideoOut->...原创 2019-05-30 10:48:26 · 5470 阅读 · 2 评论 -
ffmpeg播放RTSP的一点优化
原文:https://www.cnblogs.com/betterwgo/p/7642331.html网上看到这篇文章感觉很有用!记录一下!简单记录一下最近使用ffmpeg播放RTSP做的一点参数优化。先做如下定义:AVDictionary* options = NULL;1.画质优化原生的ffmpeg参数在对1920x1080的RTSP流进行播放时,花屏现象很严重,根据网上查的资料,可以通过增大...转载 2018-05-17 08:06:40 · 9342 阅读 · 3 评论