苏州市网站建设_网站建设公司_动画效果_seo优化
2025/12/20 19:24:33 网站建设 项目流程

rtpengine-recording(8) 手册页

名称

rtpengine-recording - Sipwise rtpengine 的媒体录制守护进程

概要

rtpengine-recording [选项…]

描述

Sipwise rtpengine 媒体代理支持导出其转发的媒体(RTP)数据包。rtpengine-recording 守护进程收集这些导出的数据包,并将其解码为可供收听的音频格式。

选项

所有选项都可以(并且应该)在配置文件中提供,而不是在命令行中提供。详情请参见下面的--config-file选项。

如果未提供任何选项,则使用默认值,这对于 rtpengine 的标准安装应该足够了。

--help
打印使用信息。

-v,--version
如果使用此选项调用,rtpengine-recording 守护进程将仅打印其版本号并退出。

--config-file=FILE
指定要使用的配置文件位置。配置文件是一个 .ini 风格的配置文件,此处列出的所有命令行选项在配置文件中也是有效选项。对于所有命令行选项,在配置文件中必须使用长名称版本而不是单字符版本(例如,使用table而不仅仅是t)。对于存在或不存在(例如output-mixed)的布尔选项,在配置文件中必须使用布尔值(truefalse)。如果选项同时在配置文件和命令行中给出,则命令行值会覆盖配置文件中的值。
作为特殊值,可以在此处传递none以禁止加载默认配置文件。

--config-section=STRING
指定要在配置文件中使用的 .ini 风格节段。配置文件中可以存在多个节段,但一次只能使用一个。默认值是rtpengine-recording。在配置文件中使用方括号(例如[rtpengine-recording])开始一个配置节段。

-L,--log-level=INT
接受一个整数作为参数,控制将发送到 syslog 的最高日志级别。日志级别与 syslog(3) 手册页中的级别对应。默认值为 6,相当于LOG_INFO。最高可能值为 7 (LOG_DEBUG),这将记录所有内容。

--log-facility=daemon|local0|…|local7|…
向 syslog 守护进程发送日志消息时使用的 syslog 设施。默认为daemon

-E,--log-stderr
记录到 stderr 而不是 syslog。仅在与--foreground结合使用时有用。

--split-logs
将多行日志消息拆分为单独的日志消息,以便每行都接收自己的日志行前缀。

--no-log-timestamps
不要向写入 stderr 的日志行添加时间戳。仅在与--log-stderr结合使用时有用。

--log-mark-prefix=STRING
添加到日志文件中被视为敏感和/或私人信息的特定数据字段的前缀。默认为空字符串。

--log-mark-suffix=STRING
添加到日志文件中被视为敏感和/或私人信息的特定数据字段的后缀。默认为空字符串。

-p,--pidfile=FILE
指定写入守护进程 PID 号的路径和文件名。

-f,--foreground
如果给出,将阻止守护进程进行守护进程化,意味着它将保持在前台。对调试有用。

-t,--table=INT
接受一个整数参数。该值必须与提供给 rtpengine 媒体代理用于内核内数据包转发的table选项匹配。如果未指定,默认为 0。

--spool-dir=PATH
此处给出的路径必须与提供给 rtpengine 媒体代理的recording-dir路径匹配。默认为/var/spool/rtpengine。该路径必须位于支持inotify机制的文件系统上。

--num-threads=INT
启动多少个工作线程。默认为可用 CPU 核心数,如果少于该数或数量未知,则为 8。

--thread-stack=INT
将每个线程的栈大小设置为给定值(单位:kB)。默认为 2048 kB。可以设置为 -1 以保持操作系统提供的默认值不变。

--evs-lib-path=FILE
指向包含 EVS 编解码器参考实现的共享对象文件 (.so)。有关更多详细信息,请参阅 README。

