diff --git a/mythtv/libs/libmythtv/tv_play.cpp b/mythtv/libs/libmythtv/tv_play.cpp
index ea0aa806d59..0ad00a335ba 100644
--- a/mythtv/libs/libmythtv/tv_play.cpp
+++ b/mythtv/libs/libmythtv/tv_play.cpp
@@ -409,6 +409,7 @@ bool TV::StartTV(ProgramInfo *tvrec, uint flags,
                 startSysEventSent = true;
                 startLivetvEventSent = true;
                 gCoreContext->SendSystemEvent("LIVETV_STARTED");
+                usleep(gCoreContext->GetNumSetting("LiveTVWaitMS", 0)*1000);
             }
 
             LOG(VB_PLAYBACK, LOG_DEBUG, LOC + "tv->LiveTV() -- end");
@@ -7479,6 +7480,7 @@ void TV::SwitchInputs(PlayerContext *ctx,
         delete testrec;
     }
 
+    usleep(gCoreContext->GetNumSetting("LiveTVWaitMS", 0)*1000);
     UnpauseLiveTV(ctx);
     UpdateOSDInput(ctx);
 
@@ -7795,6 +7797,7 @@ void TV::ChangeChannel(PlayerContext *ctx, ChannelChangeDirection direction)
     if (ctx->player)
         ctx->player->GetAudio()->Reset();
 
+    usleep(gCoreContext->GetNumSetting("LiveTVWaitMS", 0)*1000);
     UnpauseLiveTV(ctx);
 
     if (oldinputname != ctx->recorder->GetInput())
@@ -7964,6 +7967,7 @@ void TV::ChangeChannel(PlayerContext *ctx, uint chanid, const QString &chan)
     if (ctx->player)
         ctx->player->GetAudio()->Reset();
 
+    usleep(gCoreContext->GetNumSetting("LiveTVWaitMS", 0)*1000);
     UnpauseLiveTV(ctx, chanid && GetQueuedChanID());
 
     if (oldinputname != ctx->recorder->GetInput())
diff --git a/mythtv/programs/mythfrontend/globalsettings.cpp b/mythtv/programs/mythfrontend/globalsettings.cpp
index e0551ef2840..b963a8dce87 100644
--- a/mythtv/programs/mythfrontend/globalsettings.cpp
+++ b/mythtv/programs/mythfrontend/globalsettings.cpp
@@ -1810,6 +1810,21 @@ static HostSpinBoxSetting *LiveTVIdleTimeout()
     return gs;
 }
 
+static HostSpinBoxSetting *LiveTVWaitMS()
+{
+    HostSpinBoxSetting *gs = new HostSpinBoxSetting("LiveTVWaitMS", 0, 10000, 100);
+
+    gs->setLabel(PlaybackSettings::tr("Live TV wait (milliseconds)"));
+
+    gs->setValue(0);
+
+    gs->setHelpText(PlaybackSettings::tr("Wait the specified number of milliseconds "
+                                         "before beginning playback of Live TV "
+                                         "to avoid stuttering during the first minute"));
+    return gs;
+}
+
+
 // static HostCheckBoxSetting *PlaybackPreview()
 // {
 //     HostCheckBoxSetting *gc = new HostCheckBoxSetting("PlaybackPreview");
@@ -4224,6 +4239,7 @@ void PlaybackSettings::Load(void)
     general->addChild(UseProgStartMark());
     general->addChild(AutomaticSetWatched());
     general->addChild(ContinueEmbeddedTVPlay());
+    general->addChild(LiveTVWaitMS());
     general->addChild(LiveTVIdleTimeout());
 
 #if CONFIG_DEBUGTYPE
