VttWriter.cs 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System;
  2. using System.IO;
  3. using System.Threading;
  4. namespace MediaBrowser.MediaEncoding.Subtitles
  5. {
  6. public class VttWriter : ISubtitleWriter
  7. {
  8. public void Write(SubtitleTrackInfo info, Stream stream, CancellationToken cancellationToken)
  9. {
  10. var writer = new StreamWriter(stream);
  11. try
  12. {
  13. writer.WriteLine("WEBVTT");
  14. writer.WriteLine(string.Empty);
  15. foreach (var trackEvent in info.TrackEvents)
  16. {
  17. cancellationToken.ThrowIfCancellationRequested();
  18. writer.WriteLine(@"{0:hh\:mm\:ss\.fff} --> {1:hh\:mm\:ss\.fff}", TimeSpan.FromTicks(trackEvent.StartPositionTicks), TimeSpan.FromTicks(trackEvent.EndPositionTicks));
  19. writer.WriteLine(trackEvent.Text.Replace("<br />", "\r\n"));
  20. writer.WriteLine(string.Empty);
  21. }
  22. }
  23. catch
  24. {
  25. writer.Dispose();
  26. throw;
  27. }
  28. }
  29. }
  30. }