Dieser Artikel wurde maschinell übersetzt.

Drücken Sie sich aus!

Express-selbst - Codierung Videos mit Microsoft Expression Encoder 3-SDK

Adam Miller

In einer meiner Lieblingsfilm Szenen aller Zeiten, Clark W. Griswold (Chevy Chase in “ Weihnachten Urlaub ”) Ruft in seinem Attic aufgefangen, während Weihnachten ausgeblendet werden. Warm beibehalten, die er dons Rosa Handschuhe, einen grünen Hat und ein Brauner Fell aus einem verstaubten Gefriertruhe abgerufenen und gestohlen. Am unteren Rand der Gefriertruhe er findet Heimvideos aus seinem Jugend und übergibt die Zeit, die Sie (mit Risse in seinen Augen) ansehen, die unter Verwendung einer alten Film Projektor.

Heimvideos haben so lange seitdem stammen, aber Personen immer noch eine der dieselben Probleme behandeln: Wie werden ich meinen Film an Freunde und Verwandte angezeigt? Websites wie YouTube, Vimeo und Facebook stellen einfach; freigeben, aber am 100-plus Megabyte pro Minute für High-Definition-Videos beim Abrufen der Daten zu diesen Websites sehr zeitaufwändig sein kann. Vermutlich haben ihre tragbaren Gerät, das System spielen oder privat Theater Media Center nicht die Datei selbst wiedergegeben. Um diese Probleme zu lösen, müssen Sie das Video in ein anderes Format zu konvertieren. Dieser Prozess wird als Codierung bezeichnet.

Informationen zu Expression Encoder

Das Microsoft video Codieren Tool Expression Encoder 3, ist Teil der Expression-Produktfamilie zum Erstellen ansprechender Benutzeroberflächen für Web- und Desktopanwendungen. Expression Encoder in kostenlosen und kostenpflichtigen Versionen stammt, bezahlte Version ist Teil der Expression Studio-3-Suite (599 $) und Expression Web 3 Suite (149 Euro). Kostenlose Download unterstützt keine Codierung in Silverlight Smooth Streaming oder h. h. 264 video oder using 264 video als Quelle, aber es gestattet Windows Media Video-Dateien codieren und hat ein nützliches SDK. Viele der Beispielcode in diesem Artikel muss der bezahlten 
version des Programms, jedoch werden alle Codebeispiele in der kostenlosen Version des SDK erstellt. Sie erhalten einfach ein InvalidMediaException oder eine FeatureNotAvailableException beim Ausführen.

Wenn Sie Expression-Suite erwerben bereit sind, können Sie mit Expression Encoder Einstieg durch downloaden die kostenlose Version von microsoft.com/expression-. Es steht auch als Teil eines Expression Professional-MSDN-Abonnement oder Visual Studio Professional mit MSDN Premium-Abonnement. Bedenken, dass 149 $ für eine professionelle Videocodierung Softwareanwendung mit diesem Feature, Breite Palette von Eingabeformate und unterstützte Ausgabe Ziele ist eine relative stehlen. Ähnlich wie video Codieren Lösungen können upward von 3.000 € Kosten.

Unabhängig davon, welche Version Sie sich entscheiden, sollten Sie die Encoder-3-QFE installieren. Er bietet Unterstützung für zusätzliche Dateitypen und Eingabegeräte, verbessert die Leistung in bestimmten Situationen und enthält kleine Fehlerkorrekturen. Das QFE-Installationsprogramm befindet sich auf der Expression Encoder-Seite auf der Website Microsoft Expression Web.

Unterstützte Formate

Unterstützte Videoformate Eingaben sind:

  • Windows Media Video (.wmv)
  • DVD-Video (.vob)
  • MPEG (MPG, MPEG)
  • Audio Video Interleave (AVI)
  • Microsoft Digital Video-Aufnahme (.dvr-ms)

Bezahlte Version fügt die folgenden Formate (plus eine Handvoll von anderen Formaten):

  • MPEG-4 (MP4, .m4v)
  • QuickTime (MOV)
  • AVC-HD (.mts)
  • Mobile Geräte-Video (3gp, .3g2)

