Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何从SQL数据库中传输.flv文件_Asp.net_Sql_Jwplayer_Streaming Flv Video - Fatal编程技术网

Asp.net 如何从SQL数据库中传输.flv文件

Asp.net 如何从SQL数据库中传输.flv文件,asp.net,sql,jwplayer,streaming-flv-video,Asp.net,Sql,Jwplayer,Streaming Flv Video,我想将.flv文件存储在数据库中,而不是文件系统中 这就是我现在能做的: 使用ffmpeg成功地将.wmv和.mpeg转换为.flv。 将图像存储在SQL Server中,并使用httphandler在我的页面上显示它们。 与.avi和.mpeg视频相同。(如果用户可以查看,则由用户的软件决定) 如果文件位于文件系统而不是数据库中,则在浏览器中播放.flv文件 我不能做的是: 直接从数据库将.flv视频流到JW播放器。(存储为二进制数据) 我已经在网上搜索了两天了,但都没法用。但感觉好像我就快到

我想将.flv文件存储在数据库中,而不是文件系统中

这就是我现在能做的:
使用ffmpeg成功地将.wmv和.mpeg转换为.flv。
将图像存储在SQL Server中,并使用httphandler在我的页面上显示它们。
与.avi和.mpeg视频相同。(如果用户可以查看,则由用户的软件决定)
如果文件位于文件系统而不是数据库中,则在浏览器中播放.flv文件

我不能做的是:
直接从数据库将.flv视频流到JW播放器。(存储为二进制数据)

我已经在网上搜索了两天了,但都没法用。但感觉好像我就快到了。JW播放器打开并开始“缓冲”,但什么也没发生

我知道没有简单的答案,但是如果有人以前做过,或者类似的事情,我想知道你是怎么做的。我觉得我有太多的代码发布在这里


提前谢谢

如果您使用的是SQL Server 2008,您可以使用它来允许文件由数据库管理,但仍然允许您访问数据库。

不确定确切地说如何直接从数据库获取“流”,但将JW播放器的源“文件”设置为“ServeFLV.aspx?id=123”是否有效,让ServeFLV.aspx从数据库中检索字节,并将它们写入响应,而不加标记?

我让它工作了,但我不知道它的效率有多高。在连接、效率、负载等方面,从文件系统流式传输比从数据库流式传输更好吗。 我可以在这上面用一些指针

我在这里使用的是JW播放器,因此使用了“swfobject.js”和“Player.swf”

httpHandler:

javascript
该函数将播放器添加到
,并可在用户单击按钮时调用

<script type='text/javascript' src='swfobject.js'></script>
<script type="text/javascript" language="javascript">
function vid() {
  var s1 = new SWFObject('player.swf', 'player1', '480', '270', '9');
  s1.addParam('allowfullscreen', 'true');
  s1.addParam('allowscriptaccess', 'always');
  s1.addVariable('file', encodeURIComponent('ViewFilm.ashx?id=10'));
  s1.addVariable('type', 'video');
  s1.write(document.getElementById("video1"));
}
</script>

函数vid(){
变量s1=新的SWFObject('player.swf'、'player1'、'480'、'270'、'9');
s1.addParam('allowfullscreen','true');
s1.addParam('allowscriptaccess','always');
s1.addVariable('file',encodeURIComponent('ViewFilm.ashx?id=10');
s1.addVariable('type','video');
s1.写入(document.getElementById(“video1”);
}

+1个非常有趣的问题您是否会发布剪报或讨论当.flv在文件系统上时您是如何对其进行流式处理的?只需在我的回答中使用代码,但使用FileStream()而不是SqlDataReader(),我认为您接近正确答案。不要使用包含所有相关页面生命周期的aspx文件,而是使用ashx处理程序。它更简单、更快,并且专为这种类型的事情而构建。
试试看。。。catch
当前仅丢弃信息,应该删除,因为允许错误传播将提供更多信息。2.应将
using
语句用于SqlConnection、SqlCommand和SqlDataReader实例,以确保即使抛出异常,也始终处理(关闭)所有内容。3.您当前正在将整个文件读取到内存中,这将无法扩展;为了扩展,您可以在命令上使用
SequentialAccess
,然后重复
GetBytes
从读卡器到缓冲区和
BinaryWrite
到响应。我无法实现这一点,因此我将其作为另一个问题发布:在第1点和第2点上更新。顺序存取仍然是一个谜。
<script type='text/javascript' src='swfobject.js'></script>
<script type="text/javascript" language="javascript">
function vid() {
  var s1 = new SWFObject('player.swf', 'player1', '480', '270', '9');
  s1.addParam('allowfullscreen', 'true');
  s1.addParam('allowscriptaccess', 'always');
  s1.addVariable('file', encodeURIComponent('ViewFilm.ashx?id=10'));
  s1.addVariable('type', 'video');
  s1.write(document.getElementById("video1"));
}
</script>