private void ExtractSegment(Track track) { if (!track.isAudio) return; var stream = File.OpenRead(track.file); if (track.length < 0) track.length = (int)(stream.Length - track.offsetInFile); var buffer = new byte[track.length]; stream.Seek(track.offsetInFile, SeekOrigin.Begin); stream.Read(buffer, 0, track.length); var outdir = Path.GetDirectoryName(track.file) + "\\" + Path.GetFileNameWithoutExtension(track.file); Directory.CreateDirectory(outdir); var outPath = outdir + "\\track" + track.tracknumber.ToString() + ".raw"; var outOgg = outdir + "\\track" + track.tracknumber.ToString() + ".ogg"; if (File.Exists(outPath)) File.Delete(outPath); if (File.Exists(outOgg)) File.Delete(outOgg); File.WriteAllBytes(outPath, buffer); var p = new Process(); p.StartInfo = new ProcessStartInfo( Path.GetDirectoryName(Application.ExecutablePath) + "\\bin\\ffmpeg.exe", "-f s16le -ar 44100 -ac 2 -i \"" + outPath + "\" -aq 8 \"" + outOgg + "\"" ); Log("Encoding file " + outOgg + "\n"); p.StartSilent(app); File.Delete(outPath); }
private void addSegment(string file, string trackNum, int trackOffset, int padding, int sectorSize, bool isAudio) { if (file != "" && trackNum != "") { var t = new Track(); t.offsetInSectors = trackOffset; t.tracknumber = trackNum; t.file = file; t.sectorSize = sectorSize; t.isAudio = isAudio; t.preGap = padding; tracks.Add(t); } }