首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >媒体时间线应用程序是如何在幕后工作的?

媒体时间线应用程序是如何在幕后工作的?
EN

Stack Overflow用户
提问于 2013-02-15 05:54:01
回答 1查看 85关注 0票数 1

有许多基于时间的应用程序示例,这些应用程序发送事件或执行复杂的处理,以达到非常精细的分辨率和准确性。想想MIDI排序应用程序,音频和视频编辑应用程序。

所以我很好奇,在它们的核心层面上,这些应用程序是如何从编程的角度准确地完成它们所做的事情的?

EN

回答 1

Stack Overflow用户

发布于 2013-02-15 23:33:44

MIDI和媒体播放在本质上是完全不同的,并且以不同的方式处理。

对于MIDI,需要处理的数据非常少。创建一个具有高优先级的线程来处理MIDI I/O。这就是所需的全部。

对于音频,准确性不是问题,但延迟是问题。在声音接口上有一个由播放音频的软件定期写入的缓冲区。对于典型的媒体播放器,此缓冲区可存储约300ms的音频。软件只是将PCM编码的音频波形写入缓冲区。声音接口不断地从该缓冲区读取数据,并以恒定的速率播放。

对于低延迟音频应用程序,此缓冲区大小可以非常小,仅处理5或10毫秒的音频。生成音频数据的软件必须再次由具有高优先级的线程处理,并且通常具有许多优化,以便在其他软件(效果和其他方面)跟不上的情况下保持其运行。缓冲区欠载运行很常见。特殊驱动器通常用于跳过信号链中不需要的软件。ASIO和DirectX在Windows上很常见。Windows Vista/7和OSX都将其音频API称为“核心音频”,并在没有特殊驱动程序的情况下提供低延迟功能。

视频是一种完全不同的东西。在可能的情况下,解码视频由硬件处理。这就是像手机这样的慢速设备能够播放720p视频的方式。如果硬件可以处理编解码器,软件只需要向它发送数据。在编解码器不受支持的情况下,视频必须在速度较慢的软件中解码。即使在现代的PC上,软件解码也经常导致视频断断续续或滞后。

音频到视频的同步也是一个问题。我对它知之甚少,但据我所知,音频是主时钟,视频是与之同步的。您不能简单地开始播放并期望计时工作,因为不同的声音接口会对44.1 the (或任何其他采样率)有不同的想法。你可以通过在两个不同的设备上同时播放相同的音频来证明这一点,并收听它们随着时间的推移而漂移。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14884763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档