目录

警告

TorchAudio 的 C++ API 是原型功能。 不保证 API/ABI 向后兼容性。

注意

顶级命名空间已从 更改为 。 已重命名为 。torchaudiotorioStreamWriterStreamingMediaEncoder

torio::io::StreamingMediaEncoder

StreamingMediaEncoder是 Python 等效项使用的实现,并提供类似的接口。 当使用自定义 I/O (如内存数据) 时,可以使用 class 。StreamingMediaEncoderCustomIO

这两个类都定义了相同的方法,因此它们的用法是相同的。

构造 函数

StreamingMediaEncoder 的

StreamingMediaEncoder

逐块编码和写入音频/视频流

torio::io::StreamingMediaEncoderCustomIO 子类化

显式 torio::io::StreamingMediaEncoder::StreamingMediaEncoderconst std::string &dstconst std::optional<std::string> &format = c10::nullopt)

从目标 URI 构造 StreamingMediaEncoder

参数
  • dst – 写入编码数据的目标。

  • format (格式) – 指定输出格式。如果未提供,则从 中猜测。dst

StreamingMediaEncoderCustomIO

StreamingMediaEncoderCustomIO private detail::CustomOutput public torio::io::StreamingMediaEncoder

StreamingMediaDecoder 的子类,与自定义读取函数一起使用。可用于将媒体编码到内存或自定义对象中。

torio::io::StreamingMediaEncoderCustomIO::StreamingMediaEncoderCustomIOvoid *opaqueconst std::可选<std::string> &formatint buffer_sizeint *write_packetvoid *opaque uint8_t *buf int buf_sizeint64_t *seek)(void *opaque int64_t offset, int whence = nullptr)

使用自定义写入和查找函数构造 StreamingMediaEncoderCustomIO

参数
  • opaque (不透明) – 函数使用的自定义数据。write_packetseek

  • format (格式) – 指定输出格式。

  • buffer_size – 中间缓冲区的大小,FFmpeg 用于将数据传递给write_packet函数。

  • write_packet – 从 FFmpeg 调用以实际将数据写入自定义目标的自定义写入函数。

  • seek – 用于查找目标的可选 seek 函数。

配置方法

add_audio_stream

void torio::io::StreamingMediaEncoder::add_audio_streamint sample_rateint num_channelsconst std::string &formatconst std::optional<std::string> &encoder = c10::nulloptconst std::optional<OptionDict> &encoder_option = c10::nulloptconst std::optional<std::string> &encoder_format = c10::nullopt,const std::optional<int> &encoder_sample_rate = c10::nullopt,const std::optional<int> &encoder_num_channels = c10::nullopt,const std::optional<CodecConfig> &codec_config = c10::nulloptconst std::optional<std::字符串> &filter_desc = C10::nullopt)

添加输出音频流。

参数
  • sample_rate – 采样率。

  • num_channels – 通道数。

  • format – 输入样本格式,用于确定输入张量的 dtype。

    • "u8":输入 tensor 必须是 type。torch.uint8

    • "s16":输入 tensor 必须是 type。torch.int16

    • "s32":输入 tensor 必须是 type。torch.int32

    • "s64":输入 tensor 必须是 type。torch.int64

    • "flt":输入 tensor 必须是 type。torch.float32

    • "dbl":输入 tensor 必须是 type。torch.float64

    违约:。"flt"

  • encoder (编码器) – 要使用的编码器的名称。

    如果提供,请使用指定的编码器,而不是默认编码器。

    要列出可用的编码器,您可以使用 command.ffmpeg -encoders

  • encoder_option – 传递给编码器的选项。要列出编码器的编码器选项,可以使用 .ffmpeg -h encoder=<ENCODER>

  • encoder_format – 用于对媒体进行编码的格式。当 encoder 支持多种格式时,传递此参数将覆盖用于编码的格式。要列出编码器支持的格式,您可以使用 command.ffmpeg -h encoder=<ENCODER>

  • encoder_sample_rate – 如果提供,请在编码前执行重新采样。

  • encoder_num_channels – 如果提供,请在编码之前更改通道配置。

  • codec_config – 编解码器配置。

  • filter_desc – 在对输入数据进行编码之前要应用的其他处理

add_video_stream

