wve vídeo videos para online gratis formato cómo convertir convertidor c# .net video mp4 duration

c# - videos - cómo convertir un vídeo de formato.wve a mp4



Cómo obtener la duración del video desde mp4, wmv, flv, mov videos (9)

Al usar Windows Media Player Component también, podemos obtener la duración del video.
El siguiente fragmento de código puede ayudarlos a ustedes:

using WMPLib; // ... var player = new WindowsMediaPlayer(); var clip = player.newMedia(filePath); Console.WriteLine(TimeSpan.FromSeconds(clip.duration));

y no olvide agregar la referencia de wmp.dll que estará presente en la carpeta System32 .

Bien. En realidad necesito sobre todo el formato mp4. Pero si es posible obtener otros tipos también sería bueno. Solo necesito leer la duración del archivo. ¿Cómo puedo hacer eso con C # 4.0?

Así que lo que necesito es como este video es como: 13 minutes 12 seconds

Puedo usar 3 exes de terceros también. Al igual que guardan la información sobre el archivo en un archivo de texto. Puedo analizar ese archivo de texto.

Gracias.


Creo que estás buscando FFMPEG - http://www.ffmpeg-csharp.com/

También hay algunas alternativas gratuitas que puede leer sobre ellas en esta pregunta: ¿ Usar FFmpeg en .net?

FFMpeg.NET FFMpeg-Sharp FFLib.NET

Puede ver este enlace para ver ejemplos de cómo usar FFMPEG y encontrar la duración: http://jasonjano.wordpress.com/2010/02/09/a-simple-c-wrapper-for-ffmpeg/

public VideoFile GetVideoInfo(string inputPath) { VideoFile vf = null; try { vf = new VideoFile(inputPath); } catch (Exception ex) { throw ex; } GetVideoInfo(vf); return vf; } public void GetVideoInfo(VideoFile input) { //set up the parameters for video info string Params = string.Format("-i {0}", input.Path); string output = RunProcess(Params); input.RawInfo = output; //get duration Regex re = new Regex("[D|d]uration:.((//d|:|//.)*)"); Match m = re.Match(input.RawInfo); if (m.Success) { string duration = m.Groups[1].Value; string[] timepieces = duration.Split(new char[] { '':'', ''.'' }); if (timepieces.Length == 4) { input.Duration = new TimeSpan(0, Convert.ToInt16(timepieces[0]), Convert.ToInt16(timepieces[1]), Convert.ToInt16(timepieces[2]), Convert.ToInt16(timepieces[3])); } } }


El proyecto FFMPEG tiene una herramienta, llamada ffprobe, que puede proporcionarle la información que necesita sobre sus archivos multimedia y obtener la información en un JSON bien formado.

Eche un vistazo a esta respuesta para ver un ejemplo.


En mi humilde opinión, puede usar MediaInfo que le brinda mucha información sobre los archivos multimedia.
Existe un CLI para que pueda usarlo desde su código y obtener la información que necesita.
Puedes echar un vistazo a este enlace .


Encontré que la biblioteca NReco.VideoInfo es la mejor opción y mucho más simple que algunas de las anteriores. Es tan simple como darle a la biblioteca una ruta de archivo y escupe los metadatos:

var ffProbe = new FFProbe(); var videoInfo = ffProbe.GetMediaInfo(blob.Uri.AbsoluteUri); return videoInfo.Duration.TotalMilliseconds;


Puede usar el objeto DirectShow API MediaDet , a través de la biblioteca de envoltorios de DirectShow.NET. Consulte Obtención de la longitud del video para el ejemplo de código, get_StreamLength obtiene la duración en segundos. Esto supone que Windows tiene instalado el demultiplexor MPEG-4 (requiere componentes de terceros con Windows antes de las 7, creo que lo mismo se aplica a otra respuesta de cezor , aunque hay componentes gratuitos para redistribuir).


También puede usar Windows Media Player, aunque no es compatible con todos los tipos de archivos que solicitó.

using WMPLib; public Double Duration(String file) { WindowsMediaPlayer wmp = new WindowsMediaPlayerClass(); IWMPMedia mediainfo = wmp.newMedia(file); return mediainfo.duration; } }


Esta respuesta acerca de P / Invoke for Shell32 me recordó el paquete de códigos API de Windows para acceder a las API comunes de Windows Vista / 7/2008 / 2008R2.

Fue muy fácil, usar la demostración PropertyEdit en los ejemplos incluidos, para descubrir la API de Shell32 para obtener varias propiedades de archivos de medios, como la duración.

Supongo que se aplica el mismo requisito previo para tener instalados los demultiplexores adecuados, pero fue bastante simple, ya que solo requería agregar referencias a Microsoft.WindowsAPICodePack.dll y Microsoft.WindowsAPICodePack.Shell.dll y el siguiente código:

using Microsoft.WindowsAPICodePack.Shell; using Microsoft.WindowsAPICodePack.Shell.PropertySystem; using (ShellObject shell = ShellObject.FromParsingName(filePath)) { // alternatively: shell.Properties.GetProperty("System.Media.Duration"); IShellProperty prop = shell.Properties.System.Media.Duration; // Duration will be formatted as 00:44:08 string duration = prop.FormatForDisplay(PropertyDescriptionFormatOptions.None); }

Otras cosas

Algunas propiedades comunes para un archivo multimedia de audio MPEG-4 / AAC:

System.Audio.Format = {00001610-0000-0010-8000-00AA00389B71} System.Media.Duration = 00:44:08 System.Audio.EncodingBitrate = ?56kbps System.Audio.SampleRate = ?32 kHz System.Audio.SampleSize = ?16 bit System.Audio.ChannelCount = 2 (stereo) System.Audio.StreamNumber = 1 System.DRM.IsProtected = No System.KindText = Music System.Kind = Music

Es fácil recorrer todas las propiedades si está buscando los metadatos disponibles:

using (ShellPropertyCollection properties = new ShellPropertyCollection(filePath)) { foreach (IShellProperty prop in properties) { string value = (prop.ValueAsObject == null) ? "" : prop.FormatForDisplay(PropertyDescriptionFormatOptions.None); Console.WriteLine("{0} = {1}", prop.CanonicalName, value); } }


StreamReader errorreader; string InterviewID = txtToolsInterviewID.Text; Process ffmpeg = new Process(); ffmpeg.StartInfo.UseShellExecute = false; ffmpeg.StartInfo.ErrorDialog = false; ffmpeg.StartInfo.RedirectStandardError = true; ffmpeg.StartInfo.FileName = Server.MapPath("ffmpeg.exe"); ffmpeg.StartInfo.Arguments = "-i " + Server.MapPath("videos") + "//226.flv"; ffmpeg.Start(); errorreader = ffmpeg.StandardError; ffmpeg.WaitForExit(); string result = errorreader.ReadToEnd(); string duration = result.Substring(result.IndexOf("Duration: ") + ("Duration: ").Length, ("00:00:00.00").Length);