我不想创建一个概念验证,向用户显示如果他们以.MP4和OGG格式上传相同的视频,生成的视频标签(使用videojs)将是跨平台的。
我已成功使用设计器创建了一个文件上传器,并将文件上传到512mb,并将其上传到解决方案内的“文件”文件夹,但我想知道如何使用生成的视频标签更新网页。
这是我想要更改的标签:
<video id="example_video_1" class="video-js vjs-default-skin"
controls preload="auto" width="640" height="264"
poster="http://video-js.zencoder.com/oceans-clip.png"
data-setup='{"example_option":true}'>
<source id="mp4" src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
<source id="webm" src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
<source id="ogg" src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' />
</video>
我的保存方法:
protected void btnUpload_Click(object sender, EventArgs e){
//check to make sure a file is selected
if (FileUpload1.HasFile) {
//create the path to save the file to
string fileName = Path.Combine(Server.MapPath("~/Files"), FileUpload1.FileName);
//save the file to our local path
FileUpload1.SaveAs(fileName);
}
}
编辑:
我现在几乎已经有了解决方案。不知怎的,它没有得到正确的道路。我创建的解决方案:
<script type="text/javascript">
var _strSource = '<ASP:LITERAL runat="server" id="litSource" />';
window.onload = function ()
{
if ( _strSource != "" ) {
alert( _strSource );
var video = document.getElementById( 'objVideo' );
var sources = video.getElementsByTagName( 'source' );
alert( sources[0].src );
sources[0].src = _strSource;
video.load();
video.play();
}
}
</script>
在服务器端:
protected void btnUpload_Click(object sender, EventArgs e){
//check to make sure a file is selected
if (FileUpload1.HasFile) {
//create the path to save the file to
string fileName = Path.Combine(Server.MapPath("/Files"), FileUpload1.FileName);
//save the file to our local path
FileUpload1.SaveAs(fileName);
this.litSource.Text = fileName.Replace("\\", "\\\\");
}
}
我还在web.config中添加了这个:
<staticContent>
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
<mimeMap fileExtension=".ogg" mimeType="video/ogg" />
<mimeMap fileExtension=".webm" mimeType="video/webm" />
<mimeMap fileExtension=".m4v" mimeType="video/m4v" />
</staticContent>
它现在将路径更改为(在我的情况下)C:\ Projects \ FileUploadTest \ FileUploadTest \ Files \ c4b3ae2189ea.ogg。这是文件上传到的实际路径,但浏览器无法访问此路径。有没有人知道如何实现这个目标?
答案 0 :(得分:1)
您需要创建一个可以通过浏览器访问的网址,例如,如果您将文件上传到c:\www\mysite\uploadfolder
,则必须创建此网址http://mysite/uploadfolder/movieFileName.ogg
答案 1 :(得分:0)
这是一种添加文字
的简单方法<video id="example_video_1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264" poster="http://video-js.zencoder.com/oceans-clip.png" data-setup='{"example_option":true}'>
<asp:Literal ID="ltSources" runat="server"></asp:Literal>
</video>
并在您的按钮事件中
protected void Button1_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
string mp4Url = "http://video-js.zencoder.com/oceans-clip.mp4";
string webmUrl = "http://video-js.zencoder.com/oceans-clip.webm";
string oggUrl = "http://video-js.zencoder.com/oceans-clip.ogv";
sb.AppendFormat("<source id=\"mp4\" src=\"{0}\" type='video/mp4' />", mp4Url);
sb.AppendFormat("<source id=\"webm\" src=\"{0}\" type='video/webm' />", webmUrl);
sb.AppendFormat("<source id=\"ogg\" src=\"{0}\" type='video/ogg' />", oggUrl);
ltSources.Text = sb.ToString();
}
最好是让用户控制它
答案 2 :(得分:0)
显然,对于Flash后备,你不能。它确实可以在Chrome等浏览器中使用。关于时间Flash在所有浏览器中都被弃用;)。