2个不稳定版本
0.2.0 | 2024年3月17日 |
---|---|
0.1.0 | 2021年5月12日 |
#99 in 视频
1,999 每月下载量
在 9 个包中使用 (直接使用 3 个)
14KB
257 行
rfc6381-codec
Rust库,用于解析和生成RFC 6381第3节中指定的编解码器字符串值。
支持的RFC 6381功能
-
avc1
-
mp4a
仅支持对象类型标识符0x40
(MPEG 4音频) 支持 - 不支持其他四字符编码值
- 不支持包括'charset'和'percent-encoding'在内的通用语法
lib.rs
:
支持编解码器参数值
另请参阅,
基本用法
解析编解码器字符串,
let codec = Codec::from_str("avc1.4D401E");
if let Ok(Codec::Avc1(avc1)) = codec {
assert_eq!(avc1.profile(), 0x4d);
} else {
panic!("unexpected codec type");
}
生成编解码器字符串,
let codec = Codec::avc1(0x4d, 0x40, 0x1e);
assert_eq!(codec.to_string(), "avc1.4D401E")
不支持'fancy'语法
RFC 6381指定了以下BNF语法用于通用语法,但此包尚未完全支持
codecs := cod-simple / cod-fancy
cod-simple := "codecs" "=" unencodedv
unencodedv := id-simple / simp-list
simp-list := DQUOTE id-simple *( "," id-simple ) DQUOTE
id-simple := element
; "." reserved as hierarchy delimiter
element := 1*octet-sim
octet-sim := <any TOKEN character>
; Within a 'codecs' parameter value, "." is reserved
; as a hierarchy delimiter
cod-fancy := "codecs*" "=" encodedv
encodedv := fancy-sing / fancy-list
fancy-sing := [charset] "'" [language] "'" id-encoded
; Parsers MAY ignore <language>
; Parsers MAY support only US-ASCII and UTF-8
fancy-list := DQUOTE [charset] "'" [language] "'" id-list DQUOTE
; Parsers MAY ignore <language>
; Parsers MAY support only US-ASCII and UTF-8
id-list := id-encoded *( "," id-encoded )
id-encoded := encoded-elm *( "." encoded-elm )
; "." reserved as hierarchy delimiter
encoded-elm := 1*octet-fancy
octet-fancy := ext-octet / attribute-char
DQUOTE := %x22 ; " (double quote)
特别注意以下生成式
cod-simple
- 指定属性名称+值结构codec=".."
— 此包仅支持处理此属性的值(引号内的位)。cod-fancy
(和相关生成式fancy-sing
/fancy-list
等) — 显示可选地指定数据字符集的扩展结构,例如en-gb'UTF-8'%25%20xz
或''%25%20xz
— 此包不支持使用这些结构的值。
依赖关系
~195KB