Multimedia

Entwickeln Sie eine App, mit der Benutzer bei der Erstellung und Wiedergabe aufregender Medieninhalte unterstützt werden. Dies ist unter Windows 8.1 jetzt einfacher, weil Folgendes verfügbar ist: neue Eigenschaften zum Erfassen von Medien in unterschiedlichen Umgebungen, eine einfache Methode zum Hinzufügen von Wiedergabesteuerelementen zu Apps mit XAML (Extensible Application Markup Language) sowie systemeigene Unterstützung von Medienquellenerweiterungen verschlüsselter Medienerweiterungen (Media Source Extensions, MSE) für die HTML5-Wiedergabe.

Aktualisierungen in Windows 8.1

  • Feature für die Videoverarbeitung
  • Feature für die Audio- und Videoaufnahme
  • XAML-MediaElement
  • HTML5-Video- und -Audiowiedergabe
  • Feature "Wiedergeben auf"

Featureupdates für die Videoverarbeitung

[Laden Sie sich das Beispiel für Medienhub und das Beispiel für MediaStreamSource herunter.]

Mit Windows 8.1 werden einige neue Updates und Unterstützung in Bezug auf Videoformate, Codecs und die Verarbeitung eingeführt.

Unterstützung für CFF

Über die Microsoft Media Foundation wurde den MP4/fMP4-Implementierungen Unterstützung für das Common File Format (CFF) hinzugefügt. CFF ist ein Format für Audio-/Videocontainer, das auf dem ISO Base-Mediendateiformat basiert.

Neuer XVP-Modus

Mit dem Media Foundation Transcode Video Processor (XVP) wurde der MrfCrf444-Modus hinzugefügt, der immer in der Software ausgeführt und für den keine Hardwarebeschleunigung vom Typ DirectX Video Acceleration (DXVA) verwendet wird. So werden unabhängig von der zugrunde liegenden Hardware über alle Plattformen hinweg einheitliche Ergebnisse erzielt. Da der MrfCrf444-Modus vollständig in der Software ausgeführt wird, benötigt der Transcodierungsvorgang möglicherweise mehr Zeit und Energie. Dieser neue Modus erzwingt die Verwendung großer Filter, nutzt die umfassende Präzision für Farbumwandlungen, behandelt Farbformate höherer Qualität bevorzugt und ermöglicht die Nutzung eines Deinterlacers mit hoher Qualität.

Sie können dies in Ihrer App anwenden, indem Sie MediaTrancoder.VideoProcessingAlgorithm auf MediaVideoProcessingAlgorithm.mrfCrf444 festlegen.

// sourceFile and destFile are IStorageFile objects defined elsewhere.

var profile = Windows.Media.MediaProperties.MediaEncodingProfile.createMp4
    (Windows.Media.MediaProperties.VideoEncodingQuality.hd720p); 

var transcoder = new Windows.Media.Transcoding.MediaTranscoder(); 

transcoder.videoProcessingAlgorithm = 
    Windows.Media.Transcoding.MediaVideoProcessingAlgorithm.mrfCrf444; 

transcoder.prepareFileTranscodeAsync(sourceFile, destFile, profile); 
using Windows.Media.MediaProperties;
using Windows.Media.Transcoding;

var transcoder = new MediaTranscoder(); 
var profile = MediaEncodingProfile.CreateMp4(
    MediaProperties.VideoEncodingQuality.HD720p); 

transcoder.videoProcessingAlgorithm = 
    MediaVideoProcessingAlgorithm.MrfCrf444; 

// _InputFile and _OutFile are defined outside this example.
transcoder.PrepareFileTranscodeAsync(_InputFile, _OutputFile, profile); 

Unterstützung für erweiterten YUV-Bereich in Media Foundation

Unter Windows 8 wurde von der Media Foundation-Pipeline standardmäßig der Studio Swing-YUV-Bereich [Y: 16-235] verwendet, und es konnte nicht angegeben werden, ob die Eingabe im erweiterten YUV-Bereich lag [Y: 0-255]. Für die Media Foundation-Pipeline ist es jetzt möglich, den erweiterten Bereich für die Grafikprozessorhardware (GPU) anzugeben. Somit ist die gesamte Media Foundation-Pipeline, einschließlich des MJPEG-Decoders, für die Nutzung des erweiterten Bereichs geeignet.

