
FFMPEG
文章平均质量分 70
别忘了坚持
这个作者很懒,什么都没留下…
展开
-
YUV数据的几种采样格式以及保存方式
转载:https://www.cnblogs.com/cumtchw/p/10224329.htmlYUV数据的几种采样格式以及保存方式:1.YUV数据的几种采样格式4:4:4 这个不用解释了,这是每个像素占三个字节的内存.4:2:2 Y0U0V0 Y1U1V1 Y2U2V2 Y3U3V3对于这四个像素,采样之后存放的码流为:Y0U0 Y1V1 Y2U2 Y3V3,占用的内存大小为4+4/2 +4/2=84:2:0并不意味着只有Y和U而没有V,他指的是对于每行扫描线来说,只有一种色度分量以原创 2021-09-04 13:52:26 · 1246 阅读 · 0 评论 -
AVStream和AVCodecParameters部分参数分析
转载:https://www.cnblogs.com/yongdaimi/p/9798001.html一.AVStreamAVCodecContext *codec // 已过时,使用另一个 codecpar 结构体代替。AVRational time_base // 时间基数。int64_t duration // 总时长。流的总时长,该参数不可靠。AVRational avg_frame_rate // 帧率。AVCodecP原创 2021-08-24 09:53:45 · 650 阅读 · 0 评论 -
一、avformat_open_input() 函数源代码分析 - 打开媒体文件
基于此博客做的分析 先分析这里。avformat_open_input() 函数主要用于打开音视频多媒体数据,且获得AVFormatContext 信息,其定义在 libavformat\avformat.h。int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options)参数:AVFormat原创 2021-08-23 16:51:43 · 1155 阅读 · 0 评论 -
AVFormatContext
在使用FFMPEG进行开发的时候,AVFormatContext是一个贯穿始终的数据结构,很多函数都要用到它作为参数。它是FFMPEG解封装(解复用)(flv,mp4,rmvb,avi)功能的结构体。结构体参数:const AVClass *av_class;// 与logging以及avoptions相关的class,由avformat_alloc_context()设置。struct AVInputFormat *iformat;//输入容器格式,只用在解复用(demuxing only),由av转载 2021-08-23 15:51:06 · 586 阅读 · 0 评论 -
图像处理基础(像素、RGB、YUV )
YUV与像素的关系:YUV是利用一个亮度(Y)、两个色差(U,V)来代替传统的RGB三原色来压缩图像。传统的RGB三原色使用红绿蓝三原色表示一个像素,每种原色占用一个字节(8bit),因此一个像素用RGB表示则需要8*3=24bit。如果使用YUV表示这个像素,假设YUV的采样率为:4:2:0,即每一个像素对于亮度Y的采样频率为1,对于色差U和V,则是每相邻的两个像素各取一个U和V。对于单个的像素来说,色差U和V的采样频率为亮度的一半。(解析不清楚,看下面图解)如有三个相邻的像素,如果用RGB三原色表原创 2021-08-21 09:36:31 · 3600 阅读 · 1 评论 -
FFmpeg常用结构体分析:AVCodecParameters
原创链接AVSream中我们可以使用codec得到AVCodecContext指针,该结构体代表了AVStream中持有的codec相关的上下文,包含了众多编解码器需要的参数信息。一个AVStream对应一个AVCodecContext指针。但是,如果你使用较高的FFmpeg版本就应该发现,codec成员已经不受支持,也就是在AVStream中该成员已经被废弃,而且,AVCodecContext由于太过复杂,FFmpeg的维护者也开始逐渐拆分这个结构体的功能,准备废弃AVCodecContext。目前,官原创 2021-08-20 11:12:05 · 1533 阅读 · 0 评论 -
Fmpeg 封装、解封装及解码的流程简介
雷神原文链接一、简介视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等原创 2021-08-19 17:43:46 · 1241 阅读 · 0 评论 -
FFmpeg av_dump_format函数使用
函数说明一般使用av_find_stream_info函数探测码流格式,它的作用是为pFormatContext->streams填充上正确的音视频格式信息。可以通过av_dump_format函数将音视频数据格式通过av_log输出到指定的文件或者控制台,方便开发者了解输入的视音频格式,对于程序的调用,删除该函数的调用没有任何的影响函数参数void av_dump_format(AVFormatContext *ic, int index, const char *url, int is_ou原创 2021-08-19 11:41:34 · 1066 阅读 · 0 评论 -
FFmpeg学习和遇到的问题
遇到的问题:运行 :av_find_input_format(“video4linux2”); 查找usb摄像头的时候,返回 NULL 。解决方式:在configure中要配置下面两个选项:–enable-avdevice 使能硬件设备–enable-indev=v4l2 使能输入设备,并且要指定输入设备v4l2。(–enable-indev= NAME) 也可以用同上方法继续添加其他输入设备。运行脚本./configure,修改成功会有对应提示信息:扩展知识:值得原创 2021-08-18 17:27:17 · 954 阅读 · 3 评论 -
FFmpeg常用结构体分析(一):AVFormatContext
AVFormatContext是存储音视频封装格式中包含的信息的结构体,也是FFmpeg中统领全局的结构体,对文件的封装、编码操作从这里开始。位于avformat.h中,是音视频数据,也就是音视频文件(通常接触到的mp3/mp4等文件)的一种抽象和封装,该文件中包含了多路流,包括音频流、视频流、字幕流等。该结构体的使用,贯穿了ffmpeg使用的整个流程。两个重要的学习链接:[总结]视音频编解码技术零基础学习方法[总结]FFMPEG视音频编解码零基础学习方法...原创 2021-08-13 15:54:18 · 326 阅读 · 0 评论