本文整理汇总了C#中PlayableItem类的典型用法代码示例。如果您正苦于以下问题:C# PlayableItem类的具体用法?C# PlayableItem怎么用?C# PlayableItem使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
PlayableItem类属于命名空间,在下文中一共展示了PlayableItem类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetCommandArgumentsList
/// <summary>
/// Gets arguments to be passed to the command line.
/// http://wiki.videolan.org/VLC_command-line_help
/// </summary>
protected override List<string> GetCommandArgumentsList(PlayableItem playInfo)
{
List<string> args = new List<string>();
args.Add("{0}");
// Be explicit about start time, to avoid any possible player auto-resume settings
double startTimeInSeconds = new TimeSpan(playInfo.StartPositionTicks).TotalSeconds;
args.Add("--start-time=" + startTimeInSeconds);
// Play in fullscreen
args.Add("--fullscreen");
// Keep the window on top of others
args.Add("--video-on-top");
// Start a new instance
args.Add("--no-one-instance");
// Close the player when playback finishes
args.Add("--play-and-exit");
// Disable system screen saver during playback
args.Add("--disable-screensaver");
// Keep the ui minimal
args.Add("--qt-minimal-view");
args.Add("--no-video-deco");
args.Add("--no-playlist-tree");
// OSD marquee font
args.Add("--freetype-outline-thickness=6");
// Startup the Http interface so we can send out requests to monitor playstate
args.Add("--extraintf=http");
args.Add("--http-host=" + HttpServer);
args.Add("--http-port=" + HttpPort);
// Disable the new version notification for this session
args.Add("--no-qt-updates-notif");
// Map the stop button on the remote to close the player
args.Add("--global-key-quit=\"Media Stop\"");
args.Add("--global-key-play=\"Media Play\"");
args.Add("--global-key-pause=\"Media Pause\"");
args.Add("--global-key-play-pause=\"Media Play Pause\"");
args.Add("--global-key-vol-down=\"Volume Down\"");
args.Add("--global-key-vol-up=\"Volume Up\"");
args.Add("--global-key-vol-mute=\"Mute\"");
args.Add("--key-nav-up=\"Up\"");
args.Add("--key-nav-down=\"Down\"");
args.Add("--key-nav-left=\"Left\"");
args.Add("--key-nav-right=\"Right\"");
args.Add("--key-nav-activate=\"Enter\"");
args.Add("--global-key-jump-long=\"Media Prev Track\"");
args.Add("--global-key-jump+long=\"Media Next Track\"");
return args;
}
示例2: GetCommandArgumentsList
/// <summary>
/// Gets arguments to be passed to the command line.
/// </summary>
protected override List<string> GetCommandArgumentsList(PlayableItem playbackInfo)
{
List<string> args = new List<string>();
args.Add("uri={0}");
return args;
}
示例3: OnExternalPlayerLaunched
protected override void OnExternalPlayerLaunched(PlayableItem playbackInfo)
{
base.OnExternalPlayerLaunched(playbackInfo);
// If the playstate directory exists, start watching it
if (Directory.Exists(PlayStateDirectory))
{
StartWatchingStatusFile();
}
}
示例4: PlayMediaInternal
/// <summary>
/// Plays Media
/// </summary>
protected override void PlayMediaInternal(PlayableItem playable)
{
if (playable.QueueItem)
{
Application.UIDeferredInvokeIfRequired(() => QueuePlayableItem(playable));
}
else
{
Application.UIDeferredInvokeIfRequired(() => PlayPlayableItem(playable));
}
}
示例5: PlayMediaInternal
/// <summary>
/// Plays Media
/// </summary>
protected override void PlayMediaInternal(PlayableItem playable)
{
if (playable.QueueItem)
{
Microsoft.MediaCenter.UI.Application.DeferredInvoke(_ => QueuePlayableItem(playable));
}
else
{
Microsoft.MediaCenter.UI.Application.DeferredInvoke(_ => PlayPlayableItem(playable));
}
}
示例6: PlayMediaInternal
protected override void PlayMediaInternal(PlayableItem playable)
{
// Report start to server
if (playable.HasMediaItems) Application.CurrentInstance.ReportPlaybackStart(playable.CurrentMedia.ApiId);
// Two different launch methods depending on how the player is configured
if (LaunchType == CommonConfigData.ExternalPlayerLaunchType.WMCNavigate)
{
PlayUsingWMCNavigation(playable);
OnExternalPlayerLaunched(playable);
}
else
{
PlayUsingCommandLine(playable);
}
}
示例7: OnExternalPlayerLaunched
/// <summary>
/// Starts monitoring playstate using the player's Http interface
/// </summary>
protected override void OnExternalPlayerLaunched(PlayableItem playbackInfo)
{
base.OnExternalPlayerLaunched(playbackInfo);
if (_StatusRequestClient == null)
{
_StatusRequestClient = new WebClient();
// Start up the thread that will perform the monitoring
_StatusRequestThread = new Thread(MonitorStatus);
_StatusRequestThread.IsBackground = true;
_StatusRequestThread.Start();
}
_StatusRequestClient.DownloadStringCompleted -= statusRequestCompleted;
_StatusRequestClient.DownloadStringCompleted += statusRequestCompleted;
_MonitorPlayback = true;
}
示例8: PlayMediaInternal
protected override void PlayMediaInternal(PlayableItem playable)
{
// Report start to server
var file = (playable.HasMediaItems ? playable.CurrentMedia.Files.FirstOrDefault() : playable.CurrentFile) ?? "";
IsStreaming = file.StartsWith("http://", StringComparison.OrdinalIgnoreCase);
if (playable.HasMediaItems) Application.CurrentInstance.ReportPlaybackStart(playable.CurrentMedia.ApiId, IsStreaming);
// Two different launch methods depending on how the player is configured
if (LaunchType == CommonConfigData.ExternalPlayerLaunchType.WMCNavigate)
{
PlayUsingWMCNavigation(playable);
OnExternalPlayerLaunched(playable);
}
else
{
PlayUsingCommandLine(playable);
}
}
示例9: QueuePlayableItemIntoMediaCollection
private void QueuePlayableItemIntoMediaCollection(PlayableItem playable)
{
try
{
// Create a MediaCollectionItem for each file to play
if (playable.HasMediaItems)
{
PlaybackControllerHelper.PopulateMediaCollectionUsingMediaItems(this, _CurrentMediaCollection, playable);
}
else
{
PlaybackControllerHelper.PopulateMediaCollectionUsingFiles(_CurrentMediaCollection, playable);
}
}
catch (Exception ex)
{
OnErrorPlayingItem(playable, ex);
}
}
示例10: CallPlayMediaLegacy
/// <summary>
/// Calls PlayMedia
/// </summary>
private bool CallPlayMediaLegacy(MediaCenterEnvironment mediaCenterEnvironment, PlayableItem playable)
{
Microsoft.MediaCenter.MediaType type = PlaybackControllerHelper.GetMediaType(playable);
bool playedWithPlaylist = false;
// Need to create a playlist
if (PlaybackControllerHelper.RequiresWPL(playable))
{
IEnumerable<string> files = playable.FilesFormattedForPlayer;
string playlistFile = PlaybackControllerHelper.CreateWPLPlaylist(playable.Id.ToString(), files, playable.StartPlaylistPosition);
if (!PlaybackControllerHelper.CallPlayMedia(mediaCenterEnvironment, type, playlistFile, false))
{
return false;
}
playedWithPlaylist = true;
}
// If we're playing a dvd and the last item played was a MediaCollection, we need to make sure the MediaCollection has
// fully cleared out of the player or there will be quirks such as ff/rew remote buttons not working
if (playable.HasMediaItems)
{
Video video = playable.MediaItems.First() as Video;
Microsoft.MediaCenter.Extensibility.MediaType lastMediaType = PlaybackControllerHelper.GetCurrentMediaType();
if (video != null && video.MediaType == Library.MediaType.DVD && (lastMediaType == Microsoft.MediaCenter.Extensibility.MediaType.MediaCollection || lastMediaType == Microsoft.MediaCenter.Extensibility.MediaType.Unknown))
{
System.Threading.Thread.Sleep(500);
}
}
if (!playedWithPlaylist)
{
bool queue = false;
foreach (string fileToPlay in playable.FilesFormattedForPlayer)
{
if (!PlaybackControllerHelper.CallPlayMedia(mediaCenterEnvironment, type, fileToPlay, queue))
{
return false;
}
queue = true;
}
}
return true;
}
示例11: CallPlayMediaForPlayableItem
/// <summary>
/// Calls PlayMedia using either a MediaCollection or a single file
/// </summary>
private bool CallPlayMediaForPlayableItem(MediaCenterEnvironment mediaCenterEnvironment, PlayableItem playable)
{
if (PlaybackControllerHelper.UseLegacyApi(playable))
{
bool success = CallPlayMediaLegacy(mediaCenterEnvironment, playable);
_CurrentMediaCollection = null;
return success;
}
else
{
return CallPlayMediaUsingMediaCollection(mediaCenterEnvironment, playable);
}
}
示例12: ManageExtPlayer
private void ManageExtPlayer(Process player, PlayableItem playable)
{
//minimize MCE if indicated
IntPtr mceWnd = FindWindow(null, "Windows Media Center");
WINDOWPLACEMENT wp = new WINDOWPLACEMENT();
GetWindowPlacement(mceWnd, ref wp);
Cursor.Hide();
if (HideTaskbar)
{
Taskbar.Hide();
}
if (ShowSplashScreen)
{
//throw up a form to cover the desktop if we minimize and we are in the primary monitor
if (System.Windows.Forms.Screen.FromHandle(mceWnd).Primary)
{
ExternalSplashForm.Display(Application.CurrentInstance.ExtSplashBmp);
}
}
if (MinimizeMCE)
{
Logger.ReportVerbose("Minimizing Windows Media Center");
wp.showCmd = 2; // 1 - Normal; 2 - Minimize; 3 - Maximize;
SetWindowPlacement(mceWnd, ref wp);
}
// async this so it doesn't slow us down if the service isn't responding for some reason
Async.Queue("Wait for external player to launch", () =>
{
player.Refresh();
player.WaitForInputIdle(5000);
OnExternalPlayerLaunched(playable);
});
//and wait for it to exit
player.WaitForExit();
player.Dispose();
//now restore MCE
wp.showCmd = 1; // 1 - Normal; 2 - Minimize; 3 - Maximize;
SetWindowPlacement(mceWnd, ref wp);
if (ShowSplashScreen)
{
ExternalSplashForm.Hide();
}
if (HideTaskbar)
{
Taskbar.Show();
}
Cursor.Show();
SetForegroundWindow(mceWnd);
OnPlaybackFinished(GetFinishedPlaybackState());
}
示例13: GetCommandArguments
private string GetCommandArguments(PlayableItem playable)
{
List<string> argsList = GetCommandArgumentsList(playable);
string args = string.Join(" ", argsList.ToArray());
args = string.Format(args, GetFilePathCommandArgument(GetFilesToSendToPlayer(playable)));
return args;
}
示例14: OnExternalPlayerLaunched
protected override void OnExternalPlayerLaunched(PlayableItem playbackInfo)
{
base.OnExternalPlayerLaunched(playbackInfo);
Async.Queue("Wait for process to exit", WaitForProcessToExit);
}
示例15: GetCommandArgumentsList
/// <summary>
/// Gets arguments to be passed to the command line.
/// </summary>
protected override List<string> GetCommandArgumentsList(PlayableItem playbackInfo)
{
var args = new List<string> {"uri={0}"};
return args;
}