项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求调整为可以在Linux下运行,经过这两天的资料查找,实现了Linux下通过.NET来获取多媒体文件信息的功能。详情如下:
1、运行环境是CentOS 7
2、编译环境是VS2017+.NET Core2.2
项目引用 MediaInfo.DotNetWrapper
CentOS下安装以下环境(已安装过的可忽略):
sudo ln -s /usr/lib64/libmediainfo.so.0 /usr/lib64/libmediainfo.so sudo yum install https://mediaarea.net/download/binary/mediainfo/18.08.1/mediainfo-18.08.1.x86_64.CentOS_7.rpm sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm sudo yum update sudo yum install dotnet-sdk-2.2
C#运行代码如下:
using log4net; using log4net.Config; using log4net.Repository; using MediaInfo.DotNetWrapper; using MediaInfo.DotNetWrapper.Enumerations; using System; using System.IO; namespace Services { public class Program { protected static ILog log = LogManager.GetLogger(logRepository.Name, "Program"); public static void Main(string[] args) { XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); using (var mediaInfo =new MediaInfo.DotNetWrapper.MediaInfo()) { mediaInfo.Open("123.mpg"); string FileType = mediaInfo.Get(StreamKind.Video, 0, "StreamKind"); int s = 0; int.TryParse(mediaInfo.Get(StreamKind.Video, 0, "Duration"), out s); log.Debug($"文件类型:{FileType}"); log.Debug($"视频长度:{s}"); } } } }
MediaInfo参数大全(转自:http://www.cnblogs.com/royzou/archive/2011/09/06/mediainfo_parameter.html)
以下都是通过Get(StreamKind.***,0,i++,InfoKind.Name)获得的
1.视频参数
Video parameter 参数:Count 值:201 参数:Status 值: 参数:StreamCount 值:1 参数:StreamKind 值:Video 参数:StreamKind/String 值:Video 参数:StreamKindID 值:0 参数:StreamKindPos 值: 参数:Inform 值:ID : 1 Format : MPEG-4 Visual Format profile : Simple@L4a Format settings, BVOP : No Format settings, QPel : No Format settings, GMC : No warppoints Format settings, Matrix : Default (H.263) Codec ID : 20 Duration : 52s 241ms Bit rate mode : Variable Bit rate : 2 956 Kbps Nominal bit rate : 2 700 Kbps Maximum bit rate : 3 000 Kbps Width : 640 pixels Height : 480 pixels Display aspect ratio : 4:3 Frame rate mode : Variable Frame rate : 28.426 fps Minimum frame rate : 14.925 fps Maximum frame rate : 61.224 fps Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Compression mode : Lossy Bits/(Pixel*Frame) : 0.339 Stream size : 18.4 MiB (97%) Encoded date : UTC 2011-09-02 02:58:59 Tagged date : UTC 2011-09-02 02:58:59 参数:ID 值:1 参数:ID/String 值:1 参数:UniqueID 值: 参数:UniqueID/String 值: 参数:MenuID 值: 参数:MenuID/String 值: 参数:Format 值:MPEG-4 Visual 参数:Format/Info 值: 参数:Format/Url 值: 参数:Format_Commercial 值:MPEG-4 Visual 参数:Format_Commercial_IfAny 值: 参数:Format_Version 值: 参数:Format_Profile 值:Simple@L4a 参数:Format_Compression 值: 参数:MultiView_BaseProfile 值: 参数:MultiView_Count 值: 参数:MultiView_Layout 值: 参数:Format_Settings 值: 参数:Format_Settings_BVOP 值:No 参数:Format_Settings_BVOP/String 值:No 参数:Format_Settings_QPel 值:No 参数:Format_Settings_QPel/String 值:No 参数:Format_Settings_GMC 值:0 参数:Format_Settings_GMC/String 值:No warppoints 参数:Format_Settings_Matrix 值:Default (H.263) 参数:Format_Settings_Matrix/String 值:Default (H.263)