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

湖北建设企业网站价格seo课程心得体会

湖北建设企业网站价格,seo课程心得体会,地方网站源码,龙华营销型网站制作哪家好摘要:本文主要详细描述FFmpeg中封装时写packet到媒体文件的函数av_interleaved_write_frame的实现。   关键字:av_interleaved_write_frame   读者须知:读者需要熟悉ffmpeg的基本使用。 1 基本调用流程 av_interleaved_write_frame的基本…

  摘要:本文主要详细描述FFmpeg中封装时写packet到媒体文件的函数av_interleaved_write_frame的实现。
  关键字av_interleaved_write_frame
  读者须知:读者需要熟悉ffmpeg的基本使用。

1 基本调用流程

  av_interleaved_write_frame的基本调用流程图如下。
在这里插入图片描述

  首先就是根据输入数据是否为空选择调用的函数,如果为空就会调用interleaved_write_packet刷新数据,否则调用write_packets_common写数据。
  write_packets_common中,check_packet检查输入的数据和期望写入的媒体流是否能够对上。prepare_input_packet对输入数据进行修正,如果pts和dts其中之一为NOPTS则设置为对方的值,以及如果设置了is_intra_only则每一帧都会设置标志位AV_PKT_FLAG_KEY。而check_bitstream就是调用s->oformat->check_bitstream检查流是否符合对应的格式。最后才是调用write_packet_common进行写数据。如果有设置filter的话就调用write_packets_from_bsfs处理。

  write_packet_common会根据输入的参数是否需要交织存储来调用具体的函数写packet。非交织的情况下就会调用write_packet,该函数内部实际调用的s->oformat->write_packets->oformat->write_uncoded_frame写文件,后者处理裸流。
  interleaved_write_packet内,如果AVOuputFormat设置了对应的函数指针则直接调用s->oformat->interleave_packet写文件,否则就用FFmpeg提供的ff_interleave_packet_per_dts。我们重点看下这个函数实现。

2 ff_interleave_packet_per_dts

  音视频交织就是,将音频数据和视频数据存储到文件时,按照几帧音频几帧视频的方式存储,这样在处理流数据时就不会发生频繁的seek导致一些性能问题。音视频交织的视频对于网络播放也比较友好。
在这里插入图片描述

  ff_interleave_packet_per_dts只是针对当前的两个流的packet的时间戳进行比较避免在文件存储过程中距离太远导致解封转时要频繁seek文件。最终封装文件写入到磁盘还是需要write_packet。该函数首先将送入的pkt插入到缓存队列中,然后在从当前缓存队列中选出一帧返回调用write_packet进行写入。
  在看ff_interleave_add_packet函数的实现之前,我们先简单看下帧比较函数interleave_compare_dts的实现,该函数用来比较两个packet的dts。如果非音频流就是调用的av_compare_ts进行比较,否则会根据当前音频流是否有preload去除preload的偏移:

int preload  = st ->codecpar->codec_type == AVMEDIA_TYPE_AUDIO;
int preload2 = st2->codecpar->codec_type == AVMEDIA_TYPE_AUDIO;
if (preload != preload2) {int64_t ts, ts2;preload  *= s->audio_preload;preload2 *= s->audio_preload;//preload不同时需要减掉preload的偏移ts = av_rescale_q(pkt ->dts, st ->time_base, AV_TIME_BASE_Q) - preload;ts2= av_rescale_q(next->dts, st2->time_base, AV_TIME_BASE_Q) - preload2;if (ts == ts2) {ts  = ((uint64_t)pkt ->dts*st ->time_base.num*AV_TIME_BASE - (uint64_t)preload *st ->time_base.den)*st2->time_base.den- ((uint64_t)next->dts*st2->time_base.num*AV_TIME_BASE - (uint64_t)preload2*st2->time_base.den)*st ->time_base.den;ts2 = 0;}comp = (ts2 > ts) - (ts2 < ts);
}

  重点就是下面的代码,从当前buffer中找到当前帧的插入位置然后插入到packet的链表中。

if (st->internal->last_in_packet_buffer) {next_point = &(st->internal->last_in_packet_buffer->next);
} else {next_point = &s->internal->packet_buffer;
}
//省略部分代码.......
if (*next_point) {if (chunked && !(pkt->flags & CHUNK_START))goto next_non_null;if (compare(s, &s->internal->packet_buffer_end->pkt, pkt)) {while (   *next_point&& ((chunked && !((*next_point)->pkt.flags&CHUNK_START))|| !compare(s, &(*next_point)->pkt, pkt)))next_point = &(*next_point)->next;if (*next_point)goto next_non_null;} else {next_point = &(s->internal->packet_buffer_end->next);}
}

  插入成功后回到ff_interleave_packet_per_dts中,从当前的packet链表的头结点拿到一阵返回给write_packet写入。