In den meisten Fällen unterstützt die Expression Encoder eine Mediendatei, die Windows Media Player wiedergeben können. Wenn Sie noch weitere Dateien unterstützen (und können Sie in Windows Media Player wiedergeben) möchten, können Sie ein Codec Pack z. B. K Lite-Codec Pack (codecguide.com ) oder Community kombinierte Codec Pack (cccp-project.net) installieren. Beide basieren auf dem open-Source-Projekt Ffdshow und werden VP6-codierte Flash (.flv)-Dateien, h. 264-Video-Unterstützung im Container Matroska (.mkv) und Videodateien Ogg (.ogg) hinzuzufügen.

Die kostenlose Version von Expression Encoder unterstützt nur die Microsoft VC-1 als ein Ausgabe-Codec. Allerdings können weiterhin Sie zum Codieren von Videos für Silverlight (einzelne Bitrate), Xbox 360, Zune und Zune HD. Darüber hinaus der VC-1-Codec ist keine Slouch; die Komprimierung so gut (wenn nicht in bestimmten Situationen besser) ist als h. 264. Aktualisieren auf der bezahlten Version können Ausgabe Sie Silverlight Smooth Streaming video (Multi-Bitrate) als auch h. 264, d. h. Sie Videos auf iPhone, PS3, Flash Player (Version 10 H.264/.mp4 unterstützt) und zahllose andere Geräte spielbaren codieren können.

Codierung von 101

Ändern Sie ggf. einige der video-Profileinstellungen, daher Sie die Grundlagen der Videocodierung verstehen müssen, unterstützen bestimmte Ausgabegeräte benötigt werden. Video Re-Encoding ist tatsächlich der Prozess Dekomprimieren ein Video und es mit einem anderen Codec oder manuell veränderliche Attribute wie z. B. Größe, Seitenverhältnis oder Framerate re-compressing. Obwohl verlustfreie Komprimierungsmethoden vorhanden sind, werden Sie selten verwendet, da die resultierenden Videodateien noch ziemlich groß sind. So wird zum Verringern des Abstands erforderlich, um das Video zu speichern (und daher übertragen), ein Algorithmus, bekannt als ein Codec verwendet, zum Komprimieren und Dekomprimieren des Videos. Der komprimierte Videostream wird dann entsprechend auf eine Spezifikation, die als Container (z. B. WMV oder MP4) bekannt gespeichert. Container und Codecs sind häufig keine exklusive Vertrag, so auch h. 264 gängigsten Codecs, die in der MP4-Container gefunden ist, andere Codecs verwendet werden kann.

Bitrate, ausgedrückt in Kilobit pro Sekunde, definiert, wie viele Daten zum Speichern von komprimierten Videos verwendet werden soll. Reduzieren die Bitrate teilt den Encoder zum Komprimieren des Videos mit höherer Geschwindigkeit Videoqualität beeinträchtigt. Es gibt verschiedene Möglichkeiten, dem Encoder mitzuteilen, wie das Video Bitrate zu ermitteln. Die einfachste Möglichkeit besteht darin, eine Konstante Bitrate (CBR), den Encoder erzwingt verwenden dieselbe Datenmenge für jede Sekunde des Videos verwenden. Ein variabler Bitrate (VBR) kann verwendet werden, um den Encoder mitzuteilen, was die gesamte Bitrate der Datei werden soll, aber der Encoder ist berechtigt, erhöhen oder verringern die Bitrate, basierend auf der Menge der Daten, die für einen bestimmten Abschnitt des Videos benötigt. Variable eingeschränkten Bitrate ähnelt uneingeschränkt VBR mit der Ausnahme, dass Ihnen nicht nur eine durchschnittliche Bitrate verwenden, sondern auch eine maximale Bitrate, die kann nicht überschritten werden.

Variable eingeschränkten Bitrate ist nützlich, wenn es sich bei Silverlight Smooth Streaming Video codieren. Es wird sichergestellt, die Bitrate die Client-Bandbreite, zwingen den Client an einen unteren Qualität Stream anzufordern nicht überschritten wird. CBR, VBR und geben Sie den Umfang der Komprimierung verwenden, indem Sie eine Größe insgesamt Videodatei an.

