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

做一个软件大概要多少钱杭州seo 云优化科技

做一个软件大概要多少钱,杭州seo 云优化科技,专业网站建设的意义,罗定微网站建设最近在看ffmpeg的重采样计算逻辑#xff0c;有一句话没大看懂 dst_nb_samples av_rescale_rnd(swr_get_delay(swr_ctx, src_rate) src_nb_samples, dst_rate, src_rate, AV_ROUND_UP); #xff0c;各种请教之后#xff0c;记录如下。 重采样后的总样本数 为什么要涵盖重采…最近在看ffmpeg的重采样计算逻辑有一句话没大看懂 dst_nb_samples av_rescale_rnd(swr_get_delay(swr_ctx, src_rate) src_nb_samples, dst_rate, src_rate, AV_ROUND_UP); 各种请教之后记录如下。 重采样后的总样本数 为什么要涵盖重采样过程中的延迟 在音频重采样过程中由于源音频和目标音频的采样率不同需要对音频数据进行插值或者抽取操作以使其在时间上对齐。这个过程会引入一定的延迟。 延迟的引入是由于插值或抽取操作的特性决定的。例如当将音频从低采样率转换为高采样率时需要通过插值来生成新的样本这会导致插值过程中的延迟。同样地将音频从高采样率转换为低采样率时需要通过抽取来减少样本数这也会引入抽取过程中的延迟。 为了确保重采样后的音频数据能够包含完整的有效音频信息包括延迟期间的音频数据我们需要计算重采样后的总样本数。这样可以确保在重采样过程中不会丢失任何音频信息。 因此在计算重采样后的总样本数时需要将源音频的样本数与重采样过程中产生的延迟相加。这样可以确保目标音频数据的长度足够容纳重采样过程中产生的延迟期间的音频数据从而保证音频质量和完整性。 重采样后的总样本数如何计算 重采样后的总样本数可以通过以下步骤计算 使用音频重采样上下文swr_ctx中的函数 swr_get_delay() 获取重采样引入的延迟以源音频样本数为单位。这个函数通常会返回一个浮点数表示延迟的小数部分。 将获取的延迟与源音频的样本数src_nb_samples相加得到重采样后的未舍入的总样本数。这个值表示重采样后的音频数据中包含的总样本数包括延迟期间的样本数。 使用 FFmpeg 提供的函数 av_rescale_rnd() 将未舍入的总样本数按比例重新缩放以适应目标音频的采样频率。 代码解释 这行代码是使用FFmpeg库中的函数进行音频重采样的过程中的一部分。 swr_ctx这是一个音频重采样上下文Context它存储了音频重采样的状态信息和参数。 src_rate这是源音频的采样率采样频率表示每秒钟采样的次数。 src_nb_samples这是源音频中的样本数表示要进行重采样的音频数据中包含的样本数。 swr_get_delay(swr_ctx, src_rate)swr_get_delay是一个函数它返回进行音频重采样所需的延迟以样本数为单位。在这里它返回源音频在重采样过程中产生的延迟。 swr_get_delay(swr_ctx, src_rate) src_nb_samples这个表达式将源音频的样本数和重采样过程中的延迟相加得到重采样后的总样本数。 dst_rate这是目标音频的采样率表示重采样后的音频的采样率。 av_rescale_rnd()这是一个函数用于将一个值按比例重新缩放。它接受要缩放的值、缩放的目标范围和要使用的舍入模式rounding mode作为参数并返回缩放后的结果。 av_rescale_rnd(swr_get_delay(swr_ctx, src_rate) src_nb_samples, dst_rate, src_rate, AV_ROUND_UP)这个表达式将重采样后的总样本数按比例重新缩放使其适应目标音频的采样率。AV_ROUND_UP是一个舍入模式表示采用向上舍入的方式。 dst_nb_samples这是重采样后的目标音频的样本数。 总而言之这行代码的目的是计算重采样后的目标音频的样本数。它通过将源音频的样本数和重采样过程中产生的延迟相加并按比例重新缩放以适应目标音频的采样率来实现。 音频连续时间戳计算逻辑分析 看下这段代码 ret avcodec_receive_frame(d-avctx, frame);if (ret 0) {AVRational tb (AVRational){1, frame-sample_rate};if (frame-pts ! AV_NOPTS_VALUE)frame-pts av_rescale_q(frame-pts, d-avctx-pkt_timebase, tb);else if (d-next_pts ! AV_NOPTS_VALUE)frame-pts av_rescale_q(d-next_pts, d-next_pts_tb, tb);if (frame-pts ! AV_NOPTS_VALUE) {d-next_pts frame-pts frame-nb_samples;d-next_pts_tb tb;}}frame-pts av_rescale_q(frame-pts, d-avctx-pkt_timebase, tb)的含义 时间跨度 当前应出现时间-初始时间 源时间戳 * 源时间基数 目标时间戳 * 目标时间基数 这行代码是用于将帧的时间戳PTS从一个时间基timebase转换为另一个时间基的操作。即 目标时间戳 源时间戳 * 源时间基数 / 目标时间基数。 在这行代码中frame-pts表示当前帧的时间戳。d-avctx-pkt_timebase表示编码器上下文AVCodecContext中的数据包时间基。tb则表示目标时间基。 av_rescale_q函数用于执行时间戳的转换。它接受三个参数源值即当前帧的时间戳源时间基和目标时间基。函数会根据提供的时间基参数将源值从源时间基转换为目标时间基并返回转换后的值作为结果。 通过这个操作可以将帧的时间戳从一个时间基转换为另一个时间基以适应不同的容器或编解码器要求。这对于正确处理时间轴和时序是非常重要的特别是在处理音视频同步、编辑和混流等操作时。这种转换可以确保视频和音频的时间信息在不同的上下文中保持一致和准确。 d-next_pts frame-pts frame-nb_samples; 假设每个音频样本的持续时间都是1/sample_count_per_second那么存在等式当前时间戳单位秒当前音频帧的样本个数 下一个音频帧的开始时间戳单位秒据此我们解释一下这行代码。 在这行代码中frame-pts表示源值即当前帧的时间戳Presentation TimestampPTS。d-avctx-pkt_timebase表示源时间基它是编码器上下文AVCodecContext中的数据包时间基。 时间基是一个分数用于表示时间的单位和精度。它通常用于将时间戳从一种表示方式转换为另一种表示方式。分数的分子表示时间单位分母表示每秒的时间单位数。 在这里frame-pts乘以d-avctx-pkt_timebase的目的是将当前帧的时间戳从源时间基转换为目标时间基。乘法运算的结果是一个根据源时间基和目标时间基的比例进行缩放的时间戳值。 通过执行乘法运算可以将时间戳从一个时间基转换为另一个时间基以便在不同的容器或编解码器之间进行正确的时间同步和时间轴处理。这种转换可以确保视频和音频的时间信息在不同的上下文中保持一致和准确。 frame-pts av_rescale_q(d-next_pts, d-next_pts_tb, tb); 根据上面的推算其实d-next_pts的时间基已经不是解码的时间基了而是解码后的时间基即目标采样率1/sample_count_per_second所以这里有 d-next_pts_tb tb; 音频序列号分析 d-pkt_serial是一个变量用于表示音视频数据包的序列号。在音视频处理和同步过程中使用序列号可以跟踪和标识不同的音视频数据包。 序列号通常用于多线程或并行处理的场景其中音频和视频数据可能以不同的速度解码和处理。每个数据包都可以被分配一个唯一的序列号以便在后续的处理过程中进行识别和排序。 通过使用序列号可以实现以下功能 数据包排序通过比较不同数据包的序列号可以按正确的顺序对它们进行处理以确保音视频数据的正确同步。例如在音视频同步中可以根据序列号将音频和视频数据包按照时间顺序进行匹配和呈现。 错误检测序列号可以用于检测丢失的或乱序的数据包。如果一个或多个数据包的序列号在处理过程中出现间隔或不连续可能表明存在数据包丢失或乱序的问题。 数据包关联序列号还可以用于将音频和视频数据包进行关联。例如在多个音频和视频流进行混流的情况下可以通过序列号将对应的音频和视频数据包进行匹配和关联。 综上所述d-pkt_serial是一个用于标识和跟踪音视频数据包的序列号变量用于实现数据包的排序、错误检测和关联等功能。 音频包处理 pkt_in_play_range 是一个表示音视频包packet是否处于播放范围内的标志。它通常用于音视频播放器或处理器中以确定是否应该处理给定的音视频包。 在音视频处理中往往会有一个播放范围play range用于指定在特定时间段内播放音视频数据。播放范围可以是整个音视频文件的时间范围也可以是用户在播放器中指定的某个时间段。 pkt_in_play_range 标志用于判断当前的音视频包是否在播放范围内。如果 pkt_in_play_range 为真非零表示音视频包处于播放范围内应该被处理和播放。如果 pkt_in_play_range 为假零表示音视频包不在播放范围内可以选择跳过处理或忽略该包。 这个标志的设置通常由播放器或相关的音视频处理逻辑根据当前的播放位置和播放范围来决定。它可以帮助控制音视频的播放和处理以确保只处理和呈现播放范围内的音视频数据。
http://www.dnsts.com.cn/news/147688.html

