当前位置: 首页 > wzjs >正文

免费网站建设咨询站内优化主要从哪些方面进行

免费网站建设咨询,站内优化主要从哪些方面进行,美食网站html代码,无锡网站制作8ffmpeg网站:About FFmpeg 1 库介绍 (1)libavutil是一个包含简化编程函数的库,包括随机数生成器、数据结构、数学例程、核心多媒体实用程序等等。 (2)libavcodec是一个包含音频/视频编解码器的解码器和编…

ffmpeg网站:About FFmpeg

1 库介绍

(1)libavutil是一个包含简化编程函数的库,包括随机数生成器、数据结构、数学例程、核心多媒体实用程序等等。

(2)libavcodec是一个包含音频/视频编解码器的解码器和编码器的库。

(3)libavformat是一个包含多媒体容器格式的拆装器和拆装器的库。

(4)libavdevice是一个包含输入和输出设备的库,用于抓取和呈现许多常见的多媒体输入/输出软件框架,包括Video4Linux、Video4Linux2、VfW和ALSA。

(5)libavfilter是一个包含媒体过滤器的库。 libswscale是一个执行高度优化的图像缩放和色彩空间/像素格式转换操作的库。

(6)libswresample是一个执行高度优化的音频重采样,重矩阵和样本格式转换操作的库。

2 实现步骤

上面是主要用到的函数

(1)av_register_all(): 注册 FFmpeg 支持的所有解码器、编码器、格式等;

(2)avformat_network_init(): 初始化网络支持(如果需要从网络流中读取数据);

调用一次即可

(3)avformat_alloc_context(): 分配一个 AVFormatContext,它是 FFmpeg 中用于管理多媒体文件或流的核心结构。返回值是一个指向 AVFormatContext 的指针。

(4)avformat_open_input(): 打开一个输入文件或流,并将其信息加载到 AVFormatContext 中。这一步会解析文件格式(如 MP4、AVI 等),并为后续的流处理做准备。

(5)avformat_find_stream_info(): 获取输入文件或流的详细信息,包括音视频流的编码格式、帧率、分辨率等。这一步会填充 AVFormatContext 中的 AVStream 信息。

(6)av_read_frame(): 从输入文件或流中读取一帧数据。每次调用 av_read_frame() 会返回一个 AVPacket,它包含了一帧的编码数据。如果读取成功,继续处理帧数据;如果读取失败或到达文件末尾,则停止。

(7)AVPacket: 包含编码的帧数据(如压缩的视频或音频数据)。AVFrame: 包含解码后的帧数据(如解压缩后的视频或音频数据)。AVPacket 需要通过解码器(如 avcodec_send_packet()avcodec_receive_frame())解码为 AVFrame

(8)avformat_close_input(): 关闭输入文件或流,并释放相关资源。这一步会释放 AVFormatContext 中的所有流信息。

(9)avformat_free_context(): 释放 AVFormatContext 及其占用的内存。

总结:

(1)初始化 FFmpeg 环境。

(2)创建并初始化 AVFormatContext

(3)打开输入文件或流,获取流信息。

(4)循环读取帧数据(AVPacket),并通过解码器解码为 AVFrame

(5)处理解码后的帧数据(如播放、保存等)。

(6)关闭输入流并释放资源。

3 代码

使用VS新建cmake工程实现上述步骤:

(1)定义一个MMAVReader读取视频的类,在其构造函数中分配一个 AVFormatContext,析构函数中释放AVFormatContext 及其占用的内存;

avformat_alloc_context(): 分配一个 AVFormatContext,它是 FFmpeg 中用于管理多媒体文件或流的核心结构。返回值是一个指向 AVFormatContext 的指针。

avformat_free_context(): 释放 AVFormatContext 及其占用的内存。

(2)定义一个open函数打开视频流,并获取相关信息;定义一个close函数关闭视频流;

avformat_open_input(): 打开一个输入文件或流

avformat_find_stream_info(): 获取输入文件或流的详细信息

avformat_close_input(): 关闭输入文件或流

(3)定义一个read函数读取每一帧视频

av_read_frame(): 从输入文件或流中读取一帧数据。

(4) 具体代码在这里:MMAVPlayer/chapter3 at main · StudyWinter/MMAVPlayer · GitHub

这里重新封装了AVPacket和AVFormatContext

(5)主函数实现分配、打开、读取、关闭、释放流程。

参考:

ffmpeg 4.22库文件:GitCode - 全球开发者的开源社区,开源代码托管平台

http://www.dtcms.com/wzjs/484562.html

相关文章:

  • wordpress 深色主题网站排名seo培训
  • 石河子建设局网站搜索新开工程清欠工作审查联办单如何做网站建设
  • vue做的个人网站现在最火的推广平台有哪些
  • 厦门网站推广找谁sem竞价
  • 984网站建设项目合肥百度竞价推广代理公司
  • 平凉市市建设局网站竞价推广外包
  • 加强网站建设技术培训站长之家查询网站
  • 建设直销团队网站网络营销公司简介
  • 山东平台网站建设价格长春最专业的seo公司
  • 做网站日志步骤自媒体培训学校
  • 秦皇岛市卫生学校官网山东服务好的seo
  • wordpress 页面 分类目录网站seo课设
  • wordpress附件到oss深圳网站seo
  • 城阳城市规划建设局网站竞价托管怎么做
  • 手机建设网站赚钱刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚
  • 南京公司建设网站优化设计数学
  • 做餐饮如何加入外卖网站怎么让关键词快速排名首页
  • 公务员做国外网站卖高仿全国分站seo
  • 做网站要注册公司吗百度提交网站收录查询
  • 家用机能否做网站服务器做一个网站需要多少钱大概
  • 三明企业网站建设公司热点新闻事件素材
  • 网站建站视频教程百度seo自动优化
  • 打开网站说建设中是什么问题?郑州网站推广哪家专业
  • 网站建设需求发布竞价系统
  • 做行业网站投资多少百度小说排行榜
  • 怎样免费制作网站怎么去推广自己的平台
  • 网站备案在哪里审批营销网络是啥意思
  • 山东建设局网站电工公司策划推广
  • wordpress主要用途站长网站优化公司
  • vue.js做的网站seo发帖论坛