Alternativ können Sie den Encoder verwenden eine qualitätsbasierte VBR mitteilen. Anstatt die Gesamtgröße des Videos zu verwenden, geben Sie einen Prozentsatz der Qualität (d. h., wie viele Daten) der dekomprimierten Quelle video beibehalten möchten. Es dauert weniger Daten gute Qualität für eine Cartoon, z. B. als für eine Art oder Video Aktion ausgefüllt zu behalten. Wenn Sie eine qualitativ hochwertige Quelle und das Ziel ist die Quelle in ein anderes Format konvertieren und optimale Qualität beizubehalten, sollten Sie qualitätsbasierte VBR. Diese Definitionen sind nur Tipp Of The Eisberg, aber grundlegende Ausgabeeinstellungen für die auswählen. Sie werden zusätzliche Codierung Definitionen in diesem Artikel feststellen, wie Sie Code gelten Beispiele.

Mithilfe des SDK

Um die Codebeispiele zu folgen, sollten Sie ein Video mit guter Qualität zu verwenden. Wenn alle hochauflösende Videos um liegenden erhalten Sie einige gute HD-Videos, von microsoft.com/windows/windowsmedia/musicandvideo/hdvideo/contentshowcase.aspx-. Ich werde das Puls Rush-Video als Quelle für diese Beispiele verwenden.

Erstellen Sie nach der Installation von Expression Encoder 3 ein neues Projekt von Visual Studio C#-Konsolenanwendung. Fügen Sie Verweise auf Microsoft.Expression.Encoder.dll und Microsoft.Expression.Encoder.Utilities.dll, am \Program Files (X 86) \Microsoft Expression\Encoder 3\SDK. Sie müssen auch einen Verweis auf die WindowsBase, hinzufügen, Sie auf der Registerkarte .NET des Dialogfelds Verweis hinzufügen finden. Viele der Klassen verwendet werden also im Namespace Microsoft.Expression.Encoder, fügen Sie eine using-Anweisung für Sie.

Das erste Element zu instanziieren, wird ein MediaItem-Objekt sein. MediaItem Konstruktor nimmt eine Zeichenfolge als einziger Parameter an dem Konstruktor. Übergeben Sie den Pfad zu der Datei, die Sie als Quelle für das Projekt Codierung verwenden:

MediaItem src = new MediaItem(@"C:\WMdownloads\AdrenalineRush.wmv");

Erstellen eines Objekts MediaItem dauert nur eine Sekunde oder zwei. Das SDK tut ziemlich viel Arbeit hinter den Kulissen jedoch Informationen über die Quelle video, z. B. Höhe, Breite, die Framerate (die Frequenz, dass einzelne Bilder auf dem Bildschirm angezeigt werden soll) und Dauer gesammelt. Informationen über die Audiodaten werden ebenfalls zu diesem Zeitpunkt gesammelt werden.

Als Nächstes erstellen Sie eine Instanz der Job-Klasse (die nur über einen parameterlosen Konstruktor verfügt) und seine Liste der MediaItems Ihrer MediaItem hinzufügen. Auftrag-Klasse dient als Manager für das gewünschte Ausgabeformat (bekannt als Profile):

Job job = new Job();
job.MediaItems.Add(src);

Jetzt müssen Sie dem Auftrag die Profile für Audio- und Videodaten während der Codierung verwenden informieren, die einfachste Möglichkeit ist die Verwendung eines der Profile in der Benutzeroberfläche definiert. Um ein Video für die Zune HD erstellen, können Sie z. B. die Voreinstellung VC1ZuneHD verwenden:

job.ApplyPreset(Presets.VC1ZuneHD);

Schließlich ein Ausgabeverzeichnis anzugeben, und den Codierung starten:

job.OutputDirectory = @"C:\EncodedFiles";
job.Encode();

Die Datei Program.cs sollte Abbildung 1 ähneln.

Abbildung 1 Erstellen eines Videos für HD-Zune

using Microsoft.Expression.Encoder;

namespace TestApp
{
  class Program
  {
      static void Main(string[] args)
      {
          MediaItem src = new MediaItem
              (@"C:\WMdownloads\AdrenalineRush.wmv");
          Job job = new Job();
          job.MediaItems.Add(src);
          job.ApplyPreset(Presets.VC1ZuneHD);
          job.OutputDirectory = @"C:\EncodedFiles";
          job.Encode();
      }
  }
}