void torio::io::StreamingMediaEncoder::add_video_streamdouble frame_rateint widthint heightconst std::string &formatconst std::optional<std::字符串> &encoder = c10::nulloptconst std::optional<OptionDict > &encoder_option = c10::nulloptconst std::optional<std::string> &encoder_format = c10::nulloptconst std::optional< > &encoder_frame_rate = c10::nulloptconst std::optional<int> &encoder_width = c10::nulloptconst std::optional<int> &encoder_height = c10::nullopt常量 std::optional<std::string> &hw_accel = c10::nulloptconst std::optional<CodecConfig> &codec_config = c10::nulloptconst std::optional<std::string> &filter_desc = c10::nullopt)

添加输出视频流。

参数
  • frame_rate – 帧速率

  • width – 宽度

  • height – 高度

  • format – 输入像素格式,用于确定输入张量的颜色通道顺序。

    • "gray8":1 通道,灰度。

    • "rgb24":按 RGB 顺序排列的三个通道。

    • "bgr24":按 BGR 顺序排列的三个通道。

    • "yuv444p":按 YUV 顺序排列的三个通道。

    在任何一种情况下,输入张量都必须是 type,形状必须是 (frame, channel, height, width)。torch.uint8

  • encoder (编码器) – 请参阅 。add_audio_stream()

  • encoder_option – 请参阅 。add_audio_stream()

  • encoder_format – 请参阅 。add_audio_stream()

  • encoder_frame_rate – 如果提供,请在编码前更改帧速率。

  • encoder_width – 如果提供,请在编码前调整图像大小。

  • encoder_height – 如果提供,请在编码前调整图像大小。

  • hw_accel – 启用硬件加速。

  • codec_config – 编解码器配置。

    例如,当视频在 CUDA 硬件上编码时,将 CUDA 设备指示符传递给 (即 ) 将使 StreamingMediaEncoder 期望视频块是 CUDA 张量。传递 CPU Tensor 将导致错误。encoder="h264_nvenc"hw_accelhw_accel="cuda:0"

    如果 ,则视频块 Tensor 必须是 CPU Tensor。None

  • filter_desc – 在对输入数据进行编码之前要应用的其他处理

set_metadata

void torio::io::StreamingMediaEncoder::set_metadataconst OptionDict &metadata)

设置文件级元数据

参数

metadata (元数据) – 元数据。

写入方法

打开

void torio::io::StreamingMediaEncoder::openconst std::optional<OptionDict > &opt = c10::nullopt)

打开输出文件/设备并写入标头。

参数

opt – 协议、设备和多路复用器的私有选项。

关闭

无效 torio::io::StreamingMediaEncoder::close()

关闭输出文件/设备并完成元数据。

write_audio_chunk

void torio::io::StreamingMediaEncoder::write_audio_chunkint iconst torch::张肌 &framesconst std::optional<double> &pts = c10::nullopt)

写入音频数据

参数
  • i – 流索引。

  • frames – 波形张量。形状:。必须与传递给 method 的内容匹配。(frame, channel)dtypeadd_audio_stream()

  • 积分

    演示时间戳。如果提供,它将用提供的帧覆盖第一帧的 PTS。否则,PTS 将按采样率的倒数递增。只有值超过内部处理的 PTS 值。

    注意:提供的值将转换为以采样率为基础表示的整数值。因此,它被截断为最接近的值 。n / sample_rate

write_video_chunk

void torio::io::StreamingMediaEncoder::write_video_chunkint iconst torch::张肌 &framesconst std::optional<double> &pts = c10::nullopt)

写入视频数据

参数
  • i – 流索引。

  • frames – 视频/图像张量。形状:。必须是 。形状必须与调用 .(time, channel, height, width)dtypetorch.uint8(height, width and the number of channels)add_video_stream()

  • 积分

    演示时间戳。如果提供,它将用提供的帧覆盖第一帧的 PTS。否则,PTS 将按帧速率的倒数递增。只有值超过内部处理的 PTS 值。

    注意:提供的值将转换为以帧速率表示的整数值。因此,它被截断为最接近的值 。n / frame_rate

冲洗

无效 torio::io::StreamingMediaEncoder::flush()

从编码器刷新帧并将帧写入目标。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源