百度SEO

百度SEO

Products

当前位置:首页 > 百度SEO >

如何找到并提交至360网站收录的手机医疗网站建设?

96SEO 2026-02-20 09:58 18


MPEG

我们的播放器现在能够同时视频和音频了但还不够你会发现视频画面和音频会对不上这是因为我们没有做音画同步。

如何找到并提交至360网站收录的手机医疗网站建设?

在现有的代码中我们每隔

30ms

去播放一帧画面而音频则是由系统的音频线程来负责驱动调用。

这等于说视频和音频各播各的画面与声音失去了同步。

因此本章将讨论如何进行音画同步。

本文参考文章来自

rambodrahmani/ffmpeg-video-player

ffmpeg_video_player_tutorial-my_tutorial05_01_clock.cpp。

帧B帧

帧关键帧也被称为内插帧。

每一帧都是独立的图像也就是说它不依赖于其他任何帧的图像信息。

I帧类似于完整的图像编解码器只需要本帧数据就可以完成解码。

在视频播放时I帧也是快进、快退、拖动的定位点通常情况下视频中的第一帧就是I帧。

帧预测帧P帧的数据包含与前一个I帧或P帧的差别在编码时仅考虑了前向预测也就是只与前一帧比较来找出两帧之间的区别然后只记录下这个差别。

P帧依赖于前面的I帧或P帧。

帧双向预测帧B帧记录的是该帧与前后帧的差别即考虑了双向的预测可以理解为B帧被插在I、P帧之间通过前后帧进行预测、记录、解压。

B帧依赖于前后的I帧或P帧。

需要所有这些帧的主要原因是为了压缩视频。

I帧需要的数据量最多但是不可能所有帧都为I帧这样压缩率就很低所以P帧和B帧诞生了P帧和B帧只记录和参考帧的差异信息所以数据量小压缩率高缺点是如果参考帧丢失那么将导致无法解压出真实图像。

总的来说所有这些帧的组合能够使视频数据得以有效的压缩同时保持视频质量。

PTS

这种编码模式下视频帧的解码过程较为简单播放顺序和解码顺序是一样的因为这种情况下没有B帧存在P帧只依赖前面的I帧或P帧。

首先解码第一帧I帧I帧是关键帧可以独立解码不依赖任何其他帧。

然后解码第二帧P帧此P帧只依赖于前一帧前一帧是I帧已经解码。

接着解码第三帧P帧此P帧也只依赖于前一帧前一帧是P帧已经解码。

最后解码第四帧P帧此P帧只依赖于前一帧前一帧是P帧已经解码。

如果有

这种编码模式下视频帧的解码顺序和播放顺序也是不一样的。

B帧依赖前面和后面的帧因此需要等待后一个参考帧I或P帧解析完成后才能开始

首先解码第一帧I帧I帧是关键帧可以独立解码不依赖任何其他帧。

然后解码第四帧P帧P帧只依赖于之前的I帧或P帧这一步可以顺利进行。

解码完第四帧P帧后才能开始解码第二帧和第三帧B帧。

B帧需要依赖前一帧和后一帧也就是需要依赖第一帧I帧和第四帧P帧。

因此类似的在包含B帧的情况下解码顺序和播放顺序是有所不同的这也是为什么在视频解码过程中需要对帧进行重新排序的原因。

我们使用

Stamp解码时间戳来表示解码的顺序PTSPresentation

Time

都是时间戳那么时间的单位是什么是秒s还是毫秒ms呢其实都不是DTS

PTS

是以时间基(timebase)为单位的时间基是由编码格式决定的通常它是一个如1/90000这样的分数。

为什么要引入

呢引入timebase主要是为了提供更为灵活和精细的时间表示方法。

虽然可以选择只用秒或毫秒作为单位但这可能会在一些特殊的情况下引入不必要的误差或者损失精度。

在多媒体处理中每种编码格式或者媒体流可能有其特定的帧率或者时钟频率用一个固定的时间单位如秒或毫秒可能难以精确地表示这些特定的时间点或时长。

