public StreamedContent getVideoFile() {
HttpSessionUtil<byte[]> sessionUtil = new HttpSessionUtil<byte[]>();
byte[] videoFile = sessionUtil.getFromSessionMap("video");
FacesContext context = FacesContext.getCurrentInstance();
if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
videoFile = convertDefaultVideoToBytes(videoFile);
return new DefaultStreamedContent(new
ByteArrayInputStream(videoFile), "video/mp4");
}
if(videoFile != null && videoFile.length > 0){
videoFile = new DefaultStreamedContent(new
ByteArrayInputStream(videoFile), "video/mp4");
}else{
videoFile = convertDefaultVideoToBytes(videoFile);
videoFile = new DefaultStreamedContent(new
ByteArrayInputStream(videoFile), "video/mp4");
}
return videoFile;
}
xhtml代码:
<p:media value="#{vesumeBean.videoFile}" width="100%" height="400"
player="quicktime">
<f:param name="autoPlay" value="true" />
</p:media>
ManagedBean是javax.faces.bean.SessionScoped 视频的最终字节[]长度约为480835
目标是视频应在加载屏幕后开始播放。 无法使用p:media播放视频。
视频应从指定路径加载并开始播放。
FacesContext.getCurrentPhaseId()== PhaseId.RENDER_RESPONSE此块执行两次,第三次执行else部分
完美适用于Firefox。任何与此相关的帮助都非常感谢。