我正在开发一个应用程序,它需要将视频从一台计算机(称为视频计算机)传输到另一台计算机(用户计算机).流模型使得视频文件字节"从原样"从视频计算机发送到用户计算机,并且在用户端完成解码.
在用户端接收的字节存储在System.IO.FileStream对象中.fileStream对象的长度(以字节为单位)在缓冲开始时设置(因为可以在开始时发送有关视频文件的元数据).
当缓冲开始时,System.Windows.Controls.MediaElement对象的源被设置为filestream对象.
如果用户不希望寻找视频并且缓冲率保持高于播放速率,则一切顺利.但是,人们不能靠运气.我需要一种机制来检查缓冲视频的持续时间是否小于当前播放时间......这样视频必须暂停(这可能发生在用户在很远的时候寻找视频,或者缓冲速率很慢的情况下).然后应采取纠正措施,并且只有在缓冲了最小持续时间后才开始播放.
因此,我需要一种机制来"确定缓冲持续时间以秒为单位(即以秒为单位查找缓冲区指针的位置)"给定缓冲区指针在缓冲时间线上的位置(以字节为单位)或确定已播放(或在播放指针后面传递)的字节数给定当前以秒为单位播放指针位置".
在任何时刻,已知以下数量:
可以mediaElement在几秒钟内暂停/播放或搜索到某个位置.
任何帮助将不胜感激.
[注意,不能说bufferPositionInSeconds= bufferPositionInBits/videoBitRate,因为实际上大多数视频的比特率都是可变的,并且因为文件中存在元数据.