Mit dem MF_MT_VIDEO_NOMINAL_RANGE-Attribut wird angegeben, ob für den Inhalt der Studio Swing- oder der erweiterte YUV-Bereich verwendet werden soll.

Media Stream Source

Mit Windows 8.1 wird eine neue generische Medienquelle für Windows Store-Apps eingeführt, die als Media Stream Source (MSS) bezeichnet wird. Die APIs für diese Technologie sind im Windows.Media.Core-Namespace enthalten, und die Hauptklasse der Medienquelle lautet MediaStreamSource. Mithilfe von MSS können Apps komprimierte und unkomprimierte Audio- und Videobeispiele zum Wiedergeben, Transcodieren und Streamen an die Medienpipeline senden. Medienbeispiele können von der App dynamisch generiert oder aus einem Stream oder Dateien per "Demultiplexing" bereitgestellt werden. Dank dieser Flexibilität können Apps leichter die Plattformunterstützung für neue Medienformate erweitern oder komplexe Probleme lösen, z. B. durch das adaptive Streamen oder Implementieren einer benutzerdefinierten Medienquelle im verwalteten Code.

Die MediaStreamSource-API weist große Ähnlichkeit mit den Microsoft Silverlight-APIs gleichen Namens auf. Entwickler, die mit den Silverlight-Versionen dieser APIs vertraut sind, können also einen Großteil ihres Wissens anwenden, um Windows Store-Apps mithilfe von MSS zu erstellen.

MSS kann in Verbindung mit audio- und video-Objekten in Windows Store-Apps mit JavaScript, mit MediaElement-Objekten in Windows Store-Apps mit C++, C# oder Visual Basic und mit MediaTranscoder verwendet werden.

Unten sind einige der wichtigsten MSS-APIs aufgeführt. Die Reihenfolge stellt den grundlegenden Ablauf der Funktionsweise von MSS dar. Sie werden sehen, dass von MediaStreamSource mithilfe von Ereignisargumenten Anforderungsobjekte an die App gesendet werden. Die Anforderungsobjekte ermöglichen der App die Interaktion mit MediaStreamSource und die Rückgabe von Daten.

API Beschreibung
MediaStreamSource Stellt eine Medienquelle dar, von der Mediensamples direkt an die Medienpipeline übermittelt werden. Von MediaStreamSource werden MediaStreamSample-Objekte verbraucht, die von der App bereitgestellt werden.
MediaStreamSample Stellt ein Mediensample dar, das von MediaStreamSource verwendet wird.
MediaStreamSource.Starting (Ereignis)

Von MediaStreamSource wird dieses Ereignis zum Senden einer Benachrichtigung an die App verwendet, dass die Verarbeitung von Mediendaten beginnen kann.

MediaStreamSourceStartingRequest

Stellt eine Anforderung der MediaStreamSource dar. Diese Anforderung gibt an, dass die Quelle bereit ist, die Verarbeitung der Mediendaten zu beginnen.

Apps sollten auf diese Anforderung so schnell wie möglich antworten, indem SetActualStartPosition aufgerufen wird. Wenn eine App die Datenverarbeitung durch die MediaStreamSource verzögern muss, kann sie eine asynchrone Verzögerung erhalten, indem sie MediaStreamSourceStartingRequest.GetDeferral aufruft. Wenn die App für den Start von MediaStreamSource bereit ist, ruft sie Complete für das Verzögerungsobjekt auf.

Auf die Startanforderung wird über MediaStreamSourceStartingEventArgs-Elemente zugegriffen, die an den MediaStreamSource.Starting-Ereignishandler übergeben werden.

MediaStreamSource.SampleRequested (Ereignis)

Von MediaStreamSource wird dieses Ereignis zum Benachrichtigen der App verwendet, dass ein MediaStreamSample-Element bereitgestellt werden kann.

Für Apps ist es erforderlich, einen Handler für dieses Ereignis zu registrieren.

MediaStreamSourceSampleRequest

Stellt eine Anforderung eines neuen Mediensamples durch MediaStreamSource dar. Das Festlegen der Sample-Eigenschaft auf das neue MediaStreamSample-Element löst den Vorgang aus, mit dem von MediaStreamSource das Mediensample abgerufen und die Verarbeitung der Mediendaten fortgesetzt wird.

Apps sollten auf diese Anforderung so schnell wie möglich antworten. Falls eine App noch Zeit benötigt, bevor sie das MediaStreamSample senden kann, kann sie eine asynchrone Verzögerung erhalten, indem sie MediaStreamSourceSampleRequest.GetDeferral aufruft. Wenn die Verzögerung für die App abgeschlossen ist, ruft die App Complete für das Verzögerungsobjekt auf.

