2 个不稳定版本
0.2.0 | 2024年6月26日 |
---|---|
0.1.0 | 2024年5月21日 |
#705 在 解析器实现
每月27次下载
150KB
3K SLoC
HLS 播放列表
一个用于序列化和反序列化 HLS 播放列表(即扩展 M3U 播放列表)的库。
遵循 RFC 8216 的此更新版本。
用法
播放列表
use hls_playlist::playlist::{MediaPlaylist, MediaSegment};
use hls_playlist::{FloatOrInteger};
let playlist = MediaPlaylist {
segments: vec![
MediaSegment {
uri: "https://example.com/1.mp4".into(),
duration_seconds: FloatOrInteger::Float(5.5),
title: String::new(),
byte_range_or_bitrate: None,
is_discontinuity: false,
encryption: None,
media_initialization_section: None,
absolute_time: None,
is_gap: false,
parts: vec![]
}
],
..MediaPlaylist::default()
};
let mut output = Vec::new();
playlist.serialize(&mut output).unwrap();
assert_eq!(String::from_utf8(output).unwrap(), "#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:0
#EXTINF:5.5
https://example.com/1.mp4
");
标签
use hls_playlist::tags::Tag;
let mut output = vec![];
Tag::M3u.serialize(&mut output).unwrap();
Tag::XStart { offset_seconds: 10.0, is_precise: false }.serialize(&mut output).unwrap();
assert_eq!(String::from_utf8(output).unwrap(), "#EXTM3U
#EXT-X-START:TIME-OFFSET=10
");
特性
steering-manifest
: 启用序列化和反序列化引导清单的支持。
路线图
就序列化而言,这个库已经100%完成,功能齐全。我打算在将来某个时候实现反序列化。
- 序列化引导清单
- 序列化标签
- 序列化播放列表
- 反序列化引导清单
- 反序列化标签
- 反序列化播放列表
依赖关系
~1–1.5MB
~25K SLoC