我正在使用TIdHTTPServer
构建一个简单的Web服务器。像往常一样,我可以处理服务器计算机上的文件请求,然后通过TFileStream
将这些文件传回...
if FileExists(Doc) then begin
FResponse.ContentType:= FileMimeType(Doc); //Returns 'audio/mp3'
FS:= TFileStream.Create(Doc, fmOpenRead or fmShareDenyNone);
FResponse.ContentStream:= FS;
end else begin
FResponse.ResponseNo:= 404;
end;
这很好用,我可以直接将音频/视频流式传输到HTML5网页。
当用户试图向前跳到轨道时出现问题 - 它总是跳回到文件的开头。似乎如上所示返回文件流的方法对于真实流式传输不起作用100%。例如,当使用IIS来托管这样的媒体时,一切都很完美,用户可以自由地跳过媒体文件到他们想要的任何地方。就在使用Indy托管相同文件时,它会跳回到开头。
即使将一系列媒体文件缓冲到媒体播放器中,并且用户试图跳转到缓冲数据中的某个位置,它仍会跳回到开头。
如何以用户可以跳过轨道的方式使用Indy正确托管媒体文件,因为它在通过IIS托管时有效?