Es ist eine Sache, die vor der Ausführung der Anwendung: Wenn Sie eine 64-Bit-Version von Windows verwenden, müssen Sie das Projekt zum Erstellen von X 86 ändern. Wählen Sie in der Visual Studio-Menüleiste (Projektname) Eigenschaften und Projekt. Klicken Sie im Dialogfeld, das geöffnet wird, klicken Sie auf die Registerkarte Build, und ändern Sie die Ziel-CPU von “ Any CPU ” “ X 86 ”.

Sie können nun die Anwendung ausführen und ein Video auf der Zune HD spielbaren erstellen. Der Codierungsvorgang ein paar Minuten dauert und sehr CPU-intensiv ist. Video codieren Vorteile aus einem parallelen berechneten Vorgang werden, damit Multi-Core-Computer einen großen Vorteil hier.

Mit Expression Encoder umfasst auch die Voreinstellungen für online-Dienste wie YouTube, Vimeo und Facebook-Codierung. 720p Video aufgezeichnet, die von der Digitalkamera Panasonic Lumix DMC-ZS3 belegt ungefähr 110 MB pro Minute aufgezeichnete Videos. Konvertieren das Video mit dem YouTube HD Voreinstellung (auch 720p) wird das Video nur 16 MB reduziert. Dadurch wesentlich effizienter zu uploaden und lokal zu speichern. Konvertieren in eine MP4-Datei können Sie auch kompatibel mit vielen weitere video Bearbeitungsprogramme.

Benutzerdefinierte Einstellungen

Um müssen manuell erzeugen, die die gleiche Ausgabe wie der VC1ZuneHD voreingestellt werden, müssen Sie würde Code ähnlich Abbildung 2 verwenden, um die Video- und Audiostreams profiles.For im Code festzulegen, in Abbildung 2 zu kompilieren, Sie Verweise auf Microsoft.Expression.Encoder.Utilities und System.Drawing hinzuzufügen. Fügen Sie auch mithilfe der Anweisungen für Microsoft.Expression.Encoder.Profiles und System.Drawing. Im Wesentlichen gibt das Ausgabeformat den Container für die Ausgabedatei an. Ich sage im Wesentlichen da Codierung für Silverlight nur ein wenig anders (wie ich in Kürze eingehen werde) funktioniert.

Abbildung 2 Video- und Audio-Profileinstellungen für Zune HD

MediaItem src = new MediaItem(@"C:\WMdownloads\AdrenalineRush.wmv");

src.OutputFormat = new WindowsMediaOutputFormat();

src.OutputFormat.VideoProfile = new AdvancedVC1VideoProfile();
src.OutputFormat.VideoProfile.Bitrate = new 
    VariableConstrainedBitrate(1000, 1500);
src.OutputFormat.VideoProfile.Size = new Size(480, 272);
src.OutputFormat.VideoProfile.FrameRate = 30;
src.OutputFormat.VideoProfile.KeyFrameDistance = new TimeSpan(0, 0, 4);
src.OutputFormat.AudioProfile = new WmaAudioProfile();
src.OutputFormat.AudioProfile.Bitrate = new 
    VariableConstrainedBitrate(128, 192);
src.OutputFormat.AudioProfile.Codec = AudioCodec.WmaProfessional;
src.OutputFormat.AudioProfile.BitsPerSample = 24;


Job job = new Job();
job.MediaItems.Add(src);
job.OutputDirectory = @"C:\EncodedFiles";
job.Encode();

Der VideoProfile gibt den Videocodec, zusammen mit den detaillierten Einstellungen bei der Codierung verwenden. In ähnlicher Weise gibt der AudioProfile audio-Codecs zusammen mit seiner Einstellungen verwenden. Beim Erstellen einer VariableConstrainedBitrate der erste Parameter gibt die durchschnittliche Bitrate und der zweite Parameter gibt die maximale Bitrate. Die Größeneinstellung gibt das Feld, das an das codierte Video anpassen sollten. Die korrekt skalierte Größe den Puls Rush-video ist tatsächlich 480 x 272 um das Seitenverhältnis beizubehalten, aber wenn Eingabe von 480 x 480 resultierende Video noch wäre 480 x 272.

