[英]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
問題:
只需提及:新生成的文件和6個文件的Length
是相同的! 謝謝!
1)您不是在合並mp3文件,而是在合並二進制文件。 您必須考慮標頭等,否則合並將無法進行...(在您的情況下,文件中間有更多標頭,並且不能保證文件之間的比特率相同)
2)看看什么是合並mp3文件的最佳方法? , 在WinForm應用程序中播放MP3文件也可能對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.