在Android设备之间同步视频捕获?
我正在做一个项目,从两个安卓设备(一个玻璃杯和一个平板电脑)捕获和上传视频,这两个设备通过蓝牙相互通信。我的同步、上传和捕获过程(使用一台设备控制另一台设备)运行良好,但我无法(通过MediaRecorder)使录制保持同步。目前的进程是:在Android设备之间同步视频捕获?,android,bluetooth,synchronization,timing,mediarecorder,Android,Bluetooth,Synchronization,Timing,Mediarecorder,我正在做一个项目,从两个安卓设备(一个玻璃杯和一个平板电脑)捕获和上传视频,这两个设备通过蓝牙相互通信。我的同步、上传和捕获过程(使用一台设备控制另一台设备)运行良好,但我无法(通过MediaRecorder)使录制保持同步。目前的进程是: 从玻璃上发送开始信息,并在玻璃上开始5秒倒计时 在开始信息中,在平板电脑上开始5秒倒计时 在倒计时结束时,开始在两台设备上录制 当玻璃发出停止信号时,停止录音并上传 请注意,这假定倒计时将在完全相同的时间开始,并且MediaRecorder在两台设备上的
- 从玻璃上发送开始信息,并在玻璃上开始5秒倒计时
- 在开始信息中,在平板电脑上开始5秒倒计时
- 在倒计时结束时,开始在两台设备上录制
- 当玻璃发出停止信号时,停止录音并上传
请注意,这假定倒计时将在完全相同的时间开始,并且MediaRecorder在两台设备上的准备和启动时间完全相同。这种简单的方法可以大致同步(文件之间的差异小于500毫秒),但我知道必须有更好的方法。我知道问题的一部分是蓝牙消息的传递和操作会引入延迟,但我不确定如何解决这个问题。我尝试添加额外的同步和启动消息来补偿倒计时延迟,但这些添加的开销似乎使问题变得更糟。密切同步媒体录制时间(或者我猜其他密集活动)的最佳方式是什么?我知道一些延迟是不可避免的,但将其降低到100毫秒左右是可以接受的。我建议改为在5秒钟内发送时间戳,并让他们在倒计时开始后立即准备录制,然后将他们两人的录制设置为与发送的时间戳完全一致,而不是在5秒钟之后,因此,无论消息需要多长时间才能到达,它们都会同时录制感谢Tomer,我必须对代码进行一些重构才能做到这一点,但这是一种很好的方法,对我来说效果很好。