diff --git a/lib/media_time/src/media_time.rs b/lib/media_time/src/media_time.rs
index e0c1cb0be8efb4f1fcb923ede63cffbabe555f64..0b99be0737afe84f7c85d65c9454f48cbcff508c 100644
--- a/lib/media_time/src/media_time.rs
+++ b/lib/media_time/src/media_time.rs
@@ -46,6 +46,21 @@ impl MediaTime {
     pub fn seconds(&self) -> i64 {
         self.0.whole_seconds()
     }
+
+    #[inline(always)]
+    pub fn milliseconds(&self) -> i128 {
+        self.0.whole_milliseconds()
+    }
+
+    #[inline(always)]
+    pub fn microseconds(&self) -> i128 {
+        self.0.whole_microseconds()
+    }
+
+    #[inline(always)]
+    pub fn nanoseconds(&self) -> i128 {
+        self.0.whole_nanoseconds()
+    }
 }
 
 impl std::fmt::Display for MediaTime {
diff --git a/lib/media_time/src/tests.rs b/lib/media_time/src/tests.rs
index 2837a577fe20f37959959d278a283897be0e225b..0aee5d714ae20c428d27c429a98e29fe336821bb 100644
--- a/lib/media_time/src/tests.rs
+++ b/lib/media_time/src/tests.rs
@@ -1,4 +1,23 @@
+use crate::MediaTime;
+use fraction::Fraction;
+
 #[test]
-fn it_works() {
-    assert_eq!(2 + 2, 4);
+fn from_millis_works() {
+    assert_eq!(MediaTime::from_millis(0).seconds(), 0);
+    assert_eq!(MediaTime::from_millis(1357).seconds(), 1);
+    assert_eq!(MediaTime::from_millis(1357).milliseconds(), 1357);
+}
+
+#[test]
+fn from_seconds_works() {
+    assert_eq!(MediaTime::from_seconds(0).seconds(), 0);
+    assert_eq!(MediaTime::from_seconds(1357).seconds(), 1357);
+    assert_eq!(MediaTime::from_seconds(1357).milliseconds(), 1357000);
+}
+
+#[test]
+fn from_rational_works() {
+    assert_eq!(MediaTime::from_rational(0, &Fraction::new(1u64, 1u64)).unwrap().seconds(), 0);
+    assert_eq!(MediaTime::from_rational(1357, &Fraction::new(1u64, 1u64)).unwrap().seconds(), 1357);
+    assert_eq!(MediaTime::from_rational(30, &Fraction::new(1u64, 3u64)).unwrap().seconds(), 10);
 }