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

二手房网站平台怎么做设计网站用什么软件

二手房网站平台怎么做,设计网站用什么软件,河南省财政企业信息管理系统,中国500强排名完整版摘要#xff1a;本文主要详细描述FFmpeg中封装时写packet到媒体文件的函数av_interleaved_write_frame的实现。   关键字#xff1a;av_interleaved_write_frame   读者须知#xff1a;读者需要熟悉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_packet和s-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.flagsCHUNK_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://www.w-s-a.com/news/483959/

相关文章:

  • 怎么做手机网站潍坊建设银行网站
  • 做网站分什么软件品牌设计培训
  • 太原网站设计排名设计本装修效果图
  • 网站个人中心模板石家庄网站系统开发
  • 优秀的电子商务网站教育公司网站建设文案
  • 网站开发市场成本网站链接推广工具
  • 猪八戒做网站排名常州seo博客
  • wordpress 网站遭篡改如何优化公司的网站
  • 汉中公司做网站网站建设的风格设置
  • 网站建议怎么写怎么做网页连接
  • 站长工具seo综合查询下载安装软件平台搭建包括哪几个方面
  • 做网站怎么存放视频支付功能网站建设
  • 庆阳手机网站设计兰州网站的优化
  • 企业网站托管有必要吗项目管理资格证书
  • 检索类的网站建设个人博客网页模板图片
  • 贵阳网站建设搜q479185700做网站有什么语言好
  • 制作公司主页网站贵阳网站建设技术托管
  • 广西建设网站网址多少钱南京江北新区地图
  • 网站建设及优化 赣icp外包服务美剧
  • wordpress添加菜单深圳优化网站排名
  • 免费下载建设银行官方网站重点专业建设验收网站
  • 建行官方网站登录怎样制作悬浮的WordPress
  • 建设一个网站需要几个角色广告设计与制作就业前景
  • 侵入别人的网站怎么做怎么修改网站排版
  • 网站如何提交百度收录什么最便宜网站建设
  • 商丘网站建设想象力网络做公司网站需要准备什么
  • 滁州新手跨境电商建站哪家好网站推广运作怎么做
  • 烟台有没有做网站大连建设工程信息网专家库
  • 网站建设明确细节商贸有限公司的经营范围
  • 南宁微网站开发做的好的有哪些网站