Abbildung 2 KeyFrameDistance Eigenschaft verweist auf eine Video-Codierung Konzept noch erläuterten. Wie wird die meisten video Codieren arbeitet nur die Änderungen von einem Textrahmen zum nächsten, anstatt das gesamte Bild für die einzelnen Videoframes gespeichert. Keyframes sind die Rahmen, die das gesamte Bild enthalten. Dieser Code erstellt Keyframes alle vier Sekunden. Keyframes werden automatisch erstellt, wenn das Video wie z. B. eine Änderung der Szene große Änderungen vorgenommen wurden, jedoch sollten Sie in vordefinierten Intervallen für Suchvorgänge in den Film während der Wiedergabe unterstützt auch erstellen.

Streaming Silverlight-Weich

Silverlight Smooth Streaming wechselt dynamisch die Bitrate der wiedergegebenen basierend auf aktuellen Netzwerkbedingungen Mediendatei. Smooth Streaming-Projekt besteht aus einzelnen Videos gespeichert sind, in .ismv Dateien sowie .ism und .ismc Metadatendateien, die Wiedergabe Smooth Streaming zu unterstützen.

Um ein Silverlight Smooth Streaming-Projekt zu erstellen, müssen mehrere Änderungen vorgenommen werden. Ändern Sie zunächst die KeyFrameDistance zwei Sekunden. Das Video wird dennoch wiedergeben, wenn die KeyFrameDistance bei vier Sekunden bleibt, aber Sie möglicherweise Unterbrechungen bei der Wiedergabe bemerken, wenn der Player Bitrates wechselt. Silverlight-Player fordert das Video in zwei-Sekunden-Segmenten Wiedergabe konsistenter, wenn ein Keyframe am Anfang jeder Anforderung ist. Außerdem müssen Sie die folgende Zeile hinzufügen:

src.OutputFormat.VideoProfile.SmoothStreaming = true;

SmoothStreaming auf True festlegen, wird den Encoder die Videos .ismv-Dateien ausgeben und die .ism und Ismc erstellt. Mit nur einer Bitrate wirklich eine reibungslose streaming Projekt also zum Erstellen mehrerer Ausgabe-Bitrates ist nicht müssen Sie mehrere Datenströme der VideoProfile hinzu. Hierzu verwenden Code wie Abbildung 3 .

Abbildung 3 Hinzufügen Silverlight Weich Streaming

MediaItem src = new MediaItem(@"C:\WMdownloads\AdrenalineRush.wmv");
src.OutputFormat = new WindowsMediaOutputFormat();

src.OutputFormat.VideoProfile = new AdvancedVC1VideoProfile();
src.OutputFormat.VideoProfile.KeyFrameDistance = new TimeSpan(0, 0, 2);
src.OutputFormat.VideoProfile.SmoothStreaming = true;
src.OutputFormat.VideoProfile.Streams.Clear();
src.OutputFormat.VideoProfile.Streams.Add(new StreamInfo(new 
    VariableConstrainedBitrate(2000, 3000), new Size(1280, 720)));
src.OutputFormat.VideoProfile.Streams.Add(new StreamInfo(new 
    VariableConstrainedBitrate(1400, 1834), new Size(848, 476)));
src.OutputFormat.VideoProfile.Streams.Add(new StreamInfo(new 
    VariableConstrainedBitrate(660, 733), new Size(640, 360)));

src.OutputFormat.AudioProfile = new WmaAudioProfile();
src.OutputFormat.AudioProfile.Bitrate = new 
    VariableConstrainedBitrate(128, 192);
src.OutputFormat.AudioProfile.Codec = AudioCodec.WmaProfessional;
src.OutputFormat.AudioProfile.BitsPerSample = 24;

Job job = new Job();
job.MediaItems.Add(src);
job.OutputDirectory = @"C:\EncodedFiles";
job.Encode();

Hier wird der Code drei verschiedene Bitrates und Größen auf 
encode. Für eine optimale Qualität muss die Größe verkleinert wird, wie die Bitrate reduziert wird. Wenn Sie Ihre eigenen Bitrates angeben, können Sie die IIS Smooth Streaming-Einstellungen in der Benutzeroberfläche von Expression Encoder 3. Hinweis Es ist nicht möglich, die Qualität von Codierung ein Video mit einer höheren Auflösung als die Quelldatei zu erhalten. Und es ist nur sinnvoll, die mit einer höheren Bitrate als die Quelldatei zu codieren, wenn eine schwächere Komprimierungsmethode zu verwenden. Ist das SDK können Sie die Bitrate der Quelldatei zu ermitteln, wird es in der MediaItem SourceVideo Profileigenschaft vorhanden sein:

