diff --git a/av/audio/codeccontext.pyx b/av/audio/codeccontext.pyx
index c81a49dd8b30f928bd9c5732145999cab488a003..e12a7dec3a09cd4b58e99a82ab80dce760d82fbf 100644
--- a/av/audio/codeccontext.pyx
+++ b/av/audio/codeccontext.pyx
@@ -1,5 +1,6 @@
 cimport libav as lib
 
+from av import deprecation
 from av.audio.format cimport AudioFormat, get_audio_format
 from av.audio.frame cimport AudioFrame, alloc_audio_frame
 from av.audio.layout cimport AudioLayout, get_audio_layout
@@ -75,13 +76,7 @@ cdef class AudioCodecContext(CodecContext):
         def __set__(self, int value):
             self.ptr.sample_rate = value
 
-    property rate:
-        """Another name for :attr:`sample_rate`."""
-        def __get__(self):
-            return self.sample_rate
-
-        def __set__(self, value):
-            self.sample_rate = value
+    rate = deprecation.renamed_attr("sample_rate")
 
     # TODO: Integrate into AudioLayout.
     property channels:
diff --git a/av/audio/frame.pyx b/av/audio/frame.pyx
index 97de3cc535a9398656d063c52bde792d0dcc2e37..528862f4409f1df27d598e764702a54b786f4df0 100644
--- a/av/audio/frame.pyx
+++ b/av/audio/frame.pyx
@@ -1,3 +1,4 @@
+from av import deprecation
 from av.audio.format cimport get_audio_format
 from av.audio.layout cimport get_audio_layout
 from av.audio.plane cimport AudioPlane
@@ -165,13 +166,7 @@ cdef class AudioFrame(Frame):
         def __set__(self, value):
             self.ptr.sample_rate = value
 
-    property rate:
-        """Another name for :attr:`sample_rate`."""
-        def __get__(self):
-            return self.ptr.sample_rate
-
-        def __set__(self, value):
-            self.ptr.sample_rate = value
+    rate = deprecation.renamed_attr("sample_rate")
 
     def to_ndarray(self, **kwargs):
         """Get a numpy array of this frame.
diff --git a/av/audio/resampler.pyx b/av/audio/resampler.pyx
index b1c6c0aad27ce534e922c4c4074a73ce9e124769..0669180cdcc666d5fe7eac3ecba26e481416518e 100644
--- a/av/audio/resampler.pyx
+++ b/av/audio/resampler.pyx
@@ -94,7 +94,7 @@ cdef class AudioResampler(object):
             if (
                 frame.format.sample_fmt != self.template.format.sample_fmt or
                 frame.layout.layout != self.template.layout.layout or
-                frame.sample_rate != self.template.rate
+                frame.sample_rate != self.template.sample_rate
             ):
                 raise ValueError('Frame does not match AudioResampler setup.')
 
diff --git a/av/audio/stream.pyx b/av/audio/stream.pyx
index 0a4f1523c50fad747b44679daf8846437514d217..8acbf93491f5591192aeda5d4c97b3a3c28f847a 100644
--- a/av/audio/stream.pyx
+++ b/av/audio/stream.pyx
@@ -5,7 +5,7 @@ cdef class AudioStream(Stream):
             self.__class__.__name__,
             self.index,
             self.name,
-            self.rate,
+            self.sample_rate,
             self.layout.name,
             self.format.name if self.format else None,
             id(self),
diff --git a/av/stream.pyx b/av/stream.pyx
index 5a4b5b436ebce1fd1d664faf5a8eeff1af401186..00958545c19a18fa0a73c56473d338bd786f7c83 100644
--- a/av/stream.pyx
+++ b/av/stream.pyx
@@ -219,7 +219,7 @@ cdef class Stream(object):
         The average frame rate of this video stream.
 
         This is calculated when the file is opened by looking at the first
-        few frames and averaging their rate.
+        few frames and averaging their rate. See :ffmpeg:`AVStream.avg_frame_rate`
 
         :type: :class:`~fractions.Fraction` or ``None``
 
diff --git a/av/video/codeccontext.pyx b/av/video/codeccontext.pyx
index 8dac3b3fede79816fafbd4e7d860aeaa034629db..2629b32ecaa395c270e803809abf4ae63f6fadbb 100644
--- a/av/video/codeccontext.pyx
+++ b/av/video/codeccontext.pyx
@@ -1,6 +1,7 @@
 from libc.stdint cimport int64_t
 cimport libav as lib
 
+from av import deprecation
 from av.codec.context cimport CodecContext
 from av.error cimport err_check
 from av.frame cimport Frame
@@ -118,13 +119,7 @@ cdef class VideoCodecContext(CodecContext):
         def __set__(self, value):
             to_avrational(value, &self.ptr.framerate)
 
-    property rate:
-        """Another name for :attr:`framerate`."""
-        def __get__(self):
-            return self.framerate
-
-        def __set__(self, value):
-            self.framerate = value
+    rate = deprecation.renamed_attr("framerate")
 
     property gop_size:
         def __get__(self):