Auf die Beispielanforderung wird über MediaStreamSourceSampleRequestedEventArgs-Elemente zugegriffen, die an den MediaStreamSource.SampleRequest-Ereignishandler übergeben werden.

Von der App wird angegeben, dass das Ende des Streams erreicht ist, indem auf ein MediaStreamSourceSampleRequest-Element ohne Angabe eines MediaStreamSample-Elements geantwortet wird oder indem die MediaStreamSourceSampleRequest.Sample-Eigenschaft dem Wert null zugewiesen wird.

MediaStreamSource.Closed (Ereignis)

Von MediaStreamSource wird dieses Ereignis zum Benachrichtigen der App verwendet, dass die Quelle heruntergefahren wurde.

MediaStreamSourceClosedRequest

Stellt eine Anforderung derMediaStreamSource dar, dass die Quelle geschlossen wurde.

Auf die Schließanforderung wird über MediaStreamSourceClosedEventArgs-Elemente zugegriffen, die an den MediaStreamSource.Closed-Ereignishandler übergeben werden.

MediaElement.SetMediaStreamSource Legt die Quelle von MediaElement auf ein MediaStreamSource-Element fest.

 

Laden Sie sich das Beispiel für MediaStreamSource, um ein detailliertes Beispiel für die Verwendung von MSS zu erhalten.

Updates für die Audio- und Videoaufnahme

[Laden Sie sich die Beispiele Medienaufzeichnung und Ermittlung von Audioeffekten herunter.]

Mit Windows 8.1 werden Featureupdates für die Audio- und Videoerfassung eingeführt.

Fotosequenzmodus

Im Fotosequenzmodus wird eine kontinuierliche Abfolge von Fotos aufgenommen. Sie konfigurieren diesen Modus mithilfe der LowLagPhotoSequenceControl-Klasse, auf die Sie über die MediaCapture.VideoDeviceController-Eigenschaft zugreifen.

Verwenden Sie die LowLagPhotoSequenceControl.Supported-Eigenschaft, um zu ermitteln, ob der Fotosequenzmodus von einem Gerät unterstützt wird.

Ein wichtiges Szenario für den Fotosequenzmodus ist das Abrufen von "Fotos in der Vergangenheit" – also bevor Benutzer ein Foto aufnehmen. Mithilfe von PhotoCapturedEventArgs.CaptureTimeOffset können Sie ermitteln, ob ein Rahmen in der Zukunft ist oder in der Vergangenheit war. Ein Wert größer als 0 steht für die Zukunft, und ein Wert kleiner als 0 steht für die Vergangenheit.

Rufen Sie zum Initiieren dieses Modus MediaCapture.PrepareLowLagPhotoSequenceCaptureAsync auf. Rufen Sie StartAsync auf, um mit dem Erfassen von Fotos zu beginnen. Die App empfängt so lange Fotos vom Gerät, bis der Vorgang beendet wird. Rufen Sie StopAsync auf, um das Erfassen von Fotos zu beenden.

Wenn für die App festgelegt werden soll, wie viele Frames pro Sekunde abgerufen werden, kann LowLagPhotoSequence.PhotosPerSecondLimit verwendet werden. Dies kann in Situationen nützlich sein, in denen der Sensor des Geräts 30 Frames pro Sekunde (fps) verarbeiten kann, von der App jedoch nur 4 fps benötigt werden.

Unterstützung von Miniaturansichten

Miniaturansichten werden für Einzelfotos und für Fotosequenzvorgänge mit den Klassen LowLagPhotoControl und LowLagPhotoSequenceControl unterstützt, auf die Sie über die MediaCapture.VideoDeviceController-Eigenschaft zugreifen.

Legen Sie zum Aktivieren von Miniaturansichten die ThumbnailEnabled-Eigenschaft auf true fest. Die gewünschte Größe der Miniaturansicht können Sie mit DesiredThumbnailSize und das Format mit ThumbnailFormat festlegen.

Szenemodus

Im Szenemodus wird die Nachverarbeitung erfasster Frames abgestimmt, um eine bessere Übereinstimmung mit der Szene zu erzielen, die gerade aufgezeichnet wird. Sie konfigurieren diesen Modus mithilfe des SceneModeControl-Elements, auf das Sie über die MediaCapture.VideoDeviceController-Eigenschaft zugreifen.