--output-storage=file|db|memory|notify|s3|gcs|none
将媒体文件存储在哪里。此选项可以多次给出(或者在配置文件中使用逗号分隔的列表)以启用多种存储模式。默认情况下仅启用文件存储。
文件存储直接将媒体文件写入文件系统(参见output-dir)。
设置none会覆盖文件存储作为默认设置,并允许仅进行转发操作。
数据库存储将媒体文件作为 BLOB 写入 MySQL 数据库。
字符串both被视为启用文件和数据库存储的旧版替代方案。
通知输出将录音附加到 HTTP 通知请求。如果启用,通知请求将表现为 HTTP POST(隐式启用notify-post)。
字符串memory作为修饰符使用,可以在文件存储未启用时使用。没有memory修饰符时,媒体首先写入临时文件,直到录音完成后才放入其目标存储。设置memory后,临时文件的使用被禁用,媒体仅在内存中保存,直到录音完成。
db-mem可用作同时设置dbmemory的快捷方式。
s3存储选项启用通过 HTTPS 上传到 S3 兼容服务,例如 AWS 或 MinIO。有关配置,请参见下面的相关选项。
使用gcs存储选项启用上传到 Google Cloud Storage 或兼容服务。请参见下面的相关选项。

--output-dir=PATH
如果启用了文件输出,则媒体文件的写入路径。默认为/var/lib/rtpengine-recording。该路径不能与spool-dir使用的路径相同。

--output-pattern=STRING
用于录音文件的文件名模式。该模式可以引用子目录。父目录将根据需要创建。默认设置为%c-%r-%t
模式必须包含printf风格的格式序列。支持的格式序列有:

%%
一个百分号字面量。

%c
呼叫 ID。输出模式必须包含此格式序列。

%r
由 rtpengine 生成的随机标签,用于区分可能重复或重复的呼叫 ID。

%t
流类型。对于单流,这是写为十六进制的 SSRC;对于混合流,这是字符串mix。输出模式必须包含此格式序列。

%l
参与方的标签,由控制守护进程传递。

%Y
%m
%d
%H
%M
%S
这些格式序列引用当前系统时间(输出文件创建时),与 date(1) 或 strftime(3) 支持的格式序列相同(分别是年、月、日、时、分、秒)。

%u
微秒,扩展为 6 位数字(000000 到 999999)。

%INT
引用呼叫 ID 中给定长度的前缀。如果此格式序列出现多次,则前缀是累积的。例如,如果呼叫 ID 是abcdefgh,输出模式配置为%2/%3/%c,则生成的输出文件名为ab/cde/abcdefgh