int bitrate = ((ConstantBitrate)src.SourceVideoProfile.Bitrate).Bitrate;

Das SDK die Bitrate der Quelldatei erhalten konnte nicht, erhalten Sie eine sehr enge Schätzung anhand der Dateigröße der. Dies ist die Formel:

Ungefähre Bitrate in kb/s = (die Dateigröße in Kilobyte * 8 / video Dauer in Sekunden)-audio Bitrate in kb/s

Die System.IO.FileInfo-Klasse können Sie um die Dateigröße von Quell- und das SDK zum Abrufen der Dauer (MediaItem.FileDuration-Eigenschaft) und ggf. die audio Bitrate zu erhalten. Wenn Sie audio Bitrate nicht kennen, verwenden Sie 128 oder 160 schätzen (die meisten audio Bitrates sind zwischen 64 und 192); außerdem können Sie möglicherweise im Fenster Eigenschaften von Windows Media Player audio Bitrate zu erhalten (drücken Sie ALT, um Menü anzeigen und dann die Datei | Eigenschaften).

Überwachen des Status:

Da ein Codierungsauftrag Stunden dauern kann, ist es hilfreich, den Fortschritt Codieren angezeigt werden. Das SDK enthält eine einfache Möglichkeit zum Überwachen von des Codieren Prozess über ein Ereignis einen Handler für hinzugefügt werden können:

job.EncodeProgress += new EventHandler<EncodeProgressEventArgs>(OnProgress);

Fügen Sie eine Methode wie folgt das Ereignis behandeln:

static void OnProgress(object sender, EncodeProgressEventArgs e)
{
  Console.Clear();
  Console.WriteLine((100 * (e.CurrentPass - 1) + e.Progress) / e.TotalPasses + "%");
}

Multi-Pass Codierung ist ein neues Konzept für dieses Codebeispiel relevant. Wenn eine Variable Bitrate codieren, erfolgt in zwei Schritten, bekannt als übergibt des Prozesses. Während des ersten Durchlaufs wird die Quelle, das video um zu ermitteln, welche Teile würde, profitieren von einer höheren Bitrate und komplexeste sind analysiert. Während des zweiten Durchlaufs wird das Video codiert mithilfe der Informationen, die während der ersten Durchgang abgerufen. Also, wenn Sie eine Konstante Bitrate verwenden, besteht keine Notwendigkeit der CurrentPass oder TotalPasses Eigenschaften der Klasse EncodeProgressEventArgs.

Kombinieren von Videos

Wenn Sie nur einen Teil eines Videos zu codieren oder kombinieren mehrere Videos zu einem möchten, bietet das SDK-Unterstützung. Ändern Sie den und die Endzeit für ein Medienobjekt Quelle möchten, können Sie die Clips-Eigenschaft ändern. Nur die ersten sechs Sekunden ein Video codieren möchten, verwenden Sie Code ähnelt:

src.Sources[0].Clips[0].StartTime = new TimeSpan(0);
src.Sources[0].Clips[0].EndTime = new TimeSpan(0, 0, 6);

Andere Videos wie Quelldateien hinzufügen möchten, können Sie zusätzliche Videos der Datenquellen-Eigenschaft der MediaItem anfügen. Dadurch werden die Quelldateien in der Reihenfolge nach einer einzelnen Ausgabedatei codiert werden:

MediaItem src = new MediaItem(@"C:\WMdownloads\AdrenalineRush.wmv");
src.Sources.Add(new Source(@"C:\WMdownloads\Video2.wmv"));

Live Encoding

Mit Expression Encoder unterstützt auch die Codierung von live-Quellen, z. B. eine Webcam. Das Konzept (und Code) ähnelt dem Videodateien codieren, aber verwenden Sie einen anderen Satz von Klassen. Diese befinden sich im Namespace Microsoft.Expression.Encoder.Live.

Die erste Klasse zu verwenden ist LiveJob. LiveJob funktioniert wie Encoder.Job—it Handles werden die Arbeit der Codierung des Videos. Das Ausgabeformat ist jedoch in einem Szenario mit live eine Eigenschaft des LiveJob anstelle eines MediaItem-Objekts (das nicht erforderlich ist). Wenn ein LiveJob-Objekt instanziiert wird, wird Suchen nach Videos an den Computer angeschlossenen Eingabegeräte und Eigenschaften VideoDevices und AudioDevices aufzufüllen. Dann können Sie diese als eine Eingabequelle für den Encoder verwenden. Abbildung 4 zeigt ein Beispiel.