Die SupportedModes-Eigenschaft gibt an, welche Szenemodi (wie z. B. Snow, Night und Sport) von einem Gerät unterstützt werden. Rufen Sie SceneModeControl.SetValueAsync auf, um einen Modus auszuwählen.

Taschenlampenmodus

Für den Taschenlampenmodus wird die entsprechende LED eines Geräts verwendet. Sie konfigurieren diesen Modus mithilfe des TorchControl-Elements, auf das Sie über die MediaCapture.VideoDeviceController-Eigenschaft zugreifen.

Sie können ermitteln, ob dieses Element von einem Gerät unterstützt wird, indem Sie die TorchControl.Supported-Eigenschaft überprüfen. Wenn die Unterstützung vorhanden ist, können Sie den Taschenlampenmodus in Erfassungs-Apps nutzen. Dies ist natürlich auch in nicht für die Erfassung bestimmten Apps möglich, z. B. zum Beleuchten eines Zimmers.

Blitzmodus

Für den Blitzmodus wird der Blitz eines Geräts verwendet. Sie konfigurieren diesen Modus mithilfe des FlashControl-Elements, auf das Sie über die MediaCapture.VideoDeviceController-Eigenschaft zugreifen.

Sie können ermitteln, ob dieses Element von einem Gerät unterstützt wird, indem Sie die FlashControl.Supported-Eigenschaft überprüfen. Wenn es unterstützt wird, können Sie den Blitzmodus in einer Foto-App verwenden, um schlechte Lichtverhältnisse auszugleichen oder den Rote-Augen-Effekt zu reduzieren (RedEyeReduction).

Weißabgleich

Mit dem Weißabgleich verfügt eine App über eine bessere Kontrolle über die Weißabgleicheinstellungen eines Geräts. Sie konfigurieren diese Ebenen mithilfe des WhiteBalanceControl-Elements, auf das Sie über die MediaCapture.VideoDeviceController-Eigenschaft zugreifen.

Sie können ermitteln, ob dieses Element von einem Gerät unterstützt wird, indem Sie die WhiteBalanceControl.Supported-Eigenschaft überprüfen. Wenn Unterstützung vorhanden ist, können Sie einen der ColorTemperaturePreset-Werte verwenden, indem Sie SetPresetAsync aufrufen. Oder rufen Sie SetValueAsync auf, um einen bestimmten Wert (Value) zwischen Min und Max festzulegen.

Belichtungsmodus

Mit dem Belichtungsmodus verfügt eine App über eine bessere Kontrolle über die Belichtungseinstellungen eines Geräts. Sie konfigurieren diesen Modus mithilfe des ExposureControl-Elements, auf das Sie über die MediaCapture.VideoDeviceController-Eigenschaft zugreifen.

Sie können ermitteln, ob dieses Element von einem Gerät unterstützt wird, indem Sie die ExposureControl.Supported-Eigenschaft überprüfen. Wenn Unterstützung vorhanden ist, können von der App Belichtungswerte per Aufruf von SetValueAsync festgelegt werden. Rufen Sie SetAutoAsync auf, um die automatische Belichtung zu aktivieren.

Belichtungskorrekturmodus

Mit dem Belichtungskorrekturmodus verfügt eine App über Kontrolle über die Belichtungspegel der aufgenommenen Fotos. Sie konfigurieren diesen Modus mithilfe des ExposureCompensationControl-Elements, auf das Sie über die MediaCapture.VideoDeviceController-Eigenschaft zugreifen.

Sie können ermitteln, ob dieses Element von einem Gerät unterstützt wird, indem Sie die ExposureCompensationControl.Supported-Eigenschaft überprüfen. Wenn Unterstützung vorhanden ist, können von der App Belichtungswerte per Aufruf von SetValueAsync festgelegt werden.

Fokusmodus

Mit dem Fokusmodus verfügt eine App über eine bessere Kontrolle über die Fokuseinstellungen eines Geräts. Sie konfigurieren diesen Modus mithilfe des FocusControl-Elements, auf das Sie über die MediaCapture.VideoDeviceController-Eigenschaft zugreifen.

Sie können ermitteln, ob dieses Element von einem Gerät unterstützt wird, indem Sie die FocusControl.Supported-Eigenschaft überprüfen. Wenn Unterstützung vorhanden ist, können Sie einen der FocusPreset-Werte per Aufruf von SetPresetAsync verwenden. Oder rufen Sie SetValueAsync auf, um einen bestimmten Wert (Value) zwischen Min und Max festzulegen.

