2010-09-24 6 views
0

J'utilise le SDK Expression Encoder 3 et j'essaie de spécifier la langue audio de sortie. La raison ultime pour laquelle je fais cela est d'encoder une piste audio en anglais et de spécifier d'autres pistes audio optionnelles comme d'autres langues. Expression Encoder ne prend pas en charge cette fonctionnalité, mais si vous encodez des pistes distinctes en tant que langues différentes, Windows Media Stream Editor peut les regrouper en un seul fichier.Spécifier la langue de sortie audio dans Expression Encoder

Je ne trouve aucun moyen de changer la langue de sortie. J'ai essayé les balises de métadonnées, mais cela met juste un langage d'appel de balise; il ne change pas réellement le langage LCID de la piste. Donc, l'éditeur de flux voit toujours comme l'anglais.

J'ai également essayé de définir la culture du thread et la culture de l'interface utilisateur en cours, en pensant que c'était à partir de là. Cependant, le SDK génère des tonnes de nouveaux threads en interne et je pense que ceux-ci obtiennent mon changement de culture.

Ceci est vraiment ennuyeux et je ne trouve rien à propos de changer la langue pour l'encodeur. Les termes de recherche sont trop génériques et tout ce que je reçois sont des fiches techniques sur l'encodeur. :(S'il vous plaît aider!

+0

Une autre approche à laquelle j'ai pensé est de permettre à Expression Encoder de coder en utilisant la mauvaise langue, puis de changer la langue après le fait. Cette solution serait bien, mais encore une fois, je ne peux pas trouver un moyen de le faire sans ré-encodage non plus. –

Répondre

1

J'ai trouvé la réponse et c'est comme je pensais.Il semble que vous ne pouvez pas changer la langue de sortie de Expression Encoder 3. Il est question de support multilingue dans Expression Encoder 4, mais il semble limité, bien que je ne l'ai pas testé, IIS Smooth streaming.

la solution est de permettre la sortie du codeur le fichier audio en anglais, puis changer la langue après le fait.

J'accompli cela en utilisant Deux projets open source centrés autour de SDK DirectShow et le SDK Windows Media Format.Winds wrappers .NET pour les deux situés ici: DirectShow et WMFormat

Le projet WindowsMediaNet dispose d'un exemple de projet appelé WMVCopy. Cela copie un fichier WMV à un autre, tout en reconstruisant les en-têtes, etc. Cependant, il ne recode pas le flux, il le copie simplement d'un fichier à l'autre. C'est exactement ce que je voulais.

I modifié le code WMVCopy pour changer la langue de tous les cours d'eau:

int streamCount = 0; 
m_pReaderProfile.GetStreamCount(out streamCount); 
for (int streamIndex = 0; streamIndex < streamCount; streamIndex++) 
{ 
    IWMStreamConfig stream = null; 
    m_pReaderProfile.GetStream(streamIndex, out stream); 

    ((IWMStreamConfig3)stream).SetLanguage(language); 
    m_pReaderProfile.ReconfigStream(stream); 
} 

Cette boucle à travers chaque flux et définit la langue à la chaîne de LCID spécifié. La langue doit être sous la forme d'en-us ou de ca-fr. La partie d'importation est la partie ReconfigureStream. Cette méthode doit être appelée pour que le changement prenne effectivement effet. Vous devez également vous assurer de le faire après le chargement du profil de lecteur.

Je ne suis pas sûr si quelqu'un d'autre a besoin de faire cela. Mais si c'est le cas, j'espère que cela aidera.

Questions connexes