我有两个 protected void Page_Load(object sender, EventArgs e)
{
AddRequestType addreq = new AddRequestType();
addreq.executionMode = ExecutionModeType.asynchronous;
addreq.returnData = ReturnDataType.identifier;
identity ident = new identity();
ident.username = new string[] { "jsmith" };
X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var cert = store.Certificates;
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;
SPMLService client = new SPMLService();
client.UseDefaultCredentials = true;
var res = client.SPMLAddRequest(addreq);
AddResponseType addresp = new AddResponseType();
//addresp.requestID={ requestID};
var status = addresp.status;
var error = addresp.error;
var error_msg = addresp.errorMessage;
}
个项目播放持续时间相同的视频(10秒)。目标是让它们循环并保持彼此同步。我将它们添加为相同AVPlayer()
的子图层,然后在每个图层上调用UIView
。
问题是,由于代码执行显然有一点点延迟,因为一个在另一个之后被调用,视频不同步(虽然只有几毫秒,但是很明显)。
我没有选择创建AVMutableComposition,因为我已经看过其他帖子的建议,所以有没有两个独立的玩家真正保持同步并且同时玩游戏?
谢谢!
答案 0 :(得分:3)
如果要实现同步,则应使用AVPlayer单独加载视频,并观察每个播放器的AVPlayerItemStatus
属性。只有当所有玩家都具有状态.readyToPlay
时,您才能循环播放玩家并设置.rate
属性。
编辑:
您还可以使用setRate(_:time:atHostTime:)
同步它们。不要忘记在致电preroll(atRate:completionHandler:)
之前使用setRate
开始加载媒体数据。基本上是:
readyToPlay
preroll(atRate:completionHandler:)
当所有球员都准备好时setRate(_:time:atHostTime:)
当所有球员都被预选时