簡體   English   中英

使用FileStream將mp3文件合並為一個

[英]Merging mp3 files into one using FileStream

我正在使用以下非常簡單的代碼使用FileStream合並6個mp3文件,它看起來非常簡單。 雖然合並是可以的,但是當我檢查新生成的文件的持續時間時,它比原始的6個mp3文件短了6秒。 下面,我還粘貼了帶有單個文件持續時間的代碼。

string dirPath = @"C:\downloads\114\";
FileInfo[] files = new DirectoryInfo(dirPath).GetFiles(); // 6 audio files to merge
foreach (var file in files)
{
   using (var f = file.Open(FileMode.Open))
   {
       byte[] bytes = new byte[f.Length];
       using (FileStream isfs = new FileStream(dirPath + "114.mp3", FileMode.OpenOrCreate))
       {
           isfs.Seek(0, SeekOrigin.End); //go to the last byte
           while (f.Read(bytes, 0, bytes.Length) > 0)
           {
               isfs.Write(bytes, 0, bytes.Length);
               isfs.Flush();
            }
       }
    }
}

文件持續時間(以秒為單位):

#File      #Duration in Seconds
114000.mp3  6.64 sec
114001.mp3  5.935 sec
114002.mp3  4.864 sec
114003.mp3  4.838 sec
114004.mp3  7.58 sec
114005.mp3  7.554 sec
114006.mp3  6.431 sec

總持續時間是:43.842秒

#The new Generated File
114.mp3         37.198 seconds

問題:

  1. 為什么新生成的文件持續時間不等於原始的6個文件?
  2. 如何使新文件的時長與原始文件相同或相等?

只需提及:新生成的文件和6個文件的Length是相同的! 謝謝!

1)您不是在合並mp3文件,而是在合並二進制文件。 您必須考慮標頭等,否則合並將無法進行...(在您的情況下,文件中間有更多標頭,並且不能保證文件之間的比特率相同)

2)看看什么是合並mp3文件的最佳方法? 在WinForm應用程序中播放MP3文件也可能對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM