So wird’s gemacht: Kürzen einer Videodatei (HTML)
[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation ]
Mithilfe der TrimStartTime-Methode und TrimStopTime-Methode im MediaTranscoder kürzen Sie eine Mediendatei.
In diesem Beispiel werden zwei Bearbeitungspunkte, ein Start- und ein Endpunkt, festgelegt. Damit wird der Teil des Videos angegeben, der gekürzt werden soll. Das MediaTranscoder-Objekt gibt eine Datei mit dem gleichen Codierungsprofil wie die Quelldatei aus, kürzt jedoch das Video an den beiden Bearbeitungspunkten.
In diesem Lernprogramm wird beschrieben, wie Sie mit der FileOpenPicker-Klasse eine Videodatei im System öffnen, mit der MediaTranscoder-Klasse die Datei kürzen und schließlich mit der FileSavePicker-Klasse die neu codierte Datei speichern.
Ein weiteres Beispiel zum Transcodieren in einer Windows-Runtime-App finden Sie im Beispiel zum Transcodieren von Medien..
Voraussetzungen
In diesem Thema wird vorausgesetzt, dass Sie eine einfache Windows Store-App mit JavaScript erstellen können. Hilfe beim Erstellen Ihrer ersten App erhalten Sie unter Erstellen Ihrer ersten Windows Store-App mit JavaScript.
Anweisungen
Schritt 1: Erstellen eines neuen Projekts
Erstellen Sie zunächst mit JavaScript eine leere Windows Store-App.
Schritt 2: Auswählen einer Quelldatei und Erstellen einer Zieldatei
Wählen Sie mit der FileOpenPicker-Klasse eine Quelldatei aus, und erstellen Sie mit der FileSavePicker-Klasse eine Zieldatei. Legen Sie die Eigenschaften SuggestedStartLocation und FileTypeFilter für FileOpenPicker fest Legen Sie auf dem FileSavePicker-Objekt die SuggestedStartLocation-, DefaultFileExtension-, SuggestedFileName- und FileTypeChoices-Eigenschaften fest. Beachten Sie, dass mit dieser Funktion die Funktion TrimFile aufgerufen wird. Dabei handelt es sich um eine benutzerdefinierte Funktion, mit der der Transcodierungsvorgang ausgeführt wird. Diese Funktion wird im nächsten Schritt erstellt.
Windows Phone Store-Apps mit JavaScript müssen PickSingleFileAndContinue anstelle von PickSingleFileAsync verwenden.
function trimVideoFile() {
var source;
var destination
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
openPicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.videosLibrary;
openPicker.fileTypeFilter.replaceAll([".wmv", ".mp4"]);
openPicker.pickSingleFileAsync().then(
function (file) {
source = file;
var savePicker = new Windows.Storage.Pickers.FileSavePicker();
savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.videosLibrary;
savePicker.defaultFileExtension = ".mp4";
savePicker.suggestedFileName = "New Video";
savePicker.fileTypeChoices.insert("MPEG4", [".mp4"]);
return savePicker.pickSaveFileAsync();
}).then(
function (file) {
destination = file;
// Custom function that performs the transcoding.
TrimFile(source, destination);
});
};
Schritt 3: Initialisieren von "MediaTranscoder"
Erstellen Sie eine neue Instanz von MediaTranscoder, und legen Sie die TrimStartTime- und TrimStopTime-Eigenschaft fest. In diesem Beispiel ist für TrimStartTime 1 Sekunde und für TrimStopTime 9 Sekunden festgelegt.
var profile = Windows.Media.MediaProperties.MediaEncodingProfile.createMp4(
Windows.Media.MediaProperties.VideoEncodingQuality.hd720p);
var transcoder = new Windows.Media.Transcoding.MediaTranscoder();
// Set the start of the trim.
transcoder.trimStartTime = 1000;
// Set the end of trim.
transcoder.trimStopTime = 9000;
Schritt 4: Kürzen der Datei
Rufen Sie zum Kürzen der Datei die aysnc-Funktion PrepareFileTranscodeAsync auf, und rufen Sie danach die TranscodeAsync-Funktion für das PrepareTranscodeResult-Objekt auf:
/// <param name="srcFile" type="IStorageFile"/>
/// <param name="destFile" type="IStorageFile"/>
function TrimFile(srcFile, destFile) {
var profile = Windows.Media.MediaProperties.MediaEncodingProfile.createMp4(
Windows.Media.MediaProperties.VideoEncodingQuality.hd720p);
var transcoder = new Windows.Media.Transcoding.MediaTranscoder();
// Set the start of the trim.
transcoder.trimStartTime = 1000;
// Set the end of trim.
transcoder.trimStopTime = 9000;
transcoder.prepareFileTranscodeAsync(srcFile, destFile, profile).then(function (result) {
if (result.canTranscode) {
result.transcodeAsync().then(transcodeComplete, transcoderErrorHandler, transcodeProgress);
} else {
// Handle error condition. result.failureReason
}
})
};
Beim Kürzen einer Mediendatei müssen Sie kein Codierungsprofil in der PrepareFileTranscodeAsync-Methode angeben. Wenn Sie das Profil weglassen, besitzt die Zieldatei das gleiche Format wie die Eingabedatei.
Vollständiges Beispiel
Im folgenden Codebeispiel ist die vollständige Sequenz der Aufrufe für einen Kürzungsvorgang angezeigt.
Zuerst ist der Code zum Öffnen und Speichern der Datei aufgeführt.
function trimVideoFile() {
var source;
var destination
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
openPicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.videosLibrary;
openPicker.fileTypeFilter.replaceAll([".wmv", ".mp4"]);
openPicker.pickSingleFileAsync().then(
function (file) {
source = file;
var savePicker = new Windows.Storage.Pickers.FileSavePicker();
savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.videosLibrary;
savePicker.defaultFileExtension = ".mp4";
savePicker.suggestedFileName = "New Video";
savePicker.fileTypeChoices.insert("MPEG4", [".mp4"]);
return savePicker.pickSaveFileAsync();
}).then(
function (file) {
destination = file;
// Custom function that performs the transcoding.
TrimFile(source, destination);
});
};
Dann folgt der Code zum Transcodieren der Datei.
/// <param name="srcFile" type="IStorageFile"/>
/// <param name="destFile" type="IStorageFile"/>
function TrimFile(srcFile, destFile) {
var profile = Windows.Media.MediaProperties.MediaEncodingProfile.createMp4(
Windows.Media.MediaProperties.VideoEncodingQuality.hd720p);
var transcoder = new Windows.Media.Transcoding.MediaTranscoder();
// Set the start of the trim.
transcoder.trimStartTime = 1000;
// Set the end of trim.
transcoder.trimStopTime = 9000;
transcoder.prepareFileTranscodeAsync(srcFile, destFile, profile).then(function (result) {
if (result.canTranscode) {
result.transcodeAsync().then(transcodeComplete, transcoderErrorHandler, transcodeProgress);
} else {
// Handle error condition. result.failureReason
}
})
};
Und hier sehen Sie nun den Code zur Verarbeitung des Fortschritts, des Fehlers und des Abschlusses der Transcodierung.
function transcodeComplete(result) {
// handle completion.
// This snippet writes to an HTML control which is defined external to this snippet.
OutputText.innerHTML = "Transcode Complete";
};
function transcoderErrorHandler(error) {
// handle error condition
};
function transcodeProgress(percent) {
// handle progress.
// This snippet writes to an HTML control which is defined external to this snippet.
ProgressText.innerHTML = "Transcode Progress: " + percent.toString().split(".")[0] + "%";
};
Verwandte Themen
Roadmaps
Roadmap für Windows Store-Apps mit JavaScript
Hinzufügen von Multimediainhalten
Beispiele
Beispiel zum Transcodieren von Medien
Beispiel für Medienerweiterungen
Beispiel für Echtzeitkommunikation
Aufgaben
Referenz