diff --git a/src/output/output_rtsp.cpp b/src/output/output_rtsp.cpp
index 0f078452..3be81d8d 100644
--- a/src/output/output_rtsp.cpp
+++ b/src/output/output_rtsp.cpp
@@ -60,6 +60,7 @@ namespace Mist {
     capa["codecs"][0u][1u].append("MP3");
     capa["codecs"][0u][1u].append("AC3");
     capa["codecs"][0u][1u].append("ALAW");
+    capa["codecs"][0u][1u].append("opus");
     
     capa["methods"][0u]["handler"] = "rtsp";
     capa["methods"][0u]["type"] = "rtsp";
@@ -291,7 +292,7 @@ namespace Mist {
           if (!range.empty()) {
             range = range.substr(0, range.find('-'));
             uint64_t targetPos = 1000*atof(range.c_str());
-            if (targetPos){seek(targetPos);}
+            if (targetPos || myMeta.vod){seek(targetPos);}
           }
         }
         std::stringstream rangeStr;
@@ -589,6 +590,13 @@ namespace Mist {
       bufferLivePacket(nextPack);
       return;
     }
+    if (myMeta.tracks[track].codec == "opus"){
+      char * pl = pkt.getPayload();
+      DTSC::Packet nextPack;
+      nextPack.genericFill((pkt.getTimeStamp() - tracks[track].firstTime + 1) / ((double)myMeta.tracks[track].rate / 1000.0), 0, track, pl, pkt.getPayloadSize(), 0, false);
+      bufferLivePacket(nextPack);
+      return;
+    }
     if (myMeta.tracks[track].codec == "AAC"){
       //assume AAC packets are single AU units
       /// \todo Support other input than single AU units
@@ -849,6 +857,10 @@ namespace Mist {
           }
         }
         if (trCodec == "H264"){thisTrack->codec = "H264";}
+        if (trCodec == "OPUS"){
+          thisTrack->codec = "opus";
+          thisTrack->init = std::string("OpusHead\001\002\170\000\200\273\000\000\000\000\000", 19);
+        }
         if (trCodec == "PCMA"){thisTrack->codec = "ALAW";}
         if (trCodec == "MPEG4-GENERIC"){thisTrack->codec = "AAC";}
         INFO_MSG("Incoming track %s", thisTrack->getIdentifier().c_str());
diff --git a/src/output/output_rtsp.h b/src/output/output_rtsp.h
index acf79611..b31bfb7e 100644
--- a/src/output/output_rtsp.h
+++ b/src/output/output_rtsp.h
@@ -96,6 +96,10 @@ namespace Mist {
             mediaDesc << "a=rtpmap:101 PCMA/" << trk.rate <<  "/" << trk.channels << "\r\n";
           }
           mediaDesc << "a=control:track" << trk.trackID << "\r\n";
+        }else if ( trk.codec == "opus") {
+          mediaDesc << "m=audio 0 RTP/AVP 102" << "\r\n"
+          "a=rtpmap:102 opus/" << trk.rate << "/" << trk.channels << "\r\n"
+          "a=control:track" << trk.trackID << "\r\n";
         }
         return mediaDesc.str();
       }
@@ -115,6 +119,8 @@ namespace Mist {
           }else{
             pack = RTP::Packet(101, 1, 0, SSrc);
           }
+        }else if(trk.codec == "opus"){
+          pack = RTP::Packet(102, 1, 0, SSrc);
         }else{
           ERROR_MSG("Unsupported codec %s for RTSP on track %u", trk.codec.c_str(), trk.trackID);
           return false;