
# 视频
视频内部使用PyAV处理数据。
- 支持的格式：mp4、mkv、webm、avi、mov、flv、m4v、m4a、3gp、3g2、ts。
- 支持的编码：avc1、avc3、h264、hvc1、h265、hevc、vp9、vp8、mp4v。
视频对象的属性和方法如下所示：
表1属性（Attributes） 
| **属性名**  | **类型** | **说明**             |
|:---|:---|:---|
| filename | str    | 视频文件的路径名（如果从文件加载）。 |
| format   | str    | 视频格式（如mp4、avi）。    |
| data     | bytes  | 视频数据。              |
   
表2方法（Methods） 
| **方法名**        | **参数**                                                                                                                                                                                             | **返回值** | **说明**                             |
|:---|:---|:---|:---|
| __init__       | filename: Union\[str, os.PathLike\] = None,data: Union\[str, bytes\] = None                                                                                                                        | None    | 构造函数：从文件或二进制数据加载视频。                |
| truncate       | start_time: float（开始时间，秒）\<br\>end_time: float（结束时间，秒）\<br\>shape: Optional\[tuple\[int, int\]\]（目标分辨率）\<br\>fps: float = None（目标帧率）\<br\>codec: str = "avc1"（编码格式）\<br\>format: str = "mp4"（输出格式） | Video   | 截取视频片段，支持调整分辨率、帧率和编码格式，返回新Video对象。 |
| write          | filename: str, codec: str                                                                                                                                                                          | None    | 保存视频到文件。                           |
| convert_format | format                                                                                                                                                                                             | Video   | 转换为不同格式，返回新的Video对象。               |
   
#### 视频读取
该示例演示如何从obs路径下"obs://xxxxx/xxxxx"读取视频，并且转换成帧加载到dataset中。
```
import os
from aura_frame.multimodal import ai_lake
target_database = "test"
con = ai_lake.connect(
    aura_endpoint=os.getenv("AURA_ENDPOINT"),
    aura_endpoint_name=os.getenv("AURA_ENDPOINT_NAME"),
    aura_workspace_id=os.getenv("AURA_WORKSPACE"),
    lf_catalog_name=os.getenv("AURA_CATALOG"),
    access_key=os.getenv("access_key"),
    secret_key=os.getenv("secret_key"),
    default_database=target_database,
    use_single_cn_mode=True
)
try:
    ds = con.read_video_frames("obs://xxxxx/xxxxx", image_height=300, image_width=300, image_format='jpg', file_extensions=["mp4"], include_paths=True)
    ds.select_columns([ds.image, ds.path]).show(3)
finally:
    con.close()
```
