#codec #parser #parser-generator #rfc #generate #section #rfc6381

rfc6381-codec

解析器和生成器,用于RFC 6381第3节中指定的编解码器字符串值

2个不稳定版本

0.2.0 2024年3月17日
0.1.0 2021年5月12日

#99 in 视频

Download history 1145/week @ 2024-04-08 872/week @ 2024-04-15 618/week @ 2024-04-22 485/week @ 2024-04-29 454/week @ 2024-05-06 732/week @ 2024-05-13 739/week @ 2024-05-20 984/week @ 2024-05-27 580/week @ 2024-06-03 468/week @ 2024-06-10 475/week @ 2024-06-17 440/week @ 2024-06-24 229/week @ 2024-07-01 393/week @ 2024-07-08 334/week @ 2024-07-15 1009/week @ 2024-07-22

1,999 每月下载量
9 个包中使用 (直接使用 3 个)

MIT/Apache

14KB
257

rfc6381-codec

Rust库,用于解析和生成RFC 6381第3节中指定的编解码器字符串值。

crates.io version Documentation Coverage Status

支持的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