菜鸟教程小白 发表于 2022-12-12 13:21:17

ios - 音频/视频慢动作问题


                                            <p><p>我正在尝试为我的 <strong>video</strong> 文件和 <strong>audio 做 <strong>slow motion</strong>。</strong> 就我而言,我必须做 <strong>Ramped </strong> 慢动作(逐渐减速和加速
像抛物线而不是“线性慢动作”。 </p>

<p>引用:线性慢动作:</p>

<p> <img src="/image/WAiJW.png" alt="enter image description here"/> </p>

<p>引用:斜坡慢动作:</p>

<p> <img src="/image/TqRm4.png" alt="enter image description here"/> </p>

<p><strong>到目前为止我做了什么:</strong></p>

<p><strong>前三个项目符号使用 AVFoundation</strong></p>

<ol>
<li><p>从视频文件中,<strong>音视频分离</strong>。</p></li>
<li><p>使用 AVFoundation api (scaletimeRange) 为 <strong>视频制作慢动作</strong>。它真的很好用。 </p></li>
<li><p>对于<strong>音频</strong>,同样<strong>不起作用</strong>。似乎苹果 api 本身存在一个错误(错误 ID:14616144)。相关问题是<a href="https://stackoverflow.com/questions/17269531/scaletimerange-has-no-effect-on-audio-type-avmutablecompositiontrack" rel="noreferrer noopener nofollow">scaleTimeRange has no effect on audio type AVMutableCompositionTrack</a> </p></li>
<li><p>所以我<strong>切换到</strong>到<strong>狄拉克</strong>。后来发现 Dirac 的开源版本有一个<strong>限制</strong>,它不支持动态时间拉伸(stretch)。</p></li>
<li><p>终于尝试使用 <strong>OpenAL</strong>。</p></li>
</ol>

<p>我从 Apple 开发者论坛获取了一个示例 OpenAL 程序并执行了它。</p>

<p><strong>这是我的问题:</strong></p>

<ol>
<li><p>我可以在 OpenAl 中<strong>存储/保存</strong>处理后的音频吗?如果直接使用“OpenAl”无法实现,是否可以使用 <strong>AVFoundation + OpenAL</strong> 来完成? </p></li>
<li><p>非常重要的是,<strong>如何用 OpenAL 做慢动作或拉伸(stretch)时间尺度</strong>?如果我知道时间拉伸(stretch),我可以应用斜坡慢动作的逻辑。</p></li>
<li><p>还有其他办法吗?</p></li>
</ol></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我无法真正与 1 或 2 交谈,但时间缩放音频可以像重新采样一样简单。如果您以 48 kHz 采样 RAW/PCM 音频并希望以半速播放,请重新采样至 96 kHz 并以 48 kHz 播放音频。由于您有两倍数量的样本,因此播放时间将增加两倍。一般:</p>

<pre><code>scaledSampleRate = (orignalSampleRate / playRate);
</code></pre>

<p>或</p>

<pre><code>playRate = (originalSampleRate / scaledSampleRate);
</code></pre>

<p>这将影响音轨的音高,但这可能是所需的效果,因为这种行为在“慢动作”音频中有些预期。有更先进的技术可以在缩放时间的同时保持音高。开源软件 Audacity 实现了这些算法。你可以在那里找到灵感。网络上有许多资源可以解释音高转换与时间拉伸(stretch)之间的权衡。</p>

<ul>
<li> <a href="http://en.wikipedia.org/wiki/Audio_time-scale/pitch_modification" rel="noreferrer noopener nofollow">http://en.wikipedia.org/wiki/Audio_time-scale/pitch_modification</a> </li>
<li> <a href="http://www.dspdimension.com/admin/time-pitch-overview/" rel="noreferrer noopener nofollow">http://www.dspdimension.com/admin/time-pitch-overview/</a> </li>
</ul>

<p>您可能没有考虑过的另一个选项是在慢动作期间静音。这似乎是大多数 AV 播放实用程序所采用的技术。但是,根据您的用例,失真的音频确实表明时间正在被操纵。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 音频/视频慢动作问题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18029235/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18029235/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 音频/视频慢动作问题