2017-08-15 16 views
1

由于某些原因,我必须将Realm Db中录制的音频存储为Byte数组,请参阅下面的代码。无法读取realm db中的音频二进制数据与AVPlayer一起玩

var byteArray = NSData.FromUrl(audioFilePath).ToArray(); 

我将这个byteArray保存到db。

当我尝试从db中获取音频后播放相同的音频时我遇到mediaFile始终为空的问题。

var nsdata = NSData.FromArray(byteArray); 

var mstring = NSString.FromData(nsdata,NSStringEncoding.ASCIIStringEncoding); //tried all encoding options from enum available) 
mediaFile = NSUrl.FromString(mstring); // mediaFile always remains null 
this.player = new AVPlayer(mediaFile); 
this.player.Play(); 

以上任何帮助将不胜感激。

+0

你检查,这个过程的每一步返回了您预期的数据? – Jason

+0

是的Jason,一切都很好,我将byte []存储到db,将byte []转换为nsdata。 如果我使用 NSUrl.FromFileName(mstring); 我喜欢这个 file:/// Users/saket/Library/Developer/CoreSimulator/Devices/749113E7-16ED-48E3-8653-047AAF1DAC8F/data/Containers/Bundle/Application/A08AF3DB-5D85-4315-8F9D - AE3C8A04799E/Wije.app/y%CC%88u%CC%80P%60%01%60 这仍然没有播放 –

+0

任何音频文件保存在领域,并试图读取后面的例子可以帮助 –

回答

1

实际上,在从数据库读取数据后,我应该将其写入文件位置,并且指向该位置的URL是播放MP3所需的。

全面完成代码

   var nsdata = NSData.FromArray(byteArray); 
      string fileName = string.Format("Myfile{0}.mp4", "saket"); 
      var urlPath = Path.Combine(Path.GetTempPath(), fileName); 

      Console.WriteLine(urlPath); 
      var audioFilePath = NSUrl.FromFilename(urlPath); 
      NSError err; 
      nsdata.Save(audioFilePath, false, out err); 

     // var url = NSUrl.FromFilename(audioFilePath); 

      this.player = new AVPlayer(audioFilePath); 
      this.player.Play();