ISO-Modus

Mit dem ISO-Modus kann eine App auf einem Gerät die Einstellungen der ISO-Empfindlichkeit verwalten. Bei schlechten Lichtverhältnissen kann es sein, dass Sie zugunsten einer besseren Gesamthelligkeit einen höheren Rauschpegel in Kauf nehmen möchten. Mit dem Steuerelement für die ISO-Empfindlichkeit kann dies für die App eingestellt werden. Sie konfigurieren diesen Modus mithilfe des IsoSpeedControl-Elements, auf das Sie über die MediaCapture.VideoDeviceController-Eigenschaft zugreifen.

Sie können ermitteln, ob dieses Element von einem Gerät unterstützt wird, indem Sie die IsoSpeedControl.Supported-Eigenschaft überprüfen. Wenn Unterstützung vorhanden ist, können Sie SetPresetAsync verwenden, um den ISO-Pegel auf einen der IsoSpeedPreset-Werte festzulegen. SupportedPresets listet die voreingestellten Werte auf, die das Gerät unterstützt.

Zielregion

Mit der Funktion für die Zielregion kann für die App das RegionOfInterest-Element in einer Vorschau angegeben werden. Sie konfigurieren diese Einstellung mithilfe des RegionsOfInterestControl-Elements, auf das Sie über MediaCapture.VideoDeviceController zugreifen.

Verwenden Sie diese Einstellung zum Angeben des Vorschaubereichs, für den der Fokus und der Belichtungspegel berechnet werden sollen. Mit der Funktion für die Zielregion können beispielsweise Szenarien wie "Tippen zum Scharfstellen" aktiviert werden.

Blickfeld

Bei der Funktion für Blickfeld kann Ihre App das Blickfeld und den Kamerawinkel mit den Einstellungen MediaCaptureSettings.PitchOffsetDegrees, MediaCaptureSettings.Horizontal35mmEquivalentFocalLength und MediaCaptureSettings.Vertical35mmEquivalentFocalLength berechnen.

Aufnehmen von Fotos während der Videoaufzeichnung

Ihre App kann die MediaCaptureSettings.ConcurrentRecordAndPhotoSupported-Einstellungen überprüfen, um zu ermitteln, ob das Gerät die Aufnahme eines Fotos während der Videoaufzeichnung zulässt.

Ermitteln, ob die Wiedergabe eines Tons für die Kamera obligatorisch ist

Die MediaCaptureSettings.CameraSoundRequiredForRegion-Einstellung gibt an, ob die Wiedergabe eines Tons für das Betriebssystem obligatorisch ist, wenn die Kamera ein Foto aufnimmt. Ihre App kann anhand dieser Einstellung ermitteln, ob ein Ton wiedergegeben werden muss.

Optimierung des Aufnahmegeräts

Die VideoDeviceController.PrimaryUse-Eigenschaft gibt an, ob das Aufnahmegerät hauptsächlich für Fotos oder Videos verwendet wird. Dadurch kann das System die Leistung und Qualität optimieren.

Aufzeichnen nicht komprimierter AVI- und WAV-Daten

Sie können mit Ihrer App den unkomprimierten Audiostream vom Mikrofon aufzeichnen, indem Sie die Einstellung MediaCaptureInitializationSettings.AudioProcessing auf Raw festlegen.

Ermittlung von Audioeffekten

Von Ihrer App kann die Audioverarbeitungskette an einem Endpunkt ermittelt werden. Anhand dieser Information können Sie die Audioverarbeitung konfigurieren, die in Ihrer App ausgeführt werden soll. Der Windows.Media.Effects-Namespace enthält die Klassen AudioEffect, AudioCaptureEffectsManager, AudioEffectsManager und AudioRenderEffectsManager.

Um ein AudioCaptureEffectsManager-Objekt zu erstellen, rufen Sie AudioEffectsManager.CreateAudioCaptureEffectsManager auf. Um ein AudioRenderEffectsManager-Objekt zu erstellen, rufen Sie AudioEffectsManager.CreateAudioRenderEffectsManager auf.

MediaElement-XAML-Aktualisierungen

[Laden Sie sich das XAML-Beispiel für die Medienwiedergabe herunter.]

