在SQL Server数据库中保存音频和视频文件

时间:2011-09-09 04:48:45

标签: asp.net sql-server c#-3.0

如何在SQL Server数据库中保存和检索音频和视频文件?

4 个答案:

答案 0 :(得分:2)

天真的方法是使用BLOB列并将整个内容读入byte [],然后将byte []写回客户端。问题是它在ASP.Net过程中消耗了大量内存。

更好的方法是使用流语义,请参阅以下两篇文章:

这些文章指的是图片,但您可以按原样使用代码来存储任何其他形式的媒体,包括音频和视频。虽然代码是针对ASP.Net MVC的,但是从ASP.Net表单中也可以使用从SQL Server流式传输大型文件的概念。

我不是说您应该或不应该使用SQL Server作为媒体存储。这是一个完全不同的讨论。

答案 1 :(得分:1)

参考How to Store audio in Sql and retrieve for play,您将了解如何将音频文件存储在数据库中。对视频也采用相同的方式。

答案 2 :(得分:0)

    Public Sub InsertAudioDataInTable(TableName, TableMapingName, TextName,_ 
    LoopStart, LoopEnd, Panel, PathOnDisk)

    Dim SndSourceStream As Stream = New FileStream(PathOnDisk, FileMode.Open, 
    FileAccess.Read)
    Dim BinarySndReader As New BinaryReader(SndSourceStream)
    Dim bytes As Byte() = BinarySndReader.ReadBytes(SndSourceStream.Length)
    strImage = "@Aud" ' Aud mean a feild Audio in database
    '''''''''''''''''''''''''''''''''''''''''''''''' For SQL String
    Dim b = 0
    Dim dataContaner(LoopEnd + 2 - LoopStart) As String
    For a = LoopStart To LoopEnd
        dataContaner(b) = Panel.Controls(TextName & a).Text
        b = b + 1
    Next
    ''''''''''''''
    Dim myCmd As New SqlCommand
    myCmd.Connection = Con
    ''''''''''
    Dim T As String
    '  T.Text = null
    Dim aaa = "INSERT INTO  " & TableName
    Dim bbb = ""
    For i = LoopStart To LoopEnd
        bbb = bbb + "F" & i & ","
    Next
    T = aaa & " (" + bbb & "Aud"
    '  T = T.Remove(T.Length - 1)
    T = T & ")VALUES ("

    Dim ccc = ""
    b = 0
    For a = LoopStart To LoopEnd
        ccc = ccc & "'" & dataContaner(b) & "',"
        b = b + 1
    Next
    T = T + ccc
    myCmd.CommandText = T + strImage & ")"
    myCmd.Parameters.Add(strImage, SqlDbType.Binary).Value = bytes
    myCmd.ExecuteNonQuery()
    ''''''''
End Sub
   Private Sub btSclass_Click(sender As Object, e As EventArgs) Handles btSclass.Click
    If btSclass.Text = "Start Class" Then
        If A7.Text <> "" Then
            GlobalVariableDefault.startTime = DateTime.Now
            A2.Text = GlobalVariableDefault.startTime.ToString("hh\:mm\:ss")
            GlobalVariableDefault.StID = A7.Text
            Me.Hide()
            FTodayLesson.Show()
            A2.Text = L.Text
            btSclass.Text = "End Class"
            btSclass.BackColor = Color.Red
            If recording = False Then
                mciSendString("open new Type waveaudio Alias recsound", "", 0, 0)
                mciSendString("record recsound", "", 0, 0)
                recording = True
            End If
        Else
            MyMessage("Select a student name from list")
        End If
    ElseIf btSclass.Text = "End Class" Then
        mciSendString("save recsound " & Filez, "", 0, 0)
        mciSendString("close recsound ", "", 0, 0)
        recording = False
        FunConnection(DatabaseName_Audio)
        InsertAudioDataInTable("RecAudio", "InsertAdio", "A", 1, 8, PShortInfo, "D:\aa\Test.wav")
        btSclass.BackColor = Color.WhiteSmoke
        btSclass.Text = "Start Class"
        MyMessage("Data Save")
        FunConnection(DatabaseName_QurqnServer)
    End If


End Sub

enter image description here

答案 3 :(得分:0)

上面的代码enter image description here中使用的

'''''数据库