MediaInfo README. MediaInfo is a convenient unified display of the most relevant technical and tag data for video and audio files. How to build MediaInfo. License MediaInfoLib: BSD 2-Clause License Internet permission needed to open network protocols, such as http(s), rtsp, ftp(s), smb(s) and etc. App complitly free and not contains ad. To install Media::MediaInfoLib, simply copy and paste either of the commands in to your terminal. Cpanm Media::MediaInfoLib. Perl -MCPAN -e shell install Media::MediaInfoLib. Build MediaInfoLib Options If you want to compile only some containers support, you can enable or disable them with Compilation defines (in your compiler project file).
Other versions (packaging, OS, interface...) are also available ()
See change log
You can also use MediaInfoOnline to test MediaInfo without installing any software on your computer.
The MediaInfo data display includes:
- Container: format, profile, commercial name of the format, duration, overall bit rate, writing application and library, title, author, director, album, track number, date, duration...
- Video: format, codec id, aspect, frame rate, bit rate, color space, chroma subsampling, bit depth, scan type, scan order...
- Audio: format, codec id, sample rate, channels, bit depth, language, bit rate...
- Text: format, codec id, language of subtitle...
- Chapters: count of chapters, list of chapters...
MediaInfo analyticals include:
- Container: MPEG-4, QuickTime, Matroska, AVI, MPEG-PS (including unprotected DVD), MPEG-TS (including unprotected Blu-ray), MXF, GXF, LXF, WMV, FLV, Real...
- Tags: Id3v1, Id3v2, Vorbis comments, APE tags...
- Video: MPEG-1/2 Video, H.263, MPEG-4 Visual (including DivX, XviD), H.264/AVC, H.265/HEVC, FFV1...
- Audio: MPEG Audio (including MP3), AC3, DTS, AAC, Dolby E, AES3, FLAC...
- Subtitles: CEA-608, CEA-708, DTVCC, SCTE-20, SCTE-128, ATSC/53, CDP, DVB Subtitle, Teletext, SRT, SSA, ASS, SAMI...
MediaInfo features include:
- Read many video and audio file formats
- View information in different formats (text, sheet, tree, HTML...)
- Customise these viewing formats
- Export information as text, CSV, HTML...
- Graphical user interface, command line interface, or library (.dll/.so/.dylib) versions available
- Integrate with the shell (drag 'n' drop, and Context menu)
- Internationalisation: display any language on any operating system
- Localisation capability (for which volunteers are needed - please contact us!)
License:It is Open-Source software which means that end users and developers have freedom to study, to improve and to redistribute the program (BSD-style license). -->
It is common in the media space to want to determine the characteristics of a media file. In a local environment, a commonly used tool is MediaInfoLib in the form of the executable program MediaInfo.
MediaInfo(Lib) is a convenient unified display of the most relevant technical and tag data for video and audio files.
It becomes a bit more difficult to get this metadata from files in cloud storage. This project provides both an Azure Function and a Console App, both using the cross-platform .NetCore, to retrieve a report on a file stored in Azure Blob Storage. The console app also demonstrates how to upload a provided test file.
About the Software Components
The project has two simple libraries, both of which attempt to use SOLID design principles and Clean Architecture in general. For brevity and simplicity, these are not canonical examples of either.
The Storage.Helper library provides three services:
BlobCopyAsync, BlobUploadAsync, GetSasUrlAsync, ContainerCreateIfNotExistsAsync, BlobExistsAsync, GetBlobContentLengthAsync
- Read Byte-Range Operations:
It is this latter service which is used in IMediaInfoReportService, to only read those bytes required by the MediaInfo library to extract the metadata.
Authentication and Authorization
The ServiceCollectionExtensions.cs in Storage.Helper include both Azure Fluent Management and Azure TokenCredential to set up the auth for the project's services.
When deployed to Azure as a Function App, with system assigned managed identity enabled, the web-host will provide the required credentials for both IAzure and TokenCredential objects; which are injected into the service container and used in the implementations.This managed service principal must have appropriate role based access control to the storage accounts it needs to access via the code sample, and access to the media services resource.
The following are needed to access storage:
- Storage Blob Data Contributor
- Reader and Data Access
Run commands from a shell.azure.com instance, or a bash shell with the Azure CLI tooling, to permit the application.
Follow this detailed example on how to add these roles.
Azure Function application settings
On your deployed function app instance, set:
Create a local.settings.json file (for Azure Functions) or a appsettings.json file (for the console app) and set the above to test locally. Template files for the FunctionApp and ConsoleApp have been provided. These settings will allow the local user to log in interactively and use their identity for Azure operations, ensure they have sufficient privilege (same as the managed identity).
To quickly deploy the Sample.MediaInfo.FxnApp to Azure, hit the button below:
You will be presented with a screen similar to the image below:
Do the following:
- Create or Select a Resource Group
- Enter a Site Name
- Enter a Hosting Plan Name
- Hit the Review + Create button to validate & deploy the application.
You can use the simple CURL scripts provided at the end of MediaInfoFunction.cs to test the local (or remote) function app.
Once the appsettings.json is created, simply run the console app to test it.
As a fall-back if UploadAndAnalyze.cs does not find a local file, it will attempt to analyze an existing file in Azure Storage.