diff --git a/mythtv/libs/libmythtv/recorders/cetonrtsp.cpp b/mythtv/libs/libmythtv/recorders/cetonrtsp.cpp
index 4d59e0d..0d39579 100644
--- a/mythtv/libs/libmythtv/recorders/cetonrtsp.cpp
+++ b/mythtv/libs/libmythtv/recorders/cetonrtsp.cpp
@@ -25,7 +25,8 @@ CetonRTSP::CetonRTSP(const QString &ip, uint tuner, ushort port) :
     _sessionId("0"),
     _responseCode(-1),
     _timeout(60),
-    _timer(0)
+    _timer(0),
+    _doKeepAlive(false) // Ceton doesn't appear to support Keep Alive
 {
     _requestUrl.setHost(ip);
     _requestUrl.setPort(port);
@@ -40,7 +41,8 @@ CetonRTSP::CetonRTSP(const QUrl &url) :
     _requestUrl(url),
     _responseCode(-1),
     _timeout(60),
-    _timer(0)
+    _timer(0),
+    _doKeepAlive(true)
 {
     if (url.port() < 0)
     {
@@ -479,7 +481,7 @@ bool CetonRTSP::Teardown(void)
 
 void CetonRTSP::StartKeepAlive()
 {
-    if (_timer)
+    if (_timer || !_doKeepAlive)
         return;
     int timeout = std::max(_timeout - 5, 5);
     LOG(VB_RECORD, LOG_DEBUG, LOC +
diff --git a/mythtv/libs/libmythtv/recorders/cetonrtsp.h b/mythtv/libs/libmythtv/recorders/cetonrtsp.h
index d76851d..2820832 100644
--- a/mythtv/libs/libmythtv/recorders/cetonrtsp.h
+++ b/mythtv/libs/libmythtv/recorders/cetonrtsp.h
@@ -37,6 +37,7 @@ class CetonRTSP : QObject
     bool Play(void);
     bool Teardown(void);
 
+    void SetKeepAlive(bool keepalive) { _doKeepAlive = keepalive; }
     void StartKeepAlive(void);
     void StopKeepAlive(void);
 
@@ -57,12 +58,13 @@ protected:
     QUrl        _requestUrl;
     QUrl        _controlUrl;
 
-    int                     _responseCode;
-    QString                 _responseMessage;
-    Params                  _responseHeaders;
-    QByteArray              _responseContent;
-    int                     _timeout;
-    int                     _timer;
+    int         _responseCode;
+    QString     _responseMessage;
+    Params      _responseHeaders;
+    QByteArray  _responseContent;
+    int         _timeout;
+    int         _timer;
+    bool        _doKeepAlive;
 
     static QMutex _rtspMutex;
 
diff --git a/mythtv/libs/libmythtv/recorders/cetonstreamhandler.cpp b/mythtv/libs/libmythtv/recorders/cetonstreamhandler.cpp
index a83986b..a347bfd 100644
--- a/mythtv/libs/libmythtv/recorders/cetonstreamhandler.cpp
+++ b/mythtv/libs/libmythtv/recorders/cetonstreamhandler.cpp
@@ -152,6 +152,7 @@ CetonStreamHandler::CetonStreamHandler(const QString &device) :
         .arg(_ip_address).arg(rtspPort).arg(_tuner);
     m_tuning = IPTVTuningData(url, 0, IPTVTuningData::kNone, "", 0, "", 0);
     m_use_rtp_streaming = true;
+    m_doKeepAlive = false; // Ceton doesn't support KeepAlive
 
     _valid = true;
 
diff --git a/mythtv/libs/libmythtv/recorders/iptvstreamhandler.cpp b/mythtv/libs/libmythtv/recorders/iptvstreamhandler.cpp
index cab9be2..1692b31 100644
--- a/mythtv/libs/libmythtv/recorders/iptvstreamhandler.cpp
+++ b/mythtv/libs/libmythtv/recorders/iptvstreamhandler.cpp
@@ -111,7 +111,8 @@ IPTVStreamHandler::IPTVStreamHandler(const IPTVTuningData &tuning) :
     m_buffer(NULL),
     m_rtsp_rtp_port(0),
     m_rtsp_rtcp_port(0),
-    m_rtsp_ssrc(0)
+    m_rtsp_ssrc(0),
+    m_doKeepAlive(true)
 {
     memset(m_sockets, 0, sizeof(m_sockets));
     memset(m_read_helpers, 0, sizeof(m_read_helpers));
@@ -134,6 +135,7 @@ void IPTVStreamHandler::run(void)
     if (m_tuning.GetURL(0).scheme().toLower() == "rtsp")
     {
         rtsp = new CetonRTSP(m_tuning.GetURL(0));
+        rtsp->SetKeepAlive(m_doKeepAlive);
 
         // Check RTSP capabilities
         QStringList options;
@@ -299,7 +301,7 @@ void IPTVStreamHandler::run(void)
                 "Starting recording (RTP initialization failed). Aborting.");
             error = true;
         }
-        if (m_rtsp_rtcp_port > 0)
+        if (m_rtsp_rtcp_port > 0 && m_doKeepAlive)
         {
             m_write_helper->SendRTCPReport();
             m_write_helper->StartRTCPRR();
diff --git a/mythtv/libs/libmythtv/recorders/iptvstreamhandler.h b/mythtv/libs/libmythtv/recorders/iptvstreamhandler.h
index 27f1a05..98842fe 100644
--- a/mythtv/libs/libmythtv/recorders/iptvstreamhandler.h
+++ b/mythtv/libs/libmythtv/recorders/iptvstreamhandler.h
@@ -89,6 +89,10 @@ class IPTVStreamHandler : public StreamHandler
 
   protected:
     IPTVStreamHandler(const IPTVTuningData &tuning);
+    virtual void SetKeepAlive(bool keepalive)
+    {
+        m_doKeepAlive = keepalive;
+    }
 
     virtual void run(void); // MThread
 
@@ -105,6 +109,8 @@ class IPTVStreamHandler : public StreamHandler
     uint32_t m_rtsp_ssrc;
     QHostAddress m_rtcp_dest;
 
+    bool m_doKeepAlive;
+
     // for implementing Get & Return
     static QMutex                            s_handlers_lock;
     static QMap<QString, IPTVStreamHandler*> s_handlers;