Das MediaElement-Steuerelement wurde erweitert, damit integrierte Transportsteuerelemente und das Rendering im Vollfenstermodus unterstützt werden.

Die MediaElement.AreTransportControlsEnabled-Eigenschaft aktiviert bzw. deaktiviert die integrierten Transportsteuerelemente. Sie müssen also keine eigenen Schaltflächen mehr für Wiedergabe, Stopp, Pause oder Scrubbing erstellen. Diese API funktioniert wie die controls-Eigenschaft bei HTML5-video- und -audio-Elementen.

Die MediaElement.IsFullWindow-Eigenschaft aktiviert bzw. deaktiviert das Rendering im Vollfenstermodus.

Dieser Code zeigt, wie integrierte Transportsteuerelemente aktiviert werden.

<MediaElement Name="media" 
              Source="testVideo.mp4" 
              AreTransportControlsEnabled="True" />
MediaElement media = new MediaElement();
media.AreTransportControlsEnabled = true;

Und dieser Code zeigt, wie das Videorendering im Vollfenstermodus aktiviert wird.

<MediaElement Name="media"
              Source="testVideo.mp4" 
              IsFullWindow="True" />
MediaElement media = new MediaElement();
media.IsFullWindow = true;

HTML5-Video- und -Audiowiedergabe

[Laden Sie sich das Beispiel für die HTML-Medienwiedergabe herunter.]

Mit Windows 8.1 wird eine Reihe von Aktualisierungen der Audio- und Videomedienwiedergabe eingeführt, darunter die Unterstützung für HTML5-Medienquellenerweiterungen (Media Source Extensions, MSE) des World Wide Web Consortium (W3C), Unterstützung für verschlüsselte Medienerweiterungen für HTML5 (Encrypted Media Extensions, EME) des W3C und Updates des MediaElement-XAML-Steuerelements.

Medienquellenerweiterungen (MSE) für HTML5-Video und -Audio

Medienquellenerweiterungen (Media Source Extensions, MSE) für HTML5 sind ein W3C-Standard zur Erweiterung der Elemente video und audio, um das dynamische Ändern des Medienstreams ohne Plug-Ins zu ermöglichen. Diese Erweiterungen unterstützen Funktionen wie adaptives Medienstreaming, Livestreaming, Videosplicing und Videobearbeitung.

Unter MSE können benutzerdefinierte adaptive Streaminglösungen erstellt werden. Mithilfe von adaptiven Streaminglösungen kann die Bitrate des Medienstreams dynamisch geändert werden, um für das Streamen die bestmögliche Qualität zu erzielen. Dabei wird versucht, die optimale Bitrate anhand von einschränkenden Faktoren wie der Netzwerkbandbreite und der CPU-Auslastung zu ermitteln. Wenn also zum Beispiel die Netzwerkbandbreite abnimmt, kann MSE für den Videostream zu einer geringeren Bitrate wechseln. Dies geht zwar zulasten der Bildqualität, aber das Video kann ohne Unterbrechungen fortgesetzt werden.

Eine Anwendungsmöglichkeit für das dynamische Videosplicing ist das Einfügen von Werbung in die Medienwiedergabe. Dies bedeutet, dass Sie Werbe-Clips nicht schon vorab den Mediendateien hinzufügen müssen, sondern erst während der Wiedergabe einen Clip in den Medienstream einfügen können.

Unten sind einige wichtige Elemente der MSE-API aufgeführt.

API Beschreibung
MediaSource Das Medienobjekt, das dem HTML-Medienelement zugeordnet ist. MediaSource enthält die Mediendaten, die durch mindestens ein SourceBuffer-Objekt angegeben werden.
MediaSource.readyState Gibt den aktuellen Zustand des MediaSource-Objekts an und ob eine Zuordnung zu einem Medienelement besteht.
SourceBuffer Dies ist der Puffer für die Mediendaten.
SourceBufferList Eine Auflistung mit SourceBuffer-Objekten.
MediaSource.endOfStream Gibt die Ursache für das Ende eines Streams an.
MediaSource.sourceBuffers Die Auflistung mit SourceBuffer-Objekten, die Mediendaten für das MediaSource-Element enthalten.
createObjectURL Erstellt eine URL zum MediaSource-Objekt. Durch Festlegen der src-Eigenschaft auf diese URL kann das MediaSource-Objekt video oder audio zugeordnet werden.

 

Verschlüsselte Medienerweiterungen (Encrypted Media Extensions, EME) für HTML5-Video- und -Audioelemente