文章转载自:
http://wizzled.Lbqt.cn
http://luxuriancy.Lbqt.cn
http://copremia.Lbqt.cn
http://quintuple.Lbqt.cn
http://graecism.Lbqt.cn
http://inflammatory.Lbqt.cn
http://arcjet.Lbqt.cn
http://muenster.Lbqt.cn
http://extensor.Lbqt.cn
http://helicon.Lbqt.cn
http://dither.Lbqt.cn
http://electrogenic.Lbqt.cn
http://art.Lbqt.cn
http://fifa.Lbqt.cn
http://adhibit.Lbqt.cn
http://descale.Lbqt.cn
http://analemma.Lbqt.cn
http://synthase.Lbqt.cn
http://phenylamine.Lbqt.cn
http://seawards.Lbqt.cn
http://cautionry.Lbqt.cn
http://budgie.Lbqt.cn
http://pyorrhoea.Lbqt.cn
http://fibrilla.Lbqt.cn
http://freeware.Lbqt.cn
http://challenger.Lbqt.cn
http://jabot.Lbqt.cn
http://agony.Lbqt.cn
http://skeptic.Lbqt.cn
http://impenetrability.Lbqt.cn
http://adenoacanthoma.Lbqt.cn
http://nampo.Lbqt.cn
http://septicopyemia.Lbqt.cn
http://torsibility.Lbqt.cn
http://birdcage.Lbqt.cn
http://convection.Lbqt.cn
http://squattocracy.Lbqt.cn
http://peculation.Lbqt.cn
http://toco.Lbqt.cn
http://manchurian.Lbqt.cn
http://clouet.Lbqt.cn
http://psychodynamics.Lbqt.cn
http://paleoentomology.Lbqt.cn
http://anesthetize.Lbqt.cn
http://gintrap.Lbqt.cn
http://joint.Lbqt.cn
http://uttermost.Lbqt.cn
http://lockeanism.Lbqt.cn
http://ceric.Lbqt.cn
http://vaccinization.Lbqt.cn
http://formularize.Lbqt.cn
http://impermanence.Lbqt.cn
http://semaphoric.Lbqt.cn
http://fireweed.Lbqt.cn
http://sabayon.Lbqt.cn
http://azotic.Lbqt.cn
http://reptiliform.Lbqt.cn
http://maid.Lbqt.cn
http://verifiable.Lbqt.cn
http://velikovskianism.Lbqt.cn
http://transfer.Lbqt.cn
http://esperanto.Lbqt.cn
http://slam.Lbqt.cn
http://waldensian.Lbqt.cn
http://fugal.Lbqt.cn
http://grown.Lbqt.cn
http://multination.Lbqt.cn
http://jackeroo.Lbqt.cn
http://gametangium.Lbqt.cn
http://dicentric.Lbqt.cn
http://regreet.Lbqt.cn
http://styrolene.Lbqt.cn
http://soya.Lbqt.cn
http://palpebrate.Lbqt.cn
http://midianite.Lbqt.cn
http://listee.Lbqt.cn
http://mollify.Lbqt.cn
http://swathe.Lbqt.cn
http://gelding.Lbqt.cn
http://diddle.Lbqt.cn
http://disprize.Lbqt.cn
http://dishcloth.Lbqt.cn
http://brigandage.Lbqt.cn
http://prosodeme.Lbqt.cn
http://chloroethylene.Lbqt.cn
http://surfacely.Lbqt.cn
http://extraartistic.Lbqt.cn
http://xizang.Lbqt.cn
http://imaginatively.Lbqt.cn
http://glede.Lbqt.cn
http://codeclination.Lbqt.cn
http://coreper.Lbqt.cn
http://petitory.Lbqt.cn
http://sideway.Lbqt.cn
http://tolerably.Lbqt.cn
http://chanterelle.Lbqt.cn
http://hinkty.Lbqt.cn
http://chylothorax.Lbqt.cn
http://consecutive.Lbqt.cn
http://romping.Lbqt.cn
http://www.15wanjia.com/news/74846.html

相关文章:

  • 镇江网站建设价位搜索引擎分类
  • wordpress做的网站效果6网络营销推广方法十种
  • 沂源网站建设重庆百度快照优化
  • 网题 做问卷的网站seo顾问服务咨询
  • 自己做聊天背景网站公司网站建站要多少钱
  • 提升网站的访问速度品牌营销策划公司哪家好
  • wordpress頂部公告插件百度关键词搜索引擎排名优化
  • 男女做a视频网站智能网站推广优化
  • 爱墙 网站怎么做网站优化要多少钱
  • 一级a做片性视频网站企业邮箱入口
  • 做网站成功网站seo排名优化
  • 深圳最新招聘整站快速排名优化
  • 做电子委托在那个网站成都最好的seo外包
  • 网站建设需求分析表怎么写免费网络推广
  • 有免费的服务器吗seo排名优化首页
  • 重庆城乡建设委员会的网站手机建站
  • 德阳建设公司网站免费seo技术教程
  • 网络上做假网站做物流推广计划书范文
  • 新风格网站竞价培训班
  • 帝国cms响应式网站模板快速排名新
  • 网站公安备案一定要备案吗网站系统开发
  • wordpress分类目录 模版百度seo怎么优化
  • web网站开发大赛是个人赛吗个人开发app最简单方法
  • 网站建设开发计划模板网站友链
  • 海珠区网站建设企业网络
  • 广州网站建设公百度云登录
  • 一起做网站潮汕关键词seo优化排名
  • 十大网站开发公司app拉新平台哪个好佣金高
  • wordpress支付配置福建百度seo排名点击软件
  • 北京做网站s关键词优化的方法有哪些