I am implementing a software related to trimming a audio file using users specified markers for example if a audio file plays for 1 minute and user wants to trim that file from 20 second to 40 second and save it has a new file. Code samples will be appreciated.
Thanks in advance.
Thanks all for your reply but i got the solution from Mark Heath NAudio. Here's the sample Hope it helps :)
public static class WavFileUtils
{
public static void TrimWavFile(string inPath, string outPath, TimeSpan cutFromStart, TimeSpan cutFromEnd)
{
using (WaveFileReader reader = new WaveFileReader(inPath))
{
using (WaveFileWriter writer = new WaveFileWriter(outPath, reader.WaveFormat))
{
int bytesPerMillisecond = reader.WaveFormat.AverageBytesPerSecond / 1000;
int startPos = (int)cutFromStart.TotalMilliseconds * bytesPerMillisecond;
startPos = startPos - startPos % reader.WaveFormat.BlockAlign;
int endBytes = (int)cutFromEnd.TotalMilliseconds * bytesPerMillisecond;
endBytes = endBytes - endBytes % reader.WaveFormat.BlockAlign;
int endPos = (int)reader.Length - endBytes;
TrimWavFile(reader, writer, startPos, endPos);
}
}
}
private static void TrimWavFile(WaveFileReader reader, WaveFileWriter writer, int startPos, int endPos)
{
reader.Position = startPos;
byte[] buffer = new byte[1024];
while (reader.Position < endPos)
{
int bytesRequired = (int)(endPos - reader.Position);
if (bytesRequired > 0)
{
int bytesToRead = Math.Min(bytesRequired, buffer.Length);
int bytesRead = reader.Read(buffer, 0, bytesToRead);
if (bytesRead > 0)
{
writer.WriteData(buffer, 0, bytesRead);
}
}
}
}
}
ffmpeg -ss 00:00:30.0 -t 00:00:10.0 -i input.mp3 -acodec copy output.mp3
This can be achieved using Ffmpeg .
So download ffmpeg for windows and Start FFmpeg as a Process
.
PS : -ss Pun Offset -t Length ,on the Example will trim the Audio File from 30 Sec to 40 Sec (10 Seconds Length)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With