Bei den verschlüsselten Medienerweiterungen für HTML5 handelt es sich um einen W3C-Standard zur Erweiterung der Elemente video und audio, um die Verwendung von geschützten DRM-Inhalten (Digital Rights Management) ohne Plug-Ins zu ermöglichen. Verschlüsselte Medienerweiterungen werden in Internet Explorer 11 und Windows Store-Apps mit JavaScript unter Windows 8.1 unterstützt.

Im Anschluss finden Sie einige der wichtigsten APIs für EME:

API Beschreibung
MediaKeys Die Schlüssel zum Ent- und Verschlüsseln der Mediendaten.
MediaKeySession Die Wiedergabesitzung, der die Schlüssel zugeordnet sind.
MediaKeys.createSession Erstellt das MediaKeySession-Element, das dem MediaKeys-Element zugeordnet ist.
keySystem Attribut für das Medienelement zum Angeben des Schlüsselsystems. Das Schlüsselsystem gibt entweder den Inhaltsschutzanbieter oder den Entschlüsselungsmechanismus an.
MediaKeyError Gibt die Fehlerarten an, die dem MediaKeys-Element zugeordnet sind.
MediaKeyMessageEvent Gibt die Arten von MediaKeys-bezogenen Ereignissen an.

 

Aktualisierungen für das Feature "Wiedergeben auf"

[Laden Sie sich die Beispiele für Medien "Wiedergeben auf" und SystemMediaTransportControls herunter.]

Mit Windows 8.1 wird eine Reihe von Aktualisierungen zur Verbesserung des Features "Wiedergeben auf" eingeführt.

Programmgesteuertes Starten der UI für "Wiedergeben auf"

In der neuen UI-Anleitung für Windows 8.1 werden App-Entwickler aufgefordert, mithilfe der Standardglyphe "Wiedergeben auf" eine In-App-Schaltfläche bereitzustellen, um das Flyout für die UI von "Wiedergeben auf" programmgesteuert anzeigen zu können. Benutzer müssen dann keine Streifbewegung für den Charm "Geräte" mehr ausführen, um die UI aufzurufen. Verwenden Sie ShowPlayToUI, um das Flyout anzuzeigen.

Dieser Code zeigt, wie die UI für "Wiedergeben auf" angezeigt wird.

private void showPlayTo() {
    Windows.Media.PlayTo.PlayToManager.ShowPlayToUI();
}
Private Sub showPlayTo()
    Windows.Media.PlayTo.PlayToManager.ShowPlayToUI()
End Sub
function showPlayTo() {
    Windows.Media.PlayTo.PlayToManager.showPlayToUI();
}

"Wiedergeben auf" nach Verweis

Mithilfe von "Wiedergeben auf" nach Verweis können Webseiten und Windows Store-Apps Inhalte mit DRM-Schutz wiedergeben. Von der App wird ein bevorzugter Uniform Resource Identifier (URI) angegeben, der an das Zielgerät für "Wiedergeben auf" zu senden ist. Dieser URI kann auf einen cloudbasierten Medienserver zeigen. Wenn der preferredSourceUri vorhanden ist, kann das Zielgerät für "Wiedergeben auf" Inhalte direkt von der Cloud streamen. Diese Inhalte können DRM-geschützt sein. (Vergleichen Sie dies mit der Alternative – Streamen von Inhalten von Geräten mit Windows 8.1 –, bei der die Inhalte ungeschützt sein müssen.)

Unten ist Code angegeben, der das Einrichten von "Wiedergeben auf" nach Verweis veranschaulicht.

// video is a MediaElement defined in XAML.
using Windows.Foundation;

video.Source = new Uri("https://www.contoso.com/videos/video.mp4"); 
video.PlayToSource.PreferredSourceUri = 
   new Uri("https://www.contoso.com/catalogid=1234"); 
<video src="https://www.contoso.com/videos/video.mp4" 
   x-ms-playToPreferredSourceUri="https://www.contoso.com/catalogid=1234" /> 
var video = document.createElement('video'); 
document.body.appendChild(video); 

video.src = "https://www.contoso.com/videos/video.mp4"; 
video.msPlayToPreferredSourceUri = "https://www.contoso.com/catalogid=1234"; 
auto video = ref new Windows::UI::Xaml::Controls::MediaElement(); 

video->Source = 
   ref new Windows::Foundation::Uri("https://www.contoso.com/videos/video.mp4"); 

