2017-08-15 44 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();