首页 > 解决方案 > 如何使用 mediaplayer .c# 播放音频的字节数组

问题描述

我将音频文件上传到我的 sqlserver,我想从中检索并使用 mediaplayer 播放

错误是:无法将类型“字节 []”隐式转换为“字符串”测试

 byte[] sound = null;
 SqlCommand cmd = new SqlCommand("select music from music where ID=1", con);
        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            sound = (byte[])dr["music"];
        }
        axWindowsMediaPlayer1.URL = sound;

标签: c#media-player

解决方案


假设您的音乐列是 (VARBINARY(MAX)) 类型,这里是一个工作代码:

        using (var connection = new SqlConnection(conn))
        {
            connection.Open();
            using (var cmd = new SqlCommand("select music from music where ID=1", connection))
            {
                using (SqlDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess))
                {
                    if (dr.FieldCount > 0)
                    {
                        while (dr.Read())
                        {
                            var columnIndex = dr.GetOrdinal("music");
                            var stream = dr.GetSqlBinary(columnIndex);                                
                            var memStream = new MemoryStream(stream.Value);
                            var mediaPlayer = new MediaPlayer();
                            IRandomAccessStream randomAccessStream = memStream.AsRandomAccessStream();
                            mediaPlayer.Source = MediaSource.CreateFromStream(randomAccessStream, "audio/mpeg");
                            mediaPlayer.Play();
                        }
                    }
                }
            }
        }

推荐阅读