%{
取花括号(在此{和下一个}之间)内的字符串,并使用它作为键在 rtpengine 提供的元数据字符串中查找相应的值。元数据字符串必须作为管道 (|) 分隔的key:value对列表给出,如 rtpengine 文档所述。
示例:如果元数据字符串为foo:bar|blah:baz且模式包含格式%{foo},则bar将被插入到文件名的该位置。

--output-format=wav|mp3|none
用于生成的媒体文件的文件格式。默认为 PCM WAV (RIFF) 文件。适用于文件系统和数据库中存储的文件。
noneoutput-storage=none的旧版别名。

--resample-to=INT
将所有音频重新采样到给定的采样率(例如 48000)。默认禁用重新采样,意味着文件将以与源媒体相同的采样率写入。

--mp3-bitrate=INT
如果选择了 MP3 输出,则为 MP3 编码器使用给定的比特率(例如 64000)。没有默认值,因此如果选择了 MP3 输出,必须给出此选项。请注意,并非所有比特率与所有采样率的组合都有效。因此,对于 MP3 输出,建议同时设置resample-to

--output-mixed
--output-single
是否生成混合音频文件、单个音频文件或两者。如果两者都未给出,则默认同时启用两者。如果不需要文件输出,将output-format设置为none
单个音频文件包含单个 RTP SSRC 的音频,这通常意味着单向音频流。这些直接从 RTP 流解码,不考虑时间戳,这意味着 RTP 流中的间隙或暂停不会反映在输出音频文件中。
混合音频文件由前四个看到的 RTP SSRC 组成,混合成一个输出文件,这通常意味着产生双向音频流。音频混合考虑 RTP 时间戳,因此 RTP 媒体中的间隙和暂停会反映在输出音频中,以保持多个音频源同步。

--mix-method=direct|channels
选择将多个音频输入混合成单个输出文件的方法,用于混合输出。默认是direct,它直接将所有音频输入混合在一起,生成与单个输入 (output-single) 音频文件格式相同的混合输出文件。
channels混合方法将每个音频输入放入输出文件自己的音频通道中,从而产生多通道输出文件。混合输出最多支持四个独立的 RTP SSRC,这意味着如果每个输入是单声道音频,那么混合输出文件将包含 4 个音频通道。此混合方法需要支持此类多通道音频格式的输出文件格式(例如 wav)。

--mix-num-inputs=INT
更改输出文件中的录音通道数。值在 1 到 4 之间(例如 4,这也是默认值)。

--output-chmod=INT
将录音文件的权限更改为给定的模式。必须作为八进制整数给出,例如 0660。

--output-chmod-dir=INT
更改录音文件的目录权限为给定模式。必须作为八进制整数给出,例如 0700(这也是默认值)。

--output-chown=USER|UID
--output-chgrp=GROUP|GID
更改录音文件的所有权。支持用户/组名或数字 ID。如果值为空或给出为 -1,则用户/组保持不变。

--output-buffer=INT
设置用于写入文件的 I/O 缓冲区大小。默认为 2^18 字节(256 kB)。可以设置为零以实现无缓冲 I/O。

--mysql-host=HOST|IP
--mysql-port=INT
--mysql-user=USERNAME
--mysql-pass=PASSWORD
--mysql-db=STRING
MySQL 存储后端的配置。生成的呼叫和媒体文件的详细信息存储到数据库中。可以选择性地存储媒体文件本身(参见output-storage)。
关于 MySQL 数据库模式,请参见数据库模式部分。

--forward-to=PATH
将原始 RTP 数据包转发到 Unix 套接字。默认禁用。

--tcp-send-to=IP:PORT
--tcp-resample=INT
--tcp-mixed
--tls-send-to=IP:PORT
--tls-resample=INT
--tls-mixed
通过 TCP 或 TLS 连接将解码后的音频发送到指定目标。音频以给定采样率的原始 16 位 PCM 格式发送。
默认情况下,将为每个 SSRC 建立一个包含一个单声道音频流的连接。如果启用混合模式,则类似于混合文件输出,每个呼叫将建立一个连接,包含从所有捕获的 SSRC 混合的音频。mix-method设置以相同方式生效,因此音频将是单声道或多声道,具体取决于设置。
一次只能激活其中一种选项组合(TCP 或 TLS)。

--notify-uri=URI
启用向指定 URI 发送关于完成录音的 HTTP 通知,该 URI 必须是 HTTP 或 HTTPS URI。关于完成录音的信息通过自定义 HTTP 头部提供,所有这些头部都使用X-Recording-前缀。

--notify-post
对 HTTP 通知请求使用 HTTP POST 而不是 GET。即使使用 POST,请求体也为空。

--notify-no-verify
禁用 HTTPS 请求的 TLS 对等证书验证。

--notify-command=PATH
启动外部命令以发送关于新录音的通知。该命令将接收两个命令行参数:录音的完整路径和文件名,以及数据库条目的 ID 号。

--notify-concurrency=INT
可以同时执行的 HTTP 请求的最大数量。

--notify-retries=INT
在放弃之前重试失败的 HTTP 通知的次数。每次后续尝试使用指数退避时间,从 5 秒开始。

--notify-record
output-storage=notify的旧版别名。如果未启用其他输出存储,则默认文件存储保持启用(除非也设置了以下选项)。

--notify-purge
启用通知输出时禁用默认文件存储的旧版选项。

--output-mixed-per-media
强制每个媒体一个通道,而不是每个 SSRC。请注意,此选项仅在同时启用--output-mixed时有用。

--flush-packets
强制在每个数据包后刷新输出缓冲区,确保录音文件稳定增长,并可无延迟地进行处理。

--s3-host=HOST
--s3-port=INT
--s3-path=STR
--s3-access-key=STR
--s3-secret-key=STR
--s3-region=STR
--s3-no-verify
如果启用了 S3 存储上传,则必须配置这些选项。端口是可选的,如果未配置则默认为 443 (HTTPS)。
主机名可能需要也可能不需要包含存储桶名称。例如minio.example.comexamplebucket.s3.amazonaws.com
如果主机名包含存储桶名称,则路径可以为空。否则,存储桶名称成为路径的一部分(例如/examplebucket)。即使路径为空,也必须设置此选项。
访问密钥和秘密密钥是服务提供的凭证(例如AKIAIOSFODNN7EXAMPLEwJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY)。
区域代码是凭证的一部分(例如us-east-1)。如果服务不使用区域代码,则必须设置为空字符串。
默认情况下验证 TLS 证书,除非设置了no-verify选项。

--gcs-uri=URI
--gcs-key=STR
--gcs-service-account=FILE
--gcs-scope=STR
--gcs-no-verify
配置这些设置以使用 GCS 存储。至少必须设置 URI 和一种身份验证方法。
gcs-uri必须指向要发布上传的完整 URI。通常它包含存储桶的名称。URI 不能包含查询字符串(即没有?)。例如:https://storage.googleapis.com/upload/storage/v1/b/examplebucket/o
对于身份验证,必须通过gcs-key提供 API 密钥,或者必须通过服务帐户文件配置 OAuth2 身份验证。
要使用 OAuth2/JWT 身份验证,gcs-service-account设置必须指向 JSON 格式的服务帐户文件。该文件应至少包含client_email、RSA/PEM 格式的private_keytoken_uri。身份验证范围默认为https://www.googleapis.com/auth/cloud-platform,但可以通过gcs-scope更改。
设置gcs-no-verify以禁用 TLS 证书验证。请注意,这仅适用于上传本身,不适用于 OAuth2 请求。

退出状态

0
成功终止。

1
发生错误。

文件

/etc/rtpengine/rtpengine-recording.conf
配置文件。

数据库模式

将录音保存到 MySQL 数据库需要正确的数据库模式:

CREATETABLE`recording_calls`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`call_id`varchar(250)NOTNULL,`start_timestamp`decimal(13,3)DEFAULTNULL,`end_timestamp`decimal(13,3)DEFAULTNULL,`status`enum('recording','completed','confirmed')DEFAULT'recording',PRIMARYKEY(`id`),KEY`call_id`(`call_id`));CREATETABLE`recording_streams`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`call`int(10)unsignedNOTNULL,`local_filename`varchar(250)NOTNULL,`full_filename`varchar(250)NOTNULL,`file_format`varchar(10)NOTNULL,`stream`mediumblob,`output_type`enum('mixed','single')NOTNULL,`stream_id`int(10)unsignedNOTNULL,`sample_rate`int(10)unsignedNOTNULLDEFAULT'0',`channels`int(10)unsignedNOTNULLDEFAULT'0',`ssrc`int(10)unsignedNOTNULL,`start_timestamp`decimal(13,3)DEFAULTNULL,`end_timestamp`decimal(13,3)DEFAULTNULL,`tag_label`varchar(255)NOTNULLDEFAULT'',PRIMARYKEY(`id`),KEY`call`(`call`),CONSTRAINT`fk_call_id`FOREIGNKEY(`call`)REFERENCES`recording_calls`(`id`)ONDELETECASCADEONUPDATECASCADE);CREATETABLE`recording_metakeys`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`call`int(10)unsignedNOTNULL,`key`char(255)NOTNULL,`value`char(255)NOTNULL,PRIMARYKEY(`id`),KEY`prim_lookup`(`value`,`key`),KEY`fk_call_idx`(`call`),CONSTRAINT`fk_call_idx`FOREIGNKEY(`call`)REFERENCES`recording_calls`(`id`)ONDELETECASCADEONUPDATECASCADE);

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询