相关文章:

  • 西安网站开发高端网站开发在国内做跨境电商怎么上外国网站
  • 域名解析完成网站怎么做企业建一个网站
  • 做课程的网站998元网站建设优化
  • 怎样在国外网站上做外贸广告南京网页设计哪家好
  • 网站搭建的费用深圳市广告传媒有限公司
  • 百度网站下拉怎么做的网站购买域名
  • 河南郑州百度网站建设太原贴吧
  • 网站安全证书如何让做网站
  • 怎样做多商户网站常州营销推广公司
  • 网站底部悬浮导航猎头公司名字
  • H5网站建设网站定制开发老闵行小学排名
  • 网站建设常用的6大布局加代码中小型企业网站开发
  • 公司网站无法打开阿里云绑定wordpress
  • 网站建设主要课程网站建设需要学什么语言
  • 建设银行网站查余额wordpress解决速度
  • 龙川县建设网站惠普电脑网站建设策划方案
  • 东莞网站推广春企业品牌网站建设类型
  • 做网站编辑好还是推广好做网站猫要做端口映射吗
  • wordpress改造成mip站网上购物网站开发的背景
  • 网站建站分辨率wordpress the_time()
  • 手机网站生成工具wordpress 获取相关文章
  • 网站建设三大部分惠州网站建设行业
  • 有什么网站可以做商品展示的吗莆田 网站建设
  • 专门做淘宝优惠券的网站wordpress可以上传网页
  • 零食网站建设规划书原创网站设计费用
  • 吉林市网站推广网站建设应注意哪些问题
  • 建设机械网站机构深圳 企业 网站建设哪家好
  • 网站建设是一个什么的过程怎么免费做网站教程
  • 专科网站开发就业方向电子商务网站建设汇报PPT
  • 网站建设部署与发布如何做教育网站