gpt4 book ai didi

flash - 将播放头定位到 Flash 视频中的特定位置?

转载 作者:行者123 更新时间:2023-12-01 11:03:23 30 4
gpt4 key购买 nike

如果您在 Flash 中加载 FLVPlayback 组件或在 Flex 中加载 VideoDisplay 并尝试定位到特定位置或将 playheadTime 设置为特定位置,则影片总是向上或向下舍入非常大的数额

在 Flash 中,将一个 FLVPlayback 组件拖到舞台上并将源设置为 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/examples/assets/phone.flv然后尝试 video.seek(6) 或 video.playheadTime = 6;

它只会转到 10。同样,如果你使用他们内置的洗涤器,唯一的间隔是 0、5 或 10。所以你看到的洗涤帧最多是 3

这是一个具有相同结果的 flex 示例。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:media="com.synapsegroup.media.*">

<mx:Script>
<![CDATA[
import mx.events.MetadataEvent;
import mx.events.SliderEvent;
import mx.events.VideoEvent;

protected function scrubber_changeHandler(event:SliderEvent):void
{
trace(event.value);
video.playheadTime = event.value;
}

protected function video_playheadUpdateHandler(event:mx.events.VideoEvent):void
{
//scrubber.value = event.playheadTime;
//http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/examples/assets/phone.flv
}

]]>
</mx:Script>

<mx:Panel>
<mx:VideoDisplay id="video" source="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/examples/assets/phone.flv" minWidth="200" minHeight="200"
autoPlay="false"
/>
<mx:ControlBar>
<mx:Button label="Play" click="video.play();"/>
<mx:Button label="Stop" click="video.pause();"/>
<mx:HSlider liveDragging="true" id="scrubber" minimum="0" maximum="11.5" change="scrubber_changeHandler(event)" thumbPress="video.pause();"/>
</mx:ControlBar>
</mx:Panel>

</mx:Application>

在这两种情况下,如果您足够快地点击播放/暂停,您就可以更细粒度地在单个帧上暂停,但这不是一个好的用户体验

我是否缺少以编程方式执行此操作的内容?

我还要说间隔会根据视频长度而变化,3 分钟长的视频间隔为 10 秒

最佳答案

flash 的文档提到 seek() 的值是近似值。部分原因是视频的压缩方式。它被分解成 block ,带有一个关键帧和一组增量帧,这些帧只包含有关已更改内容的数据。这样,视频的整体文件大小比每一帧都包含每个像素要小得多。

然而,这也意味着您不能直接跳到任何帧,因为许多帧实际上并不存在。播放头必须找到最接近的前一个关键帧,然后从那里向前播放。

要使视频可以停止并搜索到任何帧,您必须使用关键帧距离 1 对其进行编码。试试看,您会发现文件大小很大,但现在可以顺畅地向后播放。

至于scrub bar在寻找时不精确,是的。这是。有点马虎。 Boo adobe 等等。但是,他们必须在告诉玩家在每次鼠标移动时寻找,这可能会使玩家陷入困境,因为它会为每次鼠标移动计算 keframe 加上增量,而实际上能够拖动条。

它并不出色,但您可以从 netstream 类编写自己的代码,并根据自己的喜好设置更多的平衡。大多数时候,我发现他们的天平完全可用,即使能够更精确也很好。

关于flash - 将播放头定位到 Flash 视频中的特定位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8595809/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com