ffmpeg库主要函数功能

ffmpeg(一) ffmpeg+QT开发环境搭建 (exe 程序编译的时候只需要包含 xxx.dll.a 静态导入库,运行的时候才需要 xxx.dll 文件)这个 .pro 文件的配置,是指导程序编译的时候,可以找到对应的动态库。值得一提的是,在Windows中,静态链接库(Static Link Library)的扩展名也是.lib、.dll.a。其实只要你掌握了FFmpeg,也可以很快上手其他音视频开发库,因为底层原理都是一样的,你最终操作的都是一样的数据,比如MP3、MP4文件。导入库:不包含函数的具体实现代码(函数的具体实现代码存储在dll中) 阅读详情

最近在用ffmpeg做项目,对其中使用到的函数做一个归纳。

一、其中代码如下:

1、av_register_all()

功能:初始化libavformat并注册所有相关的组件、协议

2、avformat_network_init()

功能:对网络库进行全局初始化。不过这是可选的,目前不再推荐。

3、avformat_alloc_context()

功能:初始化AVFormatContext结构体指针。使用avformat_free_context()释放内存。

4、avformat_open_input()

功能:打开输入流并读取header。必须使用avformat_close_input()接口关闭。

5、avformat_find_stream_info()

功能:读取媒体文件的包以获取流信息

二、

6、avcodec_find_decoder()

功能:查找符合ID的已注册解码器

7、avcodec_open2()

功能:初始化Avcodecontext去使用给定的AVCodec

三、

8、av_frame_alloc()

功能:分配一个AVFrame并将其字段设置为默认的值。使用av_frame_free()释放AVFrame。

9、av_image_get_buffer_size()

功能:以字节为单位返回给定参数所存储图像需要的数据量的大小。

10、av_image_fill_arrays()

功能:根据指定的图像参数和提供的数组设置数据指针和linesizes大小。

11、av_dump_format()

功能:打印有关输入或输出格式的详细信息。

四、

12、sws_getContext()

功能:初始化SwsContext结构体指针。

13、av_read_frame()

功能:返回流的下一帧

14、avcodec_decode_video2()

功能:将大小为avpkt->size from avpkt->data的视频帧解码为图片。

15、sws_scale()

功能:在srcSlice中缩放图像切片,并将生成的缩放切片放入dst中的图像中。

音视频从入门到精通——FFmpeg之av_image_get_buffer_size函数 10的图⽚,每个像素点占2个字节,对⻬数align为4,那么⾏数是多少呢,从条件可知,每⾏3 个像素点,每个像素点占2字节,那么每⾏就是6字节,⽽对⻬数是4,6不是4的整数倍,因此6需要补 2个字节凑成8,8就是4的整数倍了,那么我们就知道每⾏在内存中实际占⽤了8个字节,后两个字节是 为了对⻬补上的,总共有10⾏,那么这张图⽚在实际内存中就占⽤了8。以ffmpeg的av_image_get_buffer_size为例,你能准确说出下⾯的结果吗,如果可以,那么证明你确实 理解了ffmpeg中的对⻬了。 阅读详情

相关推荐

基于FFmpeg和SDL1.2的极简播放器实现

