MediaInfo obtiene los subtítulos de manera más inteligente.
Estoy creando una aplicación de formularios de Windows con MediaInfo Wrapper y no puedo encontrar ninguna solución buena para obtener todos los subtítulos y ponerlos en un arreglo o cadena.
Porque si codifico los subtítulos como “subtitle1”, “subtitle2”, “subtitle3”, “subtitle4”, etc., y no hay subtítulos en absoluto o no tantos como los que codifiqué, obtengo el siguiente error:
La cadena de entrada no estaba en un formato correcto.
Entonces, ¿cómo puedo obtener los subtítulos y listarlos en una cadena o arreglo de manera ordenada como “Eng”, “Fra”, “Spa”, sin codificación dura y sin el error mencionado anteriormente? (Obtengo este error siempre que no haya subtítulos).
Mi código:
// Codificación dura (posibles) subtítulos…
string subUno = MI.Get(StreamKind.Text, 0, “Language/String3”);
string subDos = MI.Get(StreamKind.Text, 1, “Language/String3”);
string subTres = MI.Get(StreamKind.Text, 2, “Language/String3”);
string cuentaSubtitulos = MI.Get(StreamKind.General, 0, “TextCount”); // Contar cuántos subtítulos se incluyen
string subtítulos = “”;
int subtítulosInt = Int32.Parse(cuentaSubtitulos);
// Intentando encontrar una mejor solución aquí…
if (subtítulosInt >= 1 && subtítulosInt < 2)
{
subtítulos = subUno;
} else if (subtítulosInt >= 1 && subtítulosInt <= 2)
{
subtítulos = subUno + “,” + subDos;
} else {
subtítulos = “”;
}
//var subsArray = subtítulos.Split(‘,’);
//subtítulos = String.Join(“,”, subsArray);
// Mostrar los datos de MediaInfo en el cuadro de texto
string datos = “”;
datos += “Subtítulos: ” + subtítulos + “\r\n”;
davy.ai
Para obtener todos los subtítulos en una aplicación de formularios de Windows con MediaInfo Wrapper y almacenarlos en un array o cadena sin codificar de forma rígida y evitando el error “Input string was not in a correct format”, puedes utilizar el siguiente método:
MI.Get(StreamKind.General, 0, "TextCount")
y almacénalo en una variable.subtitles
.MI.Get(StreamKind.Text, i, "Language/String3")
, dondei
es la variable del iterador.subtitles
con un separador de coma.subtitles
como un array utilizandovar subsArray = subtitles.Split(',')
o como una cadena con comas separando cada idioma de subtítulo.El código actualizado se vería así:
Esto obtendrá dinámicamente todos los subtítulos sin codificar de forma rígida y los almacenará en una variable de cadena separados por comas. Puedes convertir fácilmente esta cadena en un array como se muestra en el código comentado o mantenerla como una cadena para mostrarla.