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

采用什么方法推广网站河南免费网站建设

采用什么方法推广网站,河南免费网站建设,网站首页flash制作,深入网站开发和运维 pdfFFmpeg 命令#xff1a;从入门到精通 | FFmpeg 解码流程 FFmpeg 命令#xff1a;从入门到精通 | FFmpeg 解码流程流程图FFmpeg 解码的函数FFmpeg 解码的数据结构补充小知识 FFmpeg 命令#xff1a;从入门到精通 | FFmpeg 解码流程 本内容参考雷霄骅博士的 FFmpeg 教程。 流… FFmpeg 命令从入门到精通 | FFmpeg 解码流程 FFmpeg 命令从入门到精通 | FFmpeg 解码流程流程图FFmpeg 解码的函数FFmpeg 解码的数据结构补充小知识 FFmpeg 命令从入门到精通 | FFmpeg 解码流程 本内容参考雷霄骅博士的 FFmpeg 教程。 流程图 FFmpeg 解码的流程图如下所示 FFmpeg 解码的流程 注册 使用ffmpeg对应的库都需要进行注册可以注册子项也可以注册全部。打开文件 打开文件根据文件名信息获取对应的ffmpeg全局上下文。探测流信息 一定要探测流信息拿到流编码的编码格式不探测流信息则其流编码器拿到的编码类型可能为空后续进行数据转换的时候就无法知晓原始格式导致错误。查找对应的解码器 依据流的格式查找解码器软解码还是硬解码是在此处决定的但是特别注意是否支持硬件需要自己查找本地的硬件解码器对应的标识并查询其是否支持。普遍操作是枚举支持文件后缀解码的所有解码器进行查找查找到了就是可以硬解了此处不做过多的讨论对应硬解码后续会有文章进行进一步研究。注意解码时查找解码器编码时查找编码器两者函数不同不要弄错了否则后续能打开但是数据是错的打开解码器 打开获取到的解码器。申请缩放数据格式转换结构体 此处特别注意基本上解码的数据都是yuv系列格式但是我们显示的数据是rgb等相关颜色空间的数据所以此处转换结构体就是进行转换前到转换后的描述给后续转换函数提供转码依据是很关键并且非常常用的结构体。申请缓存区 申请一个缓存区outBufferfill到我们目标帧数据的data上比如rgb数据QAVFrame的data上存是有指定格式的数据且存储有规则而fill到outBuffer自己申请的目标格式一帧缓存区则是我们需要的数据格式存储顺序。 举个例子解码转换后的数据为rgb888实际直接用data数据是错误的但是用outBuffer就是对的所以此处应该是ffmpeg的fill函数做了一些转换。 进入循环解码获取一帧packet 拿取封装的一个packet判断packet数据的类型进行解码拿到存储的编码数据数据转换 使用转换函数结合转换结构体对编码的数据进行转换那拿到需要的目标宽度、高度和指定存储格式的原始数据。自行处理 拿到了原始数据自行处理。不断循环直到拿取pakcet函数成功但是无法得到一帧数据则代表文件解码已经完成。帧率需要自己控制循环此处只是循环拿取可加延迟等。释放QAVPacket 此处要单独列出是因为其实很多网上和开发者的代码在进入循环解码前进行了av_new_packet循环中未av_free_packet造成内存溢出或者在进入循环解码前进行了av_new_packet循环中进行av_free_pakcet那么一次new对应无数次free在编码器上是不符合前后一一对应规范的。查看源代码其实可以发现av_read_frame时自动进行了av_new_packet()那么其实对于packet只需要进行一次av_packet_alloc()即可解码完后av_free_packet。 执行完后返回执行“步骤8获取一帧packet”一次循环结束。释放转换结构体 全部解码完成后安装申请顺序进行对应资源的释放。关闭解码/编码器 关闭之前打开的解码/编码器。关闭上下文 关闭文件上下文后要对之前申请的变量按照申请的顺序依次释放。 FFmpeg 解码的函数 av_register_all()注册所有组件。avformat_open_input()打开输入视频文件。avformat_find_stream_info()获取视频文件信息。avcodec_find_decoder()查找解码器。avcodec_open2()打开解码器。av_read_frame()从输入文件读取一帧压缩数据。avcodec_decode_video2()解码一帧压缩数据。avcodec_close()关闭解码器。avformat_close_input()关闭输入视频文件。 FFmpeg 解码的数据结构 FFmpeg 解码的数据结构如下所示 FFmpeg 数据结构 AVFormatContext封装格式上下文结构体也是统领全局的结构体保存了视频文件封装格式相关信息。AVInputFormat每种封装格式例如FLV, MKV, MP4, AVI对应一个该结构体。AVStream视频文件中每个视频音频流对应一个该结构体。AVCodecContext编码器上下文结构体保存了视频音频编解码相关信息。AVCodec每种视频音频编解码器(例如H.264解码器)对应一个该结构体。AVPacket存储一帧压缩编码数据。AVFrame存储一帧解码后像素采样数据。 FFmpeg 数据结构分析 AVFormatContext iformat输入视频的AVInputFormatnb_streams 输入视频的AVStream 个数streams 输入视频的AVStream []数组duration 输入视频的时长以微秒为单位bit_rate 输入视频的码率 AVInputFormat name封装格式名称long_name封装格式的长名称extensions封装格式的扩展名id封装格式ID一些封装格式处理的接口函数 AVStream id序号codec该流对应的AVCodecContexttime_base该流的时基r_frame_rate该流的帧率 AVCodecContext codec编解码器的AVCodecwidth, height图像的宽高只针对视频pix_fmt像素格式只针对视频sample_rate采样率只针对音频channels声道数只针对音频sample_fmt采样格式只针对音频 AVCodec name编解码器名称long_name编解码器长名称type编解码器类型id编解码器ID一些编解码的接口函数 AVPacket pts显示时间戳dts 解码时间戳data 压缩编码数据size 压缩编码数据大小stream_index 所属的AVStream AVFrame data解码后的图像像素数据音频采样数据。linesize对视频来说是图像中一行像素的大小对音频来说是整个音频帧的大小。width, height图像的宽高只针对视频。key_frame是否为关键帧只针对视频 。pict_type帧类型只针对视频 。例如IPB。 补充小知识 解码后的数据为什么要经过sws_scale()函数处理 解码后YUV格式的视频像素数据保存在AVFrame的data[0]、data[1]、data[2]中。但是这些像素值并不是连续存储的每行有效像素之后存储了一些无效像素。以亮度Y数据为例data[0]中一共包含了linesize[0]*height个数据。但是出于优化等方面的考虑linesize[0]实际上并不等于宽度width而是一个比宽度大一些的值。因此需要使用sws_scale()进行转换。转换后去除了无效数据width和linesize[0] 取值相等。
http://www.hkea.cn/news/14496469/