比如有些视频可能是24帧/秒有的可能是30帧/秒有的可能是29.97帧/秒等。

而timebase是一个分数形式的时间单位它的分子和分母都可以根据具体的编码格式或者媒体流来自由设定可以精确适配不同的帧率和时钟频率使得时间表示既可以非常精细也可以非常灵活。

例如对于一个帧率为29.97fps的视频我们可以设置timebase为1/30000这样就能够非常精确地表示每一帧的时间。

所以引入timebase主要是为了在多媒体处理中提供一个既灵活又精确的时间表示方法。

Timebase

不如常见的秒或者毫秒那样直观。

对于绝大多数人来说1/30000秒涉及到的分数运算可能会比较难以理解相比之下33.33毫秒可能会更直观一些。

但是在多媒体编程中由于需要处理各种不同的编码格式和媒体流每种可能有其特定的帧率或者时钟频率这就需要一个更灵活和精细的时间表示方法来适应这些差异这就是引入timebase的原因。

对于程序来说处理timebase只不过是一些简单的乘法和除法运算而对于熟悉多媒体编程的开发者来说他们也已经习惯了timebase这样的时间表示方法。

在FFmpeg中timebase是一个分数表示的是时间单位用于进行时间戳与实际时间的转换。

它由一个分子和一个分母构成。

分子通常为1分母通常等于媒体的帧率或者时钟频率。

分子(numerator)通常为1在方程中根据需要设定分母(denominator)通常将帧率或者时钟频率设定为分母

以数字视频为例如果一个视频的帧率是每秒30帧那么它的timebase就是1/30这个值表示的是每帧的时间长度。

换算成秒就是约0.0333秒。

如果你有一个时间戳值例如100那么这个时间戳对应的实际时间就是100

1/30

再举一个数字音频的例子如果音频的采样率是44100Hz表示每秒钟有44100个音频样本那么它的timebase就是1/44100。

如果你有一个时间戳值例如22050那么这个时间戳对应的实际时间就是22050

1/44100

需要注意的是不同的流可能有不同的time_base。

例如一个包含视频和音频的媒体文件它的视频流的time_base可能是1/30对应30fps的帧率而音频流的time_base可能是1/44100对应44100Hz的采样率。

所以在计算时间戳对应的实际时间时需要使用正确的time_base。

或者换一种理解在FFmpeg中timebase以一个分数形式存在分母表示将1秒拆分成的份额而分子表示每一帧或采样或其他计数单位占用的份额。

例如如果一个时间基准timebase是7/30那么这意味着1秒被拆分成了30份每一帧占用了7份。

所以每一帧对应的时间就是7

1/30

在大多数的实际应用中timebase的分子通常为1这是因为在大多数媒体格式中每一帧或其他的计数单位通常都对应于一个单位的时间。

这样的话如1/24、1/30、1/60这样的timebase也就表示了每帧的时间直接是1/24秒、1/30秒、1/60秒。

Timebase

在FFmpeg中AV_TIME_BASE是一个宏定义其值为1000000。

这是作为FFmpeg内部处理时间戳时的一个共同参考用于统一不同的时间基准。

这个宏定义的原理是以微秒作为基础时间单位。

这样你可以用这个AV_TIME_BASE来将时间戳从微秒转换到FFmpeg内部使用的时间单位反之亦然。

例如如果你有一个以秒为单位的时间量你可以乘以AV_TIME_BASE将其转换为基于FFmpeg的时间单位。

例如1秒

AV_TIME_BASE。

多了解这一点可以帮助你更好地理解FFmpeg在处理时间戳时的一些机制和单位转换等问题。

需要注意的是虽然FFmpeg内部用AV_TIME_BASE作为统一的时间处理标准但是不同的流还是可能有各自的时间基准这需要我们在处理时对时间戳进行相应的转换。

假设我们有一个视频流帧率是30fps所以视频流的timebase是1/30我们还有一个音频流样本率是44100Hz所以音频流的timebase是1/44100。

假设我们现在有一个视频帧和一个音频样本它们的PTS显示时间戳分别是v_pts和a_pts。

