1
1

QuickTimeDetector.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using System.Linq;
  4. using System.Reflection;
  5. using Masuit.Tools.Mime;
  6. namespace Masuit.Tools.Files.FileDetector.Detectors;
  7. [FormatCategory(FormatCategory.Video)]
  8. [FormatCategory(FormatCategory.Audio)]
  9. internal class QuickTimeDetector : AbstractISOBaseMediaFileDetailDetector
  10. {
  11. public override string Extension => "mov";
  12. protected override IEnumerable<string> NextSignature
  13. {
  14. get
  15. {
  16. yield return "qt";
  17. }
  18. }
  19. public override string MimeType => new MimeMapper().GetMimeFromExtension("." + Extension);
  20. public override List<FormatCategory> FormatCategories => GetType().GetCustomAttributes<FormatCategoryAttribute>().Select(a => a.Category).ToList();
  21. public override string ToString() => "QuickTime(MOV) Detector";
  22. public override bool Detect(Stream stream)
  23. {
  24. if (!base.Detect(stream))
  25. {
  26. stream.Position = 4;
  27. byte[] buffer = new byte[4];
  28. stream.Read(buffer, 0, 4);
  29. return buffer[0] == 0x6D && buffer[1] == 0x6F && buffer[2] == 0x6F && buffer[3] == 0x76;
  30. }
  31. return true;
  32. }
  33. }