torchaudio.io¶
StreamReader 系列¶
-
class (src: str, format: Optional[str] = None, option: Optional[Dict[str, str]] = 无,buffer_size:int = 4096)[来源]
torchaudio.io.
StreamReader
¶ 逐块获取和解码音频/视频流。
关于这个类的详细用法,请参考教程。
- 参数
src (str 或类似文件的对象) –
媒体来源。 如果是 string-type,则它必须是 FFmpeg 可以的资源指示符 处理。这包括文件路径、URL、设备标识符或 filter 表达式。支持的值取决于找到的 FFmpeg 在系统中。
如果是类文件对象,则必须支持签名为 read(size: int) -> 字节的 read 方法。 此外,如果类文件对象具有 seek 方法,则它使用 解析媒体元数据时的方法。这提高了可靠性 编解码器检测。seek 方法的签名必须是 seek(offset: int, whence: int) -> int。
请参阅以下内容了解预期的签名和行为 的 read 和 seek 方法。
覆盖输入格式,或指定源声音设备。 默认值:(无覆盖或设备输入)。
None
此参数适用于两种不同的用例。
覆盖源格式。 当 Importing 数据不包含 Headers 时,这非常有用。
指定输入源设备。 这允许从硬件设备加载媒体流, 例如麦克风、摄像头和屏幕或虚拟设备。
注意
此选项大致对应于 command 的 option。 请参阅 ffmpeg 文档,了解可能的值。
-f
ffmpeg
https://ffmpeg.org/ffmpeg-formats.html
对于设备访问,可用值因硬件(AV 设备)和 软件配置 (FFmpeg 构建)。
option (Dict of str to str,可选) –
初始化格式上下文(打开源)时传递的自定义选项。
您可以使用此参数在将 input 源传递给 decoder 之前更改 input 源。
违约:。
None
buffer_size (int) –
内部缓冲区大小(以字节为单位)。仅当 src 是类似文件的对象时使用。
默认值:4096。
- 教程使用:
StreamReader
-
get_src_stream_info
(i: int) → torchaudio.io._stream_reader。StreamReaderSourceStream[来源]¶ 获取源流的元数据
- 参数
i (int) – 流索引。
- 返回
源流
-
get_out_stream_info
(i: int) → torchaudio.io._stream_reader。StreamReaderOutputStream[来源]¶ 获取输出流的元数据
- 参数
i (int) – 流索引。
- 返回
输出流
-
add_basic_audio_stream
(frames_per_chunk:int,buffer_chunk_size:int = 3,stream_index:可选[int] = 无,解码器:Optional[str] = 无,decoder_option:Optional[Dict[str, str]] = 无,格式:可选[str] = 'fltp',sample_rate:可选[int] = None)[来源]¶ 添加输出音频流
- 参数
frames_per_chunk (int) – 作为一个区块返回的帧数。 如果源流在缓冲足够多的帧之前耗尽, 然后,块将按原样返回。
buffer_chunk_size (int,可选) –
内部缓冲区大小。 当缓冲的 chunk 数量超过此数量时,旧帧 下降。
违约:。
3
要使用的解码器的名称。 如果提供,请使用指定的解码器,而不是默认的解码器。
要列出可用的解码器,您可以使用 ffmpeg -decoders 命令。
违约:。
None
decoder_option (dict 或 None,可选) –
传递给 decoder 的选项。 从 str 映射到 str。
要列出解码器的解码器选项,可以使用 ffmpeg -h decoder=<DECODER> 命令。
违约:。
None
format (str,可选) –
输出样本格式 (精度)。
如果 ,则输出块具有对应于 源音频的精度。
None
否则,将转换样本并更改输出 dtype 如下。
"u8p"
:输出为 type。torch.uint8
"s16p"
:输出为 type。torch.int16
"s32p"
:输出为 type。torch.int32
"s64p"
:输出为 type。torch.int64
"fltp"
:输出为 type。torch.float32
"dblp"
:输出为 type。torch.float64
违约:。
"fltp"
-
add_basic_video_stream
(frames_per_chunk:int,buffer_chunk_size:int = 3,stream_index:可选[int] = 无,解码器:Optional[str] = 无,decoder_option:Optional[Dict[str, str]] = 无,hw_accel:可选[str] = 无,格式:可选[str] = 'rgb24', frame_rate: 可选[int] = 无, width: 可选[int] = None, height: 可选[int] = None)[来源]¶ 添加输出视频流
- 参数
frames_per_chunk (int) – 作为一个区块返回的帧数。 如果源流在缓冲足够多的帧之前耗尽, 然后,块将按原样返回。
buffer_chunk_size (int,可选) –
内部缓冲区大小。 当缓冲的 chunk 数量超过此数量时,旧帧 下降。
违约:。
3
要使用的解码器的名称。 如果提供,请使用指定的解码器,而不是默认的解码器。
要列出可用的解码器,您可以使用 ffmpeg -decoders 命令。
违约:。
None
decoder_option (dict 或 None,可选) –
传递给 decoder 的选项。 从 str 映射到 str。
要列出解码器的解码器选项,可以使用 ffmpeg -h decoder=<DECODER> 命令。
违约:。
None
启用硬件加速。
当视频在 CUDA 硬件上解码时,例如 decode=“h264_cuvid”,将 CUDA 设备指示器传递给 hw_accel(即 hw_accel=“cuda:0”)将放置结果帧 直接在特定的 CUDA 设备上。
如果为 None,则帧将移动到 CPU 内存。 违约:。
None
format (str,可选) –
更改图像通道的格式。有效值为
"rgb24"
: 8 位 * 3 个通道 (R, G, B)"bgr24"
: 8 位 * 3 个通道(B、G、R)"yuv420p"
: 8 位 * 3 个通道(Y、U、V)"gray"
:8 位 * 1 通道
违约:。
"rgb24"
-
add_audio_stream
(frames_per_chunk:int,buffer_chunk_size:int = 3,stream_index:可选[int] = 无,解码器:Optional[str] = 无,decoder_option:Optional[Dict[str, str]] = 无,filter_desc:可选[str] = 无)[源]¶ 添加输出音频流
- 参数
frames_per_chunk (int) – 作为一个区块返回的帧数。 如果源流在缓冲足够多的帧之前耗尽, 然后,块将按原样返回。
buffer_chunk_size (int,可选) –
内部缓冲区大小。 当缓冲的 chunk 数量超过此数量时,旧帧 下降。
违约:。
3
要使用的解码器的名称。 如果提供,请使用指定的解码器,而不是默认的解码器。
要列出可用的解码器,您可以使用 ffmpeg -decoders 命令。
违约:。
None
decoder_option (dict 或 None,可选) –
传递给 decoder 的选项。 从 str 映射到 str。
要列出解码器的解码器选项,可以使用 ffmpeg -h decoder=<DECODER> 命令。
违约:。
None
filter_desc (str 或 None,可选) – 筛选条件描述。 可用过滤器的列表可在 https://ffmpeg.org/ffmpeg-filters.html 中找到请注意,不支持复杂过滤器。
-
add_video_stream
(frames_per_chunk:int,buffer_chunk_size:int = 3,stream_index:可选[int] = 无,解码器:Optional[str] = 无,decoder_option:Optional[Dict[str, str]] = 无,hw_accel:可选[str] = 无,filter_desc:可选[str] = None)[来源]¶ 添加输出视频流
- 参数
frames_per_chunk (int) – 作为一个区块返回的帧数。 如果源流在缓冲足够多的帧之前耗尽, 然后,块将按原样返回。
buffer_chunk_size (int,可选) –
内部缓冲区大小。 当缓冲的 chunk 数量超过此数量时,旧帧 下降。
违约:。
3
要使用的解码器的名称。 如果提供,请使用指定的解码器,而不是默认的解码器。
要列出可用的解码器,您可以使用 ffmpeg -decoders 命令。
违约:。
None
decoder_option (dict 或 None,可选) –
传递给 decoder 的选项。 从 str 映射到 str。
要列出解码器的解码器选项,可以使用 ffmpeg -h decoder=<DECODER> 命令。
违约:。
None
启用硬件加速。
当视频在 CUDA 硬件上解码时,例如 decode=“h264_cuvid”,将 CUDA 设备指示器传递给 hw_accel(即 hw_accel=“cuda:0”)将放置结果帧 直接在特定的 CUDA 设备上。
如果为 None,则帧将移动到 CPU 内存。 违约:。
None
filter_desc (str 或 None,可选) – 筛选条件描述。 可用过滤器的列表可在 https://ffmpeg.org/ffmpeg-filters.html 中找到请注意,不支持复杂过滤器。
-
process_packet
(timeout: 可选 [float] = None, backoff: float = 10.0) → int[源]¶ 读取源媒体并处理一个数据包。
如果成功读取数据包,则数据包中的数据将 解码并传递给相应的输出流处理器。
如果数据包属于未连接到 output 流,则数据将被丢弃。
当源到达 EOF 时,它会触发所有输出流 处理器进入耗尽模式。所有输出流处理器 刷新待处理的帧。
- 参数
超时(以毫秒为单位)。
此参数在失败时更改重试行为 由于底层媒体资源是 暂时不可用。
使用麦克风等媒体设备时,存在以下情况 底层缓冲区未就绪。 此时调用该函数会导致系统报告 EAGAIN(资源暂时不可用)。
>=0
:继续重试,直到给定的时间过去。0<
:永远重试。None
:无需重试并立即引发异常。
违约:。
None
注意
仅当 reason 为 不可用的资源。如果失败的原因是 其他。
backoff (浮点数,可选) –
重试前等待的时间(以毫秒为单位)。
此选项仅在 timeout 生效时有效。(不是
None
)当超时有效时,此 backoff 控制函数的时间 应该等待一段时间,然后再重试。违约:。
10.0
- 返回
0
数据包已正确处理。调用方可以保留 调用该函数可以缓冲更多的帧。1
主播到达了 EOF。所有输出流处理器 已刷新待处理的帧。调用方应停止调用 此方法。- 返回类型
-
pop_chunks
()→ Tuple[Optional[torch.张量]][来源]¶ 从所有输出流缓冲区中弹出一个 chunk。
- 返回
缓冲区内容。 如果缓冲区不包含任何帧,则返回 None。
- 返回类型
元组[可选[Tensor]]
-
stream
(timeout: 可选[float] = None, backoff: float = 10.0) → Iterator[Tuple[可选[torch.Tensor]、...]][来源]¶ 返回生成输出张量的迭代器
- 参数
- 返回
Iterator 生成与输出相对应的块元组 由客户端代码定义的流。 如果输出流已用尽,则替换 chunk Tensor 跟。 如果所有输出流都用完,则迭代器将停止。
None
- 返回类型
Iterator[Tuple[Optional[torch.Tensor],..]]
StreamReaderSourceStream¶
-
类 [来源]
torchaudio.io.
StreamReaderSourceStream
¶ 源流的元数据。当表示 除音频或视频以外的媒体类型。
当源流为音频或视频类型,并且 报告其他特定于媒体的属性时, 分别使用。
SourceAudioStream
SourceVideoStream