HLSのm3u8ファイルをパースするdart pluginを作成しました
flutterでHLSのm3u8ファイルを扱うとき、現状では手ごろなパーサが見つからなかったのでpluginとして作成しました。
ストリーミングを再生せずメタデータだけ取得したい(解像度・ビットレート・tsファイルのurl...)場合に有用かと思います。
マニフェストファイル・プレイリストファイルともにパース可能です。
使い方
Uri playlistUri; List<String> lines; try { playList = await HlsPlaylistParser.create().parse(playlistUri, lines); } on ParserException catch (e) { print(e); } if (playlist is HlsMasterPlaylist) { // master m3u8 file } else if (playlist is HlsMediaPlaylist) { // media m3u8 file }
マスターファイルのデータ例
HlsMasterPlaylist playlist; playlist.variants[0].format.bitrate;// => 1280000 Util.splitCodec(playlist.variants[0].format.codecs);// => ['mp4a.40.2']['avc1.66.30'] playlist.variants[0].format.width;// => 304(px) playlist.subtitles[0].format.id;// => sub1:Eng playlist.audios[0].format.sampleMimeType// => MimeTypes.AUDIO_AC3
メディアファイルのデータ例
HlsMediaPlaylist playlist; playlist.version;// => 3 playlist.hasEndTag;// => true playlist.segments[0].durationUs;// => 7975000(microsec) playlist.segments[0].encryptionIV;// => '0x1566B' playlist.segments[0].drmInitData.schemeData[0].uuid;// => uuid string