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

用java做网站步骤网络营销教材电子版

用java做网站步骤,网络营销教材电子版,网络建站行业怎么样,设计制作公益广告牌教案介绍 在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…

介绍

在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器

如果您不理解本文,可参考我的前一篇文章音视频项目—基于FFmpeg和SDL的音视频播放器解析(七)

解析

上文还有个函数没有解析完,这篇文章和大家接着将 decodethread 的 Run 函数,这个函数负责解码线程的运行,因此非常重要,我才放在最后讲。

void DecodeThread::Run(){AVFrame* frame = av_frame_alloc();while (abort != 1){if(frame_queue->Size() > 10){this_thread::sleep_for(chrono::milliseconds(10));continue;}AVPacket* pack = packet_queue->Pop(10);if(pack){int ret = avcodec_send_packet(codec_ctx, pack);av_packet_free(&pack);if(ret < 0){break;}while (true) {ret = avcodec_receive_frame(codec_ctx, frame);if(ret == 0){frame_queue->Push(frame);continue;}else if (AVERROR(EAGAIN) == ret) {break;}else {abort = 1;break;}}}else {perror("not got packet");}}
}

首先,我们要弄懂解码的目的,就是讲包(Packet)中的帧(Frame)数据提取出来,放入相应的队列当中。

于是,我们首先声明一个局部变量 AVFrame,并用 av_frame_alloc 分配内存,不多解释。

然后,有一个 while 循环,当标识位 abort 不等于 1 时,就不断循环运行代码。

然后我们继续看这段代码:

if(frame_queue->Size() > 10){this_thread::sleep_for(chrono::milliseconds(10));continue;
}

这段代码意思是如果帧队列的长度超过 10 的话,线程停止 10 毫秒,至于为什么这样,我还不太清楚,希望有高手指点迷津哈。

然后抽取包数据:

AVPacket* pack = packet_queue->Pop(10);

这个 Pop 是自定义的,功能是将队列的头部删除并返回,于是 AVPacket 变量 pack 获取了队列头部,队列也删除了头部。

然后开始有一个条件判断,如果 pack 有数据不为空时继续执行,否则停止程序。

这是 pack 不为空时的逻辑

int ret = avcodec_send_packet(codec_ctx, pack);
av_packet_free(&pack);
if(ret < 0){break;
}

通过 avcodec_send_packet 将 pack 发送给上下文,如果出错,则中止。

然后有一个死循环:

while (true) {ret = avcodec_receive_frame(codec_ctx, frame);if(ret == 0){frame_queue->Push(frame);continue;}else if (AVERROR(EAGAIN) == ret) {break;}else {abort = 1;break;}
}

通过刚才接收了包数据的解码器上下文,用 avcodec_receive_frame,接收解码的帧(Frame)。

然后开始条件判断,如果接收帧成功就放入帧队列,继续运行。否则终止死循环。

好了,decodethread 的最后一个函数 Run 我们讲完了,这个比较重要,内容也比较多,大家可以慢慢理解。

下一篇文章,我们会讲解队列 Queue。

欲知后事如何,请听下回分解。

http://www.hkea.cn/news/209432/

相关文章:

  • 哪个网站可以查企业信息今日热搜榜官网
  • 做网站有必要注册商标吗河北百度seo关键词
  • 网站更换服务器教程下载app到手机上并安装
  • 学校网站建设都是谁做的网络舆情分析
  • 怎么把现有网站开发php昆明seo排名外包
  • 网站桥页怎么找理发培训专业学校
  • 谷城网站开发百度导航官网
  • 做网站不优化平面设计网站
  • 聊城做网站的公司价格谷歌seo软件
  • 支部网站及活动室建设网页广告调词平台
  • 网站建设的企业抚州seo外包
  • 澳门wap网站制作百度关键词检测工具
  • 哪些外贸网站可以做soho首页
  • 三门峡网站建设电话青岛网站推广公司
  • 洞口做网站找谁市场营销推广方案模板
  • 怎么做用来表白的网站湖人队最新消息
  • 新疆网站建设哪家好泉州网站seo外包公司
  • 网站开发前后端工具组合深圳推广公司推荐
  • 老外做的汉字网站一键生成app制作器
  • 网上设计接单的网站seo排名优化排行
  • wordpress后台加统计代码seo建站的步骤
  • 怎么做外贸网站的邮箱签名搜索引擎优化是指什么
  • 网页制作基础教程免费邯郸网站seo
  • phpcms做网站感想漯河seo推广
  • 公司部门kpi绩效考核指标模板河北百度seo软件
  • 印团网网站是哪家做的唯尚广告联盟
  • 网红营销网站seo综合查询怎么用的
  • 西安地区网站建设云推广
  • wordpress个人站2020年关键词排名
  • 网站建设企业公司石家庄新闻头条新闻最新今天