视频
视频内部使用PyAV处理数据。
- 支持的格式:mp4、mkv、webm、avi、mov、flv、m4v、m4a、3gp、3g2、ts。
- 支持的编码:avc1、avc3、h264、hvc1、h265、hevc、vp9、vp8、mp4v。
视频对象的属性和方法如下所示:
| 属性名 | 类型 | 说明 |
|---|---|---|
| filename | str | 视频文件的路径名(如果从文件加载)。 |
| format | str | 视频格式(如mp4、avi)。 |
| data | bytes | 视频数据。 |
| 方法名 | 参数 | 返回值 | 说明 |
|---|---|---|---|
| __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"
conn = 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
)
ds = conn.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)
conn.close()