video->PlaytoSource->PreferredSourceUri = 
   ref new Windows::Foundation::Uri("https://www.contoso.com/catalogid=1234"); 

Unterstützung für Adobe Flash-Audio- und -Videodaten

"Wiedergeben auf" unterstützt jetzt die Wiedergabe ungeschützter Flash-Audio- und -Videodaten aus Internet Explorer unter der neuen Windows-UI auf einem digitalen Medienempfänger (Digital Media Receiver, DMR).

Unterstützung für Medienquellenerweiterungen

Medienquellenerweiterungen (Media Source Extensions, MSE) ist ein neuer W3C-Standard, der die Grundlage für die Bereitstellung von Videos allein über den Webbrowser darstellt – auch für lange Premium-Videos in hoher Qualität und auf ressourcenschonende Weise. Für MSE ist kein Plug-In erforderlich. "Wiedergeben auf" unterstützt jetzt die Wiedergabe ungeschützter MSE-Inhalte aus Windows Store-Apps mit JavaScript und von Websites in Internet Explorer unter der Windows-UI.

Geräte mit "Video zu Audio"

Von der UI für "Wiedergeben auf" wird jetzt die Auswahl eines Nur-Audio-Empfängers als Remoteendpunkt für Videoinhalte unterstützt. Die Zusammenstellung des Videoinhalts wird rückgängig gemacht, und nur die Audiokomponente wird an das Gerät gesendet.

UI-Elemente für die Steuerung des Medientransports

Unter Windows 8.1 können Sie anstelle der MediaControl-Klasse das neue SystemMediaTransportControls-Element verwenden.

Die UI-Elemente für die Medientransportsteuerung, die beim Betätigen der Lautstärkeregler angezeigt werden, können jetzt als Fernsteuerung für die Wiedergabe auf einem "Wiedergeben auf"-Gerät verwendet werden.

Die Transportsteuerelemente können angezeigt und zum Steuern der lokalen Wiedergabe oder Remotewiedergabe verwendet werden, während sich die Quell-App im Hintergrund befindet oder während der Bildschirm des Geräts gesperrt ist. Alle Windows Store-Apps erhalten eine Standardimplementierung mit folgenden Elementen:

  • Einbindung grundlegender Transportsteuerelemente wie Wiedergabe, Pause und Suchen

  • App-Name anstelle des Songtitels

  • App-Symbol anstelle des Albumbilds

Sie können die Standardimplementierung der App wie folgt verbessern:

  • Einbinden erweiterter Transportsteuerelemente, z. B. Funktionen für das Wechseln zum nächsten bzw. vorherigen Titel

  • Angeben des Songtitels

  • Anzeigen des Albumbilds

  • Angeben des Albumtitels

Aktualisierungen des Charms "Geräte"

Der Charm "Geräte" ist jetzt hierarchisch aufgebaut und untergliedert Geräte in folgende Kategorien:

  • Play

  • Drucken

  • Projekt

  • Koppeln und senden (sofern die Gerätehardware das unterstützt)

Benutzer sind dann nicht mehr im Unklaren darüber, was sich unter dem Charm "Geräte" befindet. Die Abschnitte sind auch dann sichtbar, wenn keine Geräte verfügbar sind.

Beibehaltung des digitalen Medienempfängers

Der zuletzt ausgewählte digitale Medienempfänger und sein Verbindungsstatus werden unter dem Charm "Geräte" hervorgehoben.

Verbesserter Verbindungs-/Unterbrechungsfluss und bessere Fehlerberichterstattung

Die UI von "Wiedergeben auf" unterstützt jetzt einen verbesserten Fluss für Verbindungen und Unterbrechungen.

Wenn mit einem Gerät eine "Wiedergeben auf"-Verbindung hergestellt wird, zeigt ein neues UI-Element die Meldung "Verbindung" an. Außerdem bleibt das Flyout "Wiedergeben auf" so lange eingeblendet, bis die Verbindung hergestellt ist. Wenn die Verbindung nicht hergestellt werden kann, wird der Quell-App ein Verbindungsfehler gemeldet.

Die Schaltfläche Trennen wurde entfernt. Zum Beenden der Remotewiedergabe und zum Fortsetzen der Wiedergabe lokal wählen Benutzer jetzt die Option Dieser PC. Diese Option wird in der UI von "Wiedergeben auf" neben den anderen Geräten angezeigt.