相关文章:

  • 网站 设计 分辨率陕西购物商城网站建设
  • 站长之家seo查找肇庆市场核酸检测
  • 免费网站建设软件公司想制作网站
  • 广州网站开发软件平台二级域名查询ip
  • 国外优秀摄影作品网站小兽wordpress编辑器
  • 网站建设营销型网站概念罗村网站建设公司
  • 免费的行情网站推荐下载安装建设厅的证全国通用吗
  • 网站公司的好坏新乡免费网站建设
  • 创建自己的网站有什么用怎么查看网站是否备案
  • 个人业务网站建设wordpress内部服务器
  • 网站空间买多大的个人设计作品集
  • 辽阳制作网站电子商务网站开发代码
  • 做那个网站的图客比较好网站建设企业实践总结
  • wordpress全站广告位网页设计实训报告总结与体会
  • 做旅游网站的目的是什么九歌人工智能诗歌写作网站
  • dw自己做网站需要什么wordpress评论框修改
  • 网站制作知名 乐云践新专家滁州seo排名
  • 外贸公司的网站建设模板下载网页特效制作
  • 在厦门做网站找谁宁波网站建设设计
  • 公司电子商务网站建设策划书湖南建设人力资源网和报考平台
  • 网站注销怎么做消商城网站备案能通过吗
  • 购物网站英语落实网站建设培训班精神
  • 做地铁建设的公司网站网约设计师
  • 网站建设平台设备ps做图游戏下载网站
  • 网站标题正确书写标准成都游戏网站建设
  • 网站app免费制作品牌策划公司是做什么的
  • 建立网站的数据表新闻10 30字
  • 网站更改备案信息在哪里修改wordpress5.2登录图标
  • 药企网站怎么做简洁大方的网站模板
  • android开发 网站开发网站建设公司的市场开发方案