思路基于FFmpeg写一个播放器,其实十分的简单。实际上,主要是对FFmpeg的API的封装,同时,我们需要将音视频通过主机呈现出来,所以还依赖于平台的SDL库,整体步骤和思路如下:1. 编译用于音视频解码的FFmpeg库;2. 编译用于音视频呈现的SDL库;3. 编写主程序完成对音视频的整个调度过程;编译FFmpeg库这个步骤在《与FFmpeg的初次邂逅》(编译SDL库这里SDL库我们依赖于1.2.15来进行编译,而不是最新的2.0版本;所以首先到SDL的官方网站。

yinshipin007的博客 241

【雷神专栏整理】-- ffmpeg

目录前言目录第一章 概论1.1 如何学习1.2 helloworld1.3 ffplay使用1.4 ffmpeg使用1.5 通用函数第二章 结构体第三章 编解码3.1 编码3.2 解码3.3 H2643.3.1编码3.3.2 解码3.4 HEVC(H265)3.4.1 解码第四章 封装与解封装(复用与解复用)第五章 实战5.1 推流5.2 视频播放器5.3 音频播放器5.4 移动端:Android & IOS5.5 内存读写5.6 编码5.7 格式转换5.8 视频网站5.9 VC工程5.10跨平台5

hh5233的博客 6688

【FFmpeg】调用ffmpeg库进行RTMP推流和拉流

从使用的函数来看,主要的操作流程和数据流走向大约为: 1. 初始化网络模块,为RTMP传输进行准备(avformat_network_init) 2. 打开输入文件,创建输入文件结构体并且读取输入文件信息(avformat_open_input),此时也会创建输入的流信息 3. 根据输入文件查找流信息(avformat_find_stream_info) 4. 查看输入文件信息(av_dump_format) 5. 根据输出文件信息来创建输出文件结构体(avformat_alloc_output

weixin_42877471的博客 9016

FFmpeg - C++中使用ffmpeg库

http://blog.sina.com.cn/s/blog_8cfe05150100uhm2.html ffmpeg库的接口都是c函数,其头文件也没有extern "C"的声明,所以在cpp文件里调用ffmpeg函数要注意了。 一般来说,一个用C写成的库如果想被C/C++同时可以使用,那在头文件应该加上 #ifdef __cplusplus extern "C" { #endi

leonpengweicn的专栏 7259

使用ffmpeg的c++库读取视频流和其中的SEI数据

FFmpeg是一个多媒体软件框架,支持多种新旧视频编码格式,提供解码、编码、 转码、多路复用、解复用、流式传输、过滤和播放等功能。

simple的博客 2583

FFmpeg第二话:FFmpeg 主要结构体剖析

嘿,各位小伙伴!在如今这个多媒体爆棚的时代,视频、音频那是五花八门,啥格式都有。而FFmpeg ,不管是给视频音频搞编解码,还是转码、加滤镜玩出各种花样,它都在行。不过呢,要想把 FFmpeg 这强大的本事给吃透,关键得弄懂它里面几个当家的结构体,这就好比你得摸清万能钥匙上那些齿痕到底是咋回事,有了这门道,才能真正解锁 FFmpeg 的魔法。今儿个,咱就一块儿来扒一扒这几个神秘又重要的结构体。

weixin_53223301的博客 1535

ubuntu21.04 安装ffmpeg库并在Clion中编写cpp使用ffmpeg

ubuntu21.04 安装ffmpeg库并在Clion中编写cpp使用ffmpeg,可以看到文件夹内的文件还是在文件夹内,执行命令注意,--prefix=后面的路径为安装的路径,可以随便更改,更改完成后将安装在你更改的那个路径中;也可以不更改,将安装在/opt/ffmpeg中make时间会很长,耐心等待,中间可能会有报错信息,忽略即可可以看到以下目录。

九思的博客 1255

如何复用ijkplayer库实现ffmpeg的功能

现在ijkplayer播放器应用的非常广泛,很多播放器基本上都是基于ijkplayer二次迭代开发的,众所周知,ijkplayer是基于ffplay的,所以要使用ijkplayer,就必须使用三个so库。其中一个libijkffmpeg.so库非常大,有近9.6M,这个非常吓人了,当然你可以裁剪一些不用的库。但是ijkplayer毕竟只是播放视频才用到的。但是ijkplayer底层是基于ffmpeg的ffplay播放框架,也就是说ffmpeg也集成到了libijkffmpeg.so中了。

yinshipin007的博客 2204

ffmpeg libx264_FFmpeg之FFmpeg模块介绍(一)

阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680八大库1.libavutil核心工具库,最基础模块之一,其他模块都会依赖该库做一些基本的音视频处理操作2. libavformat文件格式和协议库,封装了Protocol层和Demuxer、Muxer层,使得协议和格式对于开发者来说是透明的3. libavcodec...

weixin_39876514的博客 158

FFmpeg API 之 libavformat库

libavformat库,是FFmpeg中用于处理各种媒体容器格式(media container format)的库。它的两个最主要的功能是 : demuxing:解封装,将一个媒体文件分割为多个多媒体流 muxing:封装,将多个多媒体数据流写入到指定媒体容器格式的文件中 这两个过程所做的事情正好相反,是互逆的。 我们注意到,在 mux 和 demux 的过程中,均少不了要从 input 读取 和 写入 output 的过程,因此 libavformat 单独分出了一个子模块,用于

qq_34305316的博客 4652

FFmpeg生成Android so库

Mac编译第一次接入FFmpeg,搞了整整一天,生成so库,可谓一波三折,功夫不负有心人有心人,终于搞定了。网上很多方案都是基于ndk14之前生成的,最新版本的ndk21和最新版本的FFmpeg4.3.1用不了,错误很大,搞了好一阵子发现在Linux系统中一直报错,刚刚开始以为c编译器没有,于是安装了,yum install yasm和nasm但是还是报错,然后把ndk换成ndk14才可以编译了,但是问题又来了,虽然编译成功了但是没有生成so库文件内容。

qq_52703909的博客 1167

FFmpeg的libswscale常用函数分析

致敬雷神:FFmpeg源代码简单分析:libswscale的sws_getContext() FFmpeg里面的sws_scale库可以在一个函数里面同时实现:1.图像色彩空间转换;2.分辨率缩放;3.前后图像滤波处理。 libswscale库常用函数有三个: sws_getContext():初始化一个SwsContext。 sws_scale():处理图像数据。 sws_freeConte...

XBlog 721

多媒体编解码学习: ffmpeg(更新ffmpeg库使用方法)

文中内容部分参考大牛博客进行边操作边总结 一、ubuntu安装ffmpeg 1. 从ffmpeg官网:https://www.ffmpeg.org/download.html下载源代码,ffmpeg-3.1.2.tar.bz2 2. 解压文件   3. 安装步骤 进入解压目录:   配置makefile:   其中--enable-share生产动态链接库,编程

jayson_jang的专栏 5136

FFmpeg编程初步

FFmpeg库简介从FFnpeg官网上下载dev开发库版本,包含了相关的头文件、lib库和动态共享库。 FFmpeg一共包含8个库: ▫avcodec:编解码(最重要的库)。 ▫avformat:封装格式处理。 ▫avfilter:滤镜特效处理。 ▫avdevice:各种设备的输入输出。 ▫avutil:工具库(大部分库都需要这个库的支持)。 ▫postproc:后加工。 ▫swre

mandagod的博客 1851

国科大 雁栖湖校区 研一上 课程避坑与生存指南

本文为国科大雁栖湖校区研一新生提供全面的课程避坑与生存指南,涵盖选课策略、核心课程学习技巧、校园生活攻略及心态管理。重点解析算法设计与分析、人工智能原理等硬核课程的学习方法,并分享食堂、住宿、自习室等实用生存技巧,帮助新生高效适应研究生生活。

weixin_29304985的博客 300

BLHeli_S电调刷Bluejay固件实战:解锁双向DShot与RPM滤波全攻略

本文详细介绍了如何为BLHeli_S电调刷写开源Bluejay固件,以解锁双向DShot协议与RPM滤波等关键功能。内容涵盖硬件兼容性检查、固件刷写全流程、双向DShot启用与OSD报错解决方案,并对48kHz与96kHz PWM频率的选择提供了实战建议,帮助穿越机玩家在不更换硬件的前提下显著提升飞行性能与操控体验。

weixin_29188997的博客 512

【FFmpeg】解码链路上主要函数的简单分析

本文分析的FFmpeg版本是FFmpeg-7.0,只考虑视频解码部分的流程,不考虑音频部分 FFmpeg进行解码器的调用时,主要工作流程大约是 解码器: 1. 查找解码器(avcodec_find_decoder) 2. 创建解码器上下文(avcodec_alloc_context3) 3. 创建输入信息的结构体(av_packet_alloc) 4. 创建输出信息的结构体(av_frame_alloc) 5. 创建解析器(av_parser_init) 6. 打开解码器(avcodec_op

weixin_42877471的博客 1325

Drools vs URule:5个真实项目场景告诉你如何选择开源规则引擎

本文通过电商风控、物流计费、会员体系、保险定价和物联网告警五个真实项目场景,深度对比了Drools与URule两款开源规则引擎。分析了两者在规则复杂度、性能表现、开发运维及适用场景上的核心差异,为技术选型提供基于实战的决策指南。

k6l7m8n9的博客 943

完美解决Linux环境编译ffmpeg库

背景说明 项目功能实现需要在Linux下编译出可用的FFmpeg库。FFmpeg在编译过程中是需要链接其它三方库的,比如x265 x265等,否则可能会造成功能不全(如程序接口返回找不到H264编码器错误),影响使用。编译这种三方库其实理论简单,但是细节磨人,有时候没设置好就是会有些莫名其妙的问题。我这里也参考了如零声学院分享的文档,结合自己情况总结记录了份编译说明,亲测有效,使用稳定。甚至可以按步骤无脑复制shell执行,编译一路绿灯,快速得到完美的FFmpeg库。 编译 整体思路就是先把依赖的库如x26

周小哥的博客 1万+

从零开始的BW(五) 外部系统供数之OData测试

5、激活添加的服务,如提示下图中的激活失败,根据生成URI在事务代码SICF目录中找到对应的服务,设置超时时间,设置完之后重新激活即可,详情可参考SAP note 1986626。如果刚才设置BY Odata的query在这没有显示,SE38执行程序EQ_RS_AUTOSETUP,选中需要生成服务的query,生成服务后再去添加服务。测试get方法,URI中默认的参数是?4、事务代码/IWFND/MAINT_SERVICE中添加服务,如果提示用户不再登陆,在事务代码前加上/O或者/N即可。

m0_61386064的博客 1107

【详细图文】使用MobaXterm的SSH功能远程连接服务器,并创建pytorch环境,使用yolov8训练数据集

使用MobaXterm的SSH功能远程连接服务器,并创建pytorch环境,使用yolov8训练数据集,以及MobaXterm使用介绍和linux基础命令介绍。

qq_62844901的博客 3382

【FFmpeg】FFmpeg 播放器框架 ④ ( FFmpeg 库结构 | AVUtil 库 | AVFormat 库 | AVCodec 库 | AVFilter 库 | SWScale 库 )

一、FFmpeg 库结构 1、FFmpeg 库的结构总体概览 2、AVUtil 库 3、AVFormat 库 4、AVCodec 库 5、AVFilter 库 6、SWScale 库 7、SwrRessample 库 8、PostProc 库 9、AVDevice 库

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1676

从零开始:kohya_ss环境部署与LoRA/SDXL模型训练实战指南

本文提供了一份详细的kohya_ss环境部署与模型训练实战指南。从零开始,手把手教你使用Conda创建虚拟环境、安装依赖并启动Web GUI界面。核心内容涵盖高质量数据集的准备方法,并重点解析了如何使用kohya_ss工具进行LoRA模型和SDXL模型的微调训练,包括关键参数配置与常见报错解决方案,帮助初学者快速上手AI绘画模型定制。

weixin_29162439的博客 534

【FFmpeg】编码链路上主要函数的简单分析

从编码链路这一整体系统上看,大致的输入是AVFrame,处理系统是AVCodec,记录信息是AVCodecContext,推送输入的引擎是avcodec_send_frame,接收输出的引擎是avcodec_receive_packet,输出是AVPacket。对于编码器而言,输入的AVFrame主要是以yuv420p的格式进行存储。AVCodecContext记录了编码流程中的信息,包括码流帧的长宽,高度,AVCodec信息,Log信息,时间,色度格式等等一系列的信息,它纵览全局,是极其重要的结构体。

weixin_42877471的博客 1465

opencv案例实战——银行卡模式匹配识别

在之前的几篇文章中我们已经介绍了opencv的一些基础知识,本篇文章我们将结合一个案例运用之前的知识并且学习opencv中模式匹配的应用,用到的知识点如果有不清楚的可以查看上面列出来的系列文章。具体代码会放在最后。

艾醒的博客 1339

uniapp - [微信小程序] 实现点击预览各种文件 pdf文档、视频mp4、mp3音乐、图片图像、word/excel/ppt 等,uniapp小程序文件预览功能(详细示例代码,一键复制开箱即用)

uniapp,uniapp微信小程序,支付宝小程序平台端,uniapp实现文件在线预览,uniapp微信小程序怎么实现预览视频mp4,mp3音乐,图片,office文档,小程序平台如何在线预览word/excel/ppt文档,uniapp实现小程序端的文件查看功能,uniapp小程序端实现pdf文件预览,uniapp纯前端预览PDF、DOC、DOCX、图片、视频,uni-app文档、图片预览查看,uniapp文档预览功能,uniapp小程序端文件预览,uniapp小程序平台纯前端解析word,pdf,xls

✅ 精选推荐文章 1万+
上一篇: Qt实现 基于ffmpeg拉流播放视频
下一篇: 0x752940B2(KernelBase.dll)(xxx.exe中有未经处理的异常:0xE0000008)
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值