https://github.com/bytedev/bytedev.m3u
.NET Standard library to help handle playlists in the M3U format.
https://github.com/bytedev/bytedev.m3u
csharp dotnet-standard m3u media playlists video
Last synced: 5 months ago
JSON representation
.NET Standard library to help handle playlists in the M3U format.
- Host: GitHub
- URL: https://github.com/bytedev/bytedev.m3u
- Owner: ByteDev
- License: mit
- Created: 2021-05-27T07:24:22.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-02-24T02:51:57.000Z (almost 4 years ago)
- Last Synced: 2025-07-24T21:12:51.989Z (6 months ago)
- Topics: csharp, dotnet-standard, m3u, media, playlists, video
- Language: C#
- Homepage:
- Size: 22.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://ci.appveyor.com/project/bytedev/ByteDev-M3u/branch/master)
[](https://www.nuget.org/packages/ByteDev.M3u)
[](https://github.com/ByteDev/ByteDev.M3u/blob/master/LICENSE)
# ByteDev.M3u
.NET Standard library to help handle playlists in the M3U format.
## Installation
ByteDev.M3u is hosted as a package on nuget.org. To install from the Package Manager Console in Visual Studio run:
`Install-Package ByteDev.M3u`
Further details can be found on the [nuget page](https://www.nuget.org/packages/ByteDev.M3u/).
## Release Notes
Releases follow semantic versioning.
Full details of the release notes can be viewed on [GitHub](https://github.com/ByteDev/ByteDev.M3u/blob/master/docs/RELEASE-NOTES.md).
## M3U Format & Library Support
The library supports both M3U simple format and M3U extended format (mostly).
Example of playlist content in simple M3U format:
```
https://somewhere/some/resource
C:\Sample.mp3
Greatest Hits\My Song.mp3
# This is a comment
```
Example of playlist content in M3U extended format describing two resources:
```
#EXTM3U
#EXTINF:180, Sample artist - Sample title
Sample.mp3
#EXTINF:240,Example Artist - Example title
Greatest Hits\Example.ogg
```
Notes on library support:
- Empty lines are ignored.
- Both Windows (`\r\n`) and Unix (`\n`) line endings are supported.
- Comments:
- Are supported using the hash `#` character as the first character on a line.
- Are ignored by the library.
- Extended M3U format content:
- Must have the extended header directive (`#EXTM3U`) on the first line.
- Must have any encoding directive (`#EXTENC:`) on the second line.
- Resources always have their location (path, URI etc.) on the last line of each resource entry.
- Extended M3U format directives supported:
- `#EXTM3U` - Playlist header.
- `#EXTENC:` - Playlist encoding.
- `#PLAYLIST:` - Playlist title.
- `#EXTINF:` - Resource track info.
- `#EXTGRP:` - Resource grouping.
- `#EXTALB:` - Resource album info.
- `#EXTART:` - Resource album artist.
- `#EXTGENRE:` - Resource album genre.
- `#EXTBYT:` - Resource file size in bytes.
- `#EXTIMG:` - Resource cover image file.
## Usage
Example of initialization via class constructor:
```csharp
string content =
"#EXTM3U\n" +
"#EXTENC: UTF-8\n" +
"#PLAYLIST: My Sample Playlist\n" +
"#EXTINF:180, Sample artist - Sample title\n" +
"Sample.mp3"
var pl = new M3uPlaylist(content);
// pl.IsExtended == true
// pl.Encoding == "UTF-8"
// pl.PlaylistTitle == "My Sample Playlist"
// pl.Resources.Single().TrackInfo == "180, Sample artist - Sample title"
// pl.Resources.Single().Location == "Sample.mp3"
```
Example of initialization via `Load` method:
```csharp
var pl = M3uPlaylist.Load(@"C:\Playlists\MyPlaylist.m3u");
```