Después de unos días de hacer esta pregunta, he encontrado MediaInfo que proporciona docenas de información técnica y de etiquetas sobre un archivo de audio o video.
Hay un contenedor JNI para MediaInfo en subs4me 's source tree que me parece muy útil. Éstos son algunos fragmentos de código que muestran cómo extraer información de un archivo multimedia:
String fileName = "path/to/my/file";
File file = new File(fileName);
MediaInfo info = new MediaInfo();
info.open(file);
String format = info.get(MediaInfo.StreamKind.Video, i, "Format",
MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
int bitRate = info.get(MediaInfo.StreamKind.Video, i, "BitRate",
MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
float frameRate = info.get(MediaInfo.StreamKind.Video, i, "FrameRate",
MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
short width = info.get(MediaInfo.StreamKind.Video, i, "Width",
MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
int audioBitrate = info.get(MediaInfo.StreamKind.Audio, i, "BitRate",
MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
int audioChannels = info.get(MediaInfo.StreamKind.Audio, i, "Channels",
MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
Tenga en cuenta que el código anterior es un ejemplo básico y no contiene ninguna comprobación de errores (que es un mal hábito en una verdadera guión). También tenga en cuenta que la información que puede extraer con MediaInfo no se limita a los anteriores. Consulte la salida sin procesar de MediaInfo para saber qué tipo de información multimedia puede extraer o leer MediaInfo C++ SDK.
qué formatos/codificaciones estamos hablando aquí? Las personas tienen diferentes definiciones de "común" para los formatos de medios. – aperkins
Me refiero a MPEG, DivX, XviD, Matroska, Real Video, formatos de Windows Media para videos; MP3 y AC3 para audios. No hay ciertos formatos específicamente que necesito, así que cuanto más soporte de formato, mejor para mí. –
¿Está destinado subs4me para la plataforma Linux solamente? cuando probé su muestra, toqué la excepción debido a esta línea en lib 'if (! (Platform.isLinux())) return;' – kitokid