What is the best way to get and set the meta data for mp3, mp4, avi files etc. with .NET?
I use MediaInfo with my C# apps, gives you a lot of information about media files.
These are the example class files for different languages found in the MediaInfo.dll zip
- MediaInfoDLL.cs
- MediaInfoDLL.def
- MediaInfoDLL.h
- MediaInfoDLL.java
- MediaInfoDLL.jsl
- MediaInfoDLL.pas
- MediaInfoDLL.py
- MediaInfoDLL.vb
- MediaInfoDLL_Static.h
You do have to use interop and I don't know if you can edit tags, I've never needed to do that but it's pretty much a swiss army knife at least for getting media information from files.
Link to downloads page (sourceforge)
MediaInfo_0.7.7.4_DLL_Win32.zip
You can use free UltraID3Lib .NET library to read/write MP3 metadata.
I've been looking at the NTag project as well, which handles MP3/WMA/OGG. I don't know of a single library that handles audio and video files, so you might have to use a few.
I've recently used Tag Lib Sharp to write some C# apps for cleaning up and maintaining my music library. I found the library very easy to use and although i've only used it for MP3's, it appears to support a range of other music/video formats.
Looks like MediaInfo is read-only at this point, by the way: http://sourceforge.net/forum/message.php?msg_id=4241318&abmode=1
Very cool project, though. It's fun finding out about all this cool stuff here on SO.
I used COM interop to access DirectShow's Media Detector functionality.
This does work pretty well, but it's a right pain in the backside. You need to know lots about COM, win32 interop, and so on.
You can also use DirectShowNet which should handle most of that for you, I just didn't want to lug that whole thing around when I was only interested in the MediaDetector part
After struggling with NAudio (note that it can only run on Windows) and even TagLibSharp, I found out ATL .NET. What I love about it is it can work on Stream and it can detect formats as well.
- Install
z440.atl.core
Nuget package:
dotnet add package z440.atl.core
- Get the
Track
object and get as many information as you want:
var track = new Track(stream);
Console.WriteLine(track.Duration);
// More info
© 2022 - 2024 — McMap. All rights reserved.