Abbildung 4 Encoding Live Video

using (LiveJob job = new LiveJob())
{
  LiveDevice videoDevice = job.VideoDevices[0];
  LiveDevice audioDevice = job.AudioDevices[0];
  LiveDeviceSource liveSource = job.AddDeviceSource(videoDevice, 
      audioDevice);
  job.ActivateSource(liveSource);
  WindowsMediaBroadcastOutputFormat outputFormat = new 
     WindowsMediaBroadcastOutputFormat();
  outputFormat.BroadcastPort = 8080;
  job.OutputFormat = outputFormat;
  Console.WriteLine("Press enter to stop encoding...");
  job.StartEncoding();
  Console.ReadLine();
  Console.WriteLine("Stopping");
  job.StopEncoding();
}

Mit eine Webcam (sofern Sie eine Verbindung hergestellt haben) eine Codierung live-Sitzung starten wird und es auf Ihrem lokalen Computer Port 8080 übertragen. Zum Anzeigen der Livecodierung Windows Media Player zu öffnen, und wählen Sie Datei | URL öffnen, und geben Sie mms://localhost:8080. Nach einigen Pufferung, sollten Sie das Video aus der Webcam sehen, obwohl Sie eine 20 bis 30 Sekunden Verzögerung aufgrund von der Zeit auffallen zum Codieren und Transportieren des Streams. Potenziell können dieses Video als Quelle für die Windows Media-Dienste- oder IIS-Mediendienste auf der ganzen Welt zu übertragen.

Zusätzliche Tools

Wenn Sie nicht sicher sind, ob die gewählten Codierungseinstellungen die Ausgabequalität Ihnen müssen, bietet die Expression Encoder-3-Benutzeroberfläche ein praktisches Feature namens „ A / B vergleichen. Auf diese Weise können Sie das Codieren des Videos die aktuelle Wiedergabeposition umgebenden fünf Sekunden. Das codierte Video erscheint geteiltem Bildschirm mit Ihrem video Quelle (siehe Abbildung 5 ), damit Sie problemlos die Qualität des codierten Videos mit dem Original vergleichen können.

Abbildung 5 A / B vergleichen in Expression Encoder 3

image: A/B Compare in Expression Encoder

Sie können dann die aktuellen Einstellungen als Voreinstellung benutzerdefinierte speichern, indem Sie auf Bearbeiten | aktuelle Einstellungen als Voreinstellung speichern. Die Voreinstellung gespeichert als XML-Datei, die Sie mit dem SDK verwenden können:

job.ApplyPreset(@"C:\WMdownloads\NewPreset.xml");

Wenn Sie bereits denken, wie einfach es wäre, die Konvertierung von Videodateien mit einer Konsolenanwendung zu automatisieren, schauen Sie sich die Convert-Media PowerShell-Modul für Expression Encoder convertmedia.codeplex.com-zur Verfügung. In diesem Modul PowerShell umschließt Expression Encoder SDK, eine Codierung Befehlszeile-Schnittstelle bereitstellen, ohne Code schreiben zu müssen. Wie bei allen CodePlex-Projekte ist es offene Quelle.

Hoffentlich können Sie nun die grundlegende Terminologie im Zusammenhang mit der Videocodierung verstehen und fundierte Entscheidungen auf dem Codec und Bitrate verwenden. Sie auch wissen, wie die Expression Encoder-3-SDK zum Codieren von Videos für bestimmte Ziele, wie z. B. Xbox 360, iPhone und Silverlight sowie die live-streaming Video. Also warten Sie nicht, um in Ihrem Attic wie Clark W. aufgefangen werden Griswold den Wert Ihrer Heimvideos und vergessene Erinnerungen zu erkennen. Konvertieren Sie diese in ein Format, die Sie für die Öffentlichkeit zugänglich machen.

Adam Miller ist eine Software Engineer für Nebraska Global in Ratinger, Neb. Folgen Sie den Miller Blog unter blog.milrr.com.

Dank an den folgenden technischen Experten für die Überprüfung der in diesem Artikel: Ben Rush