diff --git a/src/media/media_recorder.cpp b/src/media/media_recorder.cpp
index 34c8eada2eaa6ecf578779720fdedb3ac2f02dbe..472555f895d634436ba47fc0f78887dfc7735e8e 100644
--- a/src/media/media_recorder.cpp
+++ b/src/media/media_recorder.cpp
@@ -200,6 +200,8 @@ MediaRecorder::addStream(bool isVideo, bool fromPeer, MediaStream ms)
         ms.name = (fromPeer ? "a:1" : "a:2");
         ++nbReceivedAudioStreams_;
     }
+    // print index instead of count
+    RING_DBG() << "Recorder input #" << (nbReceivedAudioStreams_ + nbReceivedVideoStreams_ - 1) << ": " << ms;
     streams_[isVideo][fromPeer] = ms;
 
     // wait until all streams are ready before writing to the file
@@ -365,12 +367,7 @@ MediaRecorder::setupVideoOutput()
     if (encoderStream.format < 0)
         return encoderStream;
 
-    RING_DBG() << "Video recorder '"
-        << (encoderStream.name.empty() ? "(null)" : encoderStream.name)
-        << "' properties: "
-        << av_get_pix_fmt_name(static_cast<AVPixelFormat>(encoderStream.format)) << ", "
-        << encoderStream.width << "x" << encoderStream.height << ", "
-        << encoderStream.frameRate << " fps";
+    RING_DBG() << "Recorder output: " << encoderStream;
     return encoderStream;
 }
 
@@ -437,12 +434,7 @@ MediaRecorder::setupAudioOutput()
     if (encoderStream.format < 0)
         return encoderStream;
 
-    RING_DBG() << "Audio recorder '"
-        << (encoderStream.name.empty() ? "(null)" : encoderStream.name)
-        << "' properties: "
-        << av_get_sample_fmt_name(static_cast<AVSampleFormat>(encoderStream.format)) << ", "
-        << encoderStream.sampleRate << " Hz, "
-        << encoderStream.nbChannels << " channels";
+    RING_DBG() << "Recorder output: " << encoderStream;
     return encoderStream;
 }
 
diff --git a/src/media/media_stream.h b/src/media/media_stream.h
index 5e9fffb402bc972ebbab229981138d362a2d942a..1475d8882bc77701f5baf1a048eb5a398454c6df 100644
--- a/src/media/media_stream.h
+++ b/src/media/media_stream.h
@@ -96,4 +96,22 @@ struct MediaStream {
     }
 };
 
+inline std::ostream& operator<<(std::ostream& os, const MediaStream& ms)
+{
+    if (ms.isVideo) {
+        os << (ms.name.empty() ? "(null)" : ms.name) << ": "
+            << av_get_pix_fmt_name(static_cast<AVPixelFormat>(ms.format)) << " video, "
+            << ms.width << "x" << ms.height << ", "
+            << ms.frameRate << " fps (" << ms.timeBase << ")";
+    } else {
+        os << (ms.name.empty() ? "(null)" : ms.name) << ": "
+            << av_get_sample_fmt_name(static_cast<AVSampleFormat>(ms.format)) << " audio, "
+            << ms.nbChannels << " channel(s), "
+            << ms.sampleRate << " Hz (" << ms.timeBase << ")";
+    }
+    if (ms.firstTimestamp > 0)
+        os << ", start: " << ms.firstTimestamp;
+    return os;
+}
+
 }; // namespace ring