首先我们需要把v_pts和a_pts转换到以AV_TIME_BASE为单位的时间戳也就是以微秒为单位的时间戳

v_pts_us

AV_TIME_BASE然后我们就可以直接比较v_pts_us和a_pts_us这样就能知道音频和视频哪个应该先播放。

如果v_pts_us

v_pts_us那么这个音频样本应该先播放。

这样就实现了音画同步。

当然这是一个简化的示例在真实的应用中可能还需要更复杂的逻辑来处理AV同步例如处理拖动播放条引起的seek操作处理音频和视频的解码延迟等。

FFmpeg

结构体表示时间基数的分数结构体来重新缩放时间戳。

你可以像下面这样使用它

int64_t

AV_TIME_BASE_QAV_TIME_BASE的时间基数值为1/1000000。

同样的你可以用这个函数转换音频时间戳

int64_t

就目前的程序而言视频和音频正在愉快地运行根本不需要同步。

如果一切正常我们就不必担心这个问题。

但你的电脑并不完美很多视频文件也不完美。

因此我们有三种选择将音频同步到视频、将视频同步到音频或者将两者同步到外部时钟如电脑。

现在我们介绍的是将视频同步到音频。

精确地纪录和获取时间

我们首先要解决的第一个问题是如何精确的纪录当前视频/音频流的时间。

只有拿到了精确的时间我们才能知道视频与音频之间的快慢关系。

ffmpeg_video_player_tutorial-my_tutorial05_01_clock.cpp

Clock

ptspre_frame_delay上次帧的延迟。

在某些情况我们将使用这个变量作为当前帧的延迟。

使用下面这些函数来更新/获取时钟

|--------------------|--------------------|--------------------|

Thread1:

|----------|---------------------------------------------|-----|

time1015

...play_ctx-setClock(play_ctx-audio_clock_t,frame-pts

av_q2d(audio_stream-time_base));//

...

本文主要讲解如何将视频同步到音频因此在音频线程中我们只需更新音频时钟而无需进行任何同步操作。

所有的音频视频同步操作都会在视频播放线程中进行。

帧即每

毫秒刷新一帧的视频为例。

如果视频播放速度超过了音频我们可以适当地延长下一帧的刷新时间使视频播放速度慢一些给音频一些“追赶”的时间比如延长到

毫秒刷新一帧。

相反如果音频的播放速度快于视频我们可以缩短下一帧的刷新时间使视频播放快一些以便能跟得上音频的速度。

videoSync

av_q2d(decode_ctx-video_stream-time_base);auto

pts

video_timebase_d;setClock(video_clock_t,

pts);auto

video_clock_t.pre_pts;printf(PTS

Delay:\t\t\t\t%lf\n,

video_clock_t.pre_frame_delay;}printf(Corrected

PTS

pts;video_clock_t.pre_frame_delay

pts_delay;auto

};上述代码片段是一个函数用于视频同步。

用于使用音频时钟作为参考来调整视频帧的展示时间从而实现音画同步。

pts。

影片序数pts是一个表示时间基数的特殊单位表示在给定的时间标度time

函数将

decode_ctx-video_stream-time_base

pts_delay它表示当前帧和上一帧之间的延迟。

如果这被认为是无效的即小于等于0或大于等于1.0则会使用先前的帧延迟。

这些信息存储起来供下一次使用。

第三部分获取音频时钟

audio_ref_clock和视频时钟

video_clock并计算出二者之间的差值diff这表示音频和视频帧之间的延迟。

第四部分计算出调整阈值

sync_threshold当差值

pts_delay音频和视频同步。

若差值音频和视频延时过大则根据其正负使视频速度加快或放慢实现音视频同步。

最后返回

pts_delay

的值以毫秒为单位这个返回值将被用作等待时间来决定何时展示下一帧。

在视频播放线程中使用

是如何描述时间的然后我们详细的描述了音画同步实施的具体要点包括如何精确的纪录不同流的当前时间在什么时间节点来更新时钟以及音画同步的具体算法。

ffmpeg

ffmpeg_video_player_tutorial-my_tutorial05_01_clock.cpp。



SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback