【发布时间】:2011-01-20 12:10:33
【问题描述】:
我的 3D 视频在每一帧上并排编码了每只眼睛的内容。我想做的是把左半边覆盖在右半边。 (然后我将更改颜色和覆盖层,以便戴蓝青色 3D 眼镜的人可以观看视频)。
我尝试将单个 NetStream 附加到两个视频对象并偏移它们,但这只让流在一个对象上播放。
有什么建议吗?
【问题讨论】:
标签: flash actionscript-3 video 3d video-streaming
我的 3D 视频在每一帧上并排编码了每只眼睛的内容。我想做的是把左半边覆盖在右半边。 (然后我将更改颜色和覆盖层,以便戴蓝青色 3D 眼镜的人可以观看视频)。
我尝试将单个 NetStream 附加到两个视频对象并偏移它们,但这只让流在一个对象上播放。
有什么建议吗?
【问题讨论】:
标签: flash actionscript-3 video 3d video-streaming
由于stream 在定义上或多或少是小数据位的连续流,而不是固定长度的对象,因此您永远不能同时访问 NetStream 的两个不同位置。您可以尝试在帧与帧之间“跳跃”,产生一种“快门”效果,但这可能效果不佳。
但是,您可以让视频对象共享同一个 NetConnection,并让两个 NetStream 实例加载同一个电影,或者您可以只在两个单独的 FLV 中同时播放您的左眼和右眼内容.但是,您必须注意同步,并且可能会出现轻微的不一致。
如果您的目标是 Flash Player 10.1 或更高版本,您可以将两个 FLV 作为 byteArray 加载到内存中,然后使用 NetStream.appendBytes 播放它们。这应该解决同步问题。
【讨论】:
我已经想出了如何完成我想要的。
伪代码:
bmd1 = new BitmapData(...);
bmd2 = new BitmapData(...);
bmp1 = new Bitmap(bmd1);
bmp2 = new Bitmap(bmd2);
addChild(bmp1);
addChild(bmp2);
onEnter {
bmd1.draw(video, ...transformations)
bmd2.draw(video, ...transformations)
}
然后将 bmp1 和 bmp2 组织到您想要的位置,并相应地进行转换。
【讨论】: