Yeastar PSTN网关与FreePBX对接实战:SIP中继配置避坑指南

1. 从一通打不通的外线电话说起

如果你正在看这篇内容,大概率你手里正握着一台Yeastar的PSTN网关,或者正准备把它和FreePBX对接起来。我先说结论:这套组合能跑通,而且跑通之后非常稳定,但中间有几个坑,几乎每一个第一次做对接的人都会踩一遍。我自己前前后后配过不下十套这种组合,从最早的模拟外线网关到后来的数字中继网关,每一次都能遇到点新花样。

先把场景说清楚。所谓PSTN网关,本质上是把传统的电话线路(模拟线、E1数字中继等)转换成SIP协议,让IPPBX能够识别和调度。Yeastar在这个领域做了很多年,产品线覆盖了从几路模拟口到整机数字中继的各种型号。而FreePBX是基于Asterisk的一套开源IPPBX管理系统,图形化界面友好,社区资源丰富,很多中小企业在自建电话系统时都会选它。把这两者对接起来,就是让FreePBX通过SIP中继把呼叫送到Yeastar网关上,再由网关落到实际的电话线路上。

听起来很简单对吧?注册一个SIP中继,填几个参数,打个电话测试一下,完事。但实际操作中,从SIP注册状态、编解码协商、DTMF传输方式、呼叫路由规则到拨号计划匹配,每一个环节都可能出问题。而且这些问题往往不是那种一眼就能看出来的报错,而是"注册显示成功但打不出去""能打出去但对方听不到按键""能打通但单向语音"这类让人抓狂的现象。

这篇内容我会把整个对接过程中最常见的坑一个一个拆开讲,包括每个坑背后的原理、排查思路、以及我实际验证过的解决方案。不管你是刚接触VOIP的新手,还是已经配过几套系统的老手,应该都能从中找到有用的东西。另外,我也会在最后聊聊国内VOIP这些年的一些变化,算是一个从业者的个人感受。

2. 对接前的底层逻辑:SIP中继到底在做什么

2.1 信令和媒体是两条独立的通道

很多人配SIP中继时容易犯一个根本性的认知错误:把信令和媒体当成一回事。实际上在SIP协议里,信令(SIP消息)和媒体(RTP语音流)是分开走的。信令负责建立、修改和拆除会话,走的是SIP端口,默认5060;媒体负责实际传输语音数据,走的是RTP端口,通常是一段UDP端口范围。

这个区分为什么重要?因为你在排查问题时,需要先判断是信令层面出了问题还是媒体层面出了问题。比如"注册失败"是信令问题,"能接通但没声音"大概率是媒体问题。两者的排查方向完全不同。

在Yeastar网关和FreePBX对接的场景中,信令通常走IP可达的SIP中继(也有走注册模式的),媒体则通过SDP协商确定双方的IP和端口。如果中间有NAT设备,媒体流的可达性就会变成一个关键问题。

2.2 中继模式的选择:注册中继 vs 对等中继

Yeastar网关和FreePBX之间建立SIP中继,有两种基本模式:

注册模式(Register Trunk):FreePBX作为客户端向Yeastar网关发起注册,网关作为服务端验证身份。这种模式适合网关在固定公网IP上,或者两端在同一内网的情况。配置相对简单,网关侧创建一个SIP账号,FreePBX侧填上对应的注册信息就行。

对等模式(Peer Trunk / IP Authentication):双方通过IP地址互信,不需要注册。这种模式适合两端都有固定IP的场景,省去了注册维护的开销,但安全性依赖IP白名单。

我个人的经验是,如果是内网对接,两种模式都行,注册模式更直观一些;如果涉及跨网络对接,对等模式配合IP白名单更稳定,因为注册模式在NAT环境下容易出各种幺蛾子。

2.3 编解码协商:不是你想用什么就能用什么

SIP在建立会话时,双方会通过SDP交换各自支持的编解码列表,然后选择一个双方都支持的。Yeastar网关通常支持G.711(PCMA/PCMU)、G.722、G.729等,FreePBX默认也支持这些。看起来没问题,但坑在于优先级和实际选择。

如果FreePBX的SIP中继配置里把G.729排在前面,而Yeastar网关没有G.729的授权(G.729是需要额外license的),协商就会失败或者回落到其他编解码。更隐蔽的情况是,双方都"支持"某个编解码,但实际实现有差异,导致语音质量差或者单通。

我的建议是:内网对接直接用G.711(PCMA或PCMU),带宽足够,音质最好,兼容性最强。如果带宽紧张需要压缩,优先考虑G.722而不是G.729,因为G.722是宽带编解码,音质明显好于G.729,而且通常不需要额外授权。

3. 第一个大坑:SIP注册显示成功但呼叫失败

3.1 现象描述与初步排查

这个坑我遇到过至少三次,每次的表现都略有不同,但核心症状是一样的:FreePBX的SIP中继状态显示"Registered",但拨打外线时要么直接失败,要么听到忙音,要么呼叫被立即挂断。

第一次遇到这个问题时,我花了整整一个下午才找到原因。当时的排查过程是这样的:先看FreePBX的CDR(呼叫详单),发现呼叫确实发起了,但状态是"FAILED";然后看Asterisk的CLI日志,发现SIP INVITE发出去了,但对方回了"403 Forbidden";再去看Yeastar网关的日志,发现网关收到了INVITE,但因为没有匹配的路由规则,直接拒绝了。

问题的根源在于:Yeastar网关上的呼入路由和呼出路由没有正确配置。SIP注册成功只代表信令通道通了,不代表呼叫路由通了。网关需要知道"从FreePBX来的呼叫应该送到哪条PSTN线路上",这个信息是通过呼出路由(Outbound Route)来定义的。

3.2 Yeastar网关侧的路由配置要点

在Yeastar网关的管理界面上,呼出路由的配置通常包含以下几个关键字段:

  • 路由名称:随便起,但要能看懂,比如"to-PSTN-port1"
  • 呼叫来源:指定哪些SIP账号或IP的呼叫可以走这条路由
  • 被叫号码模式:用正则或通配符匹配被叫号码,比如"9."表示以9开头的号码
  • 优先级:多条路由时的匹配顺序
  • 目标端口:指定从哪个PSTN端口出局

这里最容易出错的是"被叫号码模式"和"呼叫来源"的匹配。如果FreePBX发过来的被叫号码带了前缀(比如拨9出局),而网关的路由规则没有去掉这个9,那么送到PSTN线路上的号码就会多一位,导致呼叫失败。

我的做法是在FreePBX的出局路由里配置好去前缀规则,确保送到网关的号码是干净的。比如用户拨"9-010-12345678",FreePBX在送出前把9去掉,网关收到的是"01012345678",直接匹配路由规则送到PSTN端口。

3.3 FreePBX侧的中继配置细节

FreePBX的SIP中继配置里,有几个参数直接影响呼叫能否成功:

Outbound Proxy:如果Yeastar网关不在同一网段,或者需要经过SIP代理,这里要填网关的IP和端口。很多人忽略这个字段,导致INVITE发到了错误的地址。

From Domain / From User:这两个字段决定了SIP消息头里的From字段内容。有些网关会校验From字段是否匹配已注册的账号,如果填错了,网关会拒绝呼叫。

Contact User:这个字段影响网关回送响应时的目标地址。如果填错,可能出现"呼叫能发出但收不到响应"的情况。

我通常会在配置完成后,用sip show peer <peer-name>命令在Asterisk CLI里查看中继的详细状态,确认注册状态、延迟、编解码协商结果等信息。如果注册状态是"OK"但呼叫失败,就重点检查路由和号码处理规则。

4. 第二个大坑:DTMF按键不生效的各种姿势

4.1 DTMF的三种传输方式

DTMF(双音多频)就是电话按键音,在IVR(交互式语音应答)场景中至关重要。SIP环境下,DTMF有三种传输方式:

  • RFC 2833 / RFC 4733:把按键事件作为RTP载荷传输,不依赖语音编解码,最可靠
  • SIP INFO:通过SIP信令消息传输按键信息,兼容性好但依赖信令通道
  • Inband:按键音混在语音流里传输,依赖编解码保真度,最不可靠

Yeastar网关和FreePBX都支持这三种方式,但默认配置可能不一致。如果一端用RFC 2833,另一端用SIP INFO,按键就可能丢失。

4.2 实际排查过程

有一次客户反馈说,打外线进IVR后按分机号没反应。我先在FreePBX的SIP中继配置里把DTMF模式改成RFC 2833,测试后问题依旧。然后去Yeastar网关侧检查,发现网关的DTMF模式是"Auto",理论上应该能自动协商,但实际抓包发现网关发出的RTP流里没有DTMF事件包。

后来我把网关的DTMF模式强制设为RFC 2833,同时在FreePBX侧也强制设为RFC 2833,问题解决。这个案例告诉我,不要依赖"Auto"模式,两端都明确指定同一种DTMF传输方式最稳妥。

4.3 抓包验证DTMF是否正常传输

如果你不确定DTMF有没有正确传输,最直接的方法是在FreePBX服务器上抓包:

tcpdump -i eth0 -w dtmf.pcap udp portrange 10000-20000

然后在通话中按几个按键,停止抓包后用Wireshark打开,过滤rtp,查看是否有Telephone-event类型的载荷。如果有,说明DTMF事件包正常发送了;如果没有,就需要检查发送端的DTMF配置。

5. 第三个大坑:单向语音和NAT穿透

5.1 单向语音的典型表现

单向语音是指通话建立后,一方能听到另一方,但反过来听不到。这个问题在跨网络对接时特别常见,根源通常是SDP里声明的媒体地址不可达。

具体来说,FreePBX在SDP里声明的媒体地址可能是它的内网IP(比如192.168.1.100),但Yeastar网关在另一个网段,无法直接访问这个内网IP。结果就是网关把RTP流发到了192.168.1.100,但那个地址对它来说不可达,语音自然就断了。

5.2 解决方案:正确配置NAT相关参数

FreePBX的SIP中继配置里有几个NAT相关的参数:

  • NAT:设为"Yes (force_rport, comedia)",让Asterisk忽略SDP里的地址,直接回复到实际发送RTP的地址
  • Local Networks:在Asterisk的SIP设置里配置本地网段,让Asterisk知道哪些地址是内网
  • External Address:如果FreePBX在NAT后面,这里填公网IP

Yeastar网关侧也有类似的NAT配置。如果网关在NAT后面,需要在网络设置里开启NAT模式,并填写外部IP。

我的经验是,内网对接时把NAT设为"No",跨网络对接时设为"Yes (force_rport, comedia)",并且在两端都正确配置本地网段。这样大多数单向语音问题都能解决。

5.3 用SDP信息定位媒体地址问题

在Asterisk CLI里,可以用sip set debug on命令开启SIP调试,然后发起一次呼叫,观察SDP里的c=字段(连接地址)和m=字段(媒体端口)。如果c=字段里的地址明显不对(比如是内网IP但实际需要公网IP),那就说明NAT配置有问题。

6. 第四个大坑:拨号计划与号码处理的细节

6.1 出局前缀的添加与去除

国内打电话习惯拨前缀出局,比如拨"9"走外线。这个前缀在FreePBX的出局路由里添加,然后在送到Yeastar网关之前去掉。如果忘记去掉,网关收到的号码就会多一位,导致呼叫失败。

FreePBX的出局路由配置里有一个"Dial Patterns"区域,可以配置前缀去除规则。比如:

9|. // 匹配以9开头的号码 9|0[1-9]. // 匹配9开头的国内长途

这里的9|表示匹配前缀9,后面的.表示任意后续号码。在"Trunk Sequence"里选择对应的SIP中继,然后在"Prepend"和"Prefix"字段里配置号码处理规则。

6.2 号码规范化的常见问题

国内电话号码的格式比较多样,有带区号的固话、有不带区号的固话、有手机号、有400/800号码等。如果号码规范化没做好,可能出现"能打通但对方看不到正确主叫号码"或者"呼叫被运营商拒绝"的情况。

我的做法是在FreePBX里配置一个统一的出局号码处理规则:固话补全区号,手机号直接透传,国际长途加拨特定前缀。然后在Yeastar网关侧再检查一遍号码格式,确保送到PSTN线路上的号码符合运营商要求。

6.3 呼入路由的匹配逻辑

呼入方向同样重要。PSTN线路收到来电后,Yeastar网关需要根据被叫号码(DID)把呼叫路由到FreePBX的对应分机或IVR。如果网关的呼入路由配置不正确,来电可能被直接挂断或者送到错误的目的地。

Yeastar网关的呼入路由通常支持按DID号码匹配、按端口匹配、按时间条件匹配等。我一般会配置一条默认路由,把所有未匹配的来电送到FreePBX的总机或IVR,然后再根据具体DID配置精确路由。

7. 第五个大坑:语音质量与编解码选择

7.1 为什么G.711是内网对接的首选

G.711是PSTN网络的标准编解码,采样率8kHz,比特率64kbps。它的优点是音质好、兼容性强、几乎不需要额外处理。缺点是带宽占用相对较高,但对于内网环境来说,这点带宽根本不是问题。

相比之下,G.729的比特率只有8kbps,节省带宽,但音质明显下降,而且需要license。G.722是宽带编解码,采样率16kHz,音质比G.711还好,但需要两端都支持。

我的建议很直接:内网对接用G.711,不要折腾其他编解码。如果带宽实在紧张,优先考虑G.722而不是G.729。

7.2 编解码协商失败的排查

如果呼叫建立后没有语音,或者语音质量极差,首先要检查编解码协商结果。在Asterisk CLI里用core show channels查看活动通道,或者用sip show peer <peer>查看协商的编解码。

如果发现协商的编解码不是预期的,检查两端的编解码配置顺序。FreePBX的SIP中继配置里有一个"Codecs"区域,可以调整编解码的优先级。Yeastar网关侧也有类似的配置。

7.3 网络抖动和丢包的影响

即使编解码协商正确,网络质量差也会导致语音问题。VOIP对网络抖动和丢包非常敏感,一般要求抖动小于30ms,丢包率小于1%。

如果怀疑是网络问题,可以在两端之间做持续的ping测试和MTR测试,观察延迟和丢包情况。如果网络质量确实差,可以考虑启用Asterisk的jitter buffer功能,或者调整Yeastar网关的QoS设置。

8. 国内VOIP这些年的变化与个人感受

8.1 从模拟线到全IP的迁移

我入行的时候,大部分企业还在用传统的程控交换机,模拟外线一条一条地接。后来IPPBX逐渐普及,SIP中继开始替代模拟线,部署和维护的成本大幅下降。Yeastar这类网关产品的出现,让传统电话线路和IP系统之间的过渡变得平滑了很多。

现在新建的办公场景,基本上直接上SIP话机或者软电话,连物理线路都省了。但在一些传统行业和特定场景里,PSTN线路仍然有不可替代的价值,比如传真、报警系统、POS机等。这也是为什么PSTN网关这个品类至今仍然有市场。

8.2 对接调试从"玄学"到"工程化"

早些年配VOIP,很多时候靠经验靠猜,出了问题就重启设备、换端口、改参数,试到通为止。现在随着工具链的完善,抓包分析、日志追踪、SIP调试都变得更容易了,排查问题越来越像一门工程学科,而不是玄学。

但即便如此,SIP协议的灵活性和各厂商实现的差异性,仍然让对接工作充满挑战。同一个问题,不同型号的网关可能有不同的表现;同一个配置,不同版本的固件可能有不同的行为。这也是为什么我每次对接新设备时,都会预留足够的调试时间,不会假设"上次这样配能通,这次也一定能通"。

8.3 给后来者的几点建议

如果你刚开始接触Yeastar网关和FreePBX的对接,我有几个建议:

第一,先把网络层打通。确保两端IP可达,SIP端口和RTP端口没有被防火墙拦截。这是所有后续工作的基础。

第二,从最简单的配置开始。先用G.711编解码,RFC 2833 DTMF,注册模式中继,把基本呼叫跑通,再逐步添加复杂功能。

第三,善用日志和抓包工具。Asterisk的CLI日志、Yeastar网关的系统日志、tcpdump抓包,这三个工具能解决90%以上的问题。

第四,不要怕试错。VOIP对接本身就是一个不断调试的过程,每一次踩坑都是一次学习。我到现在配新设备时仍然会遇到没见过的问题,但只要掌握了排查方法,总能找到解决方案。

最后说一句,技术这东西,文档看十遍不如自己动手配一遍。找个空闲时间,搭个测试环境,把各种配置都试一遍,踩过的坑才会真正变成你自己的经验。

相关新闻

知识工作插件实战:从采集到温习的全流程效率工具

知识工作插件实战:从采集到温习的全流程效率工具

先聊聊我为什么会对“knowledge-work-plugins”这个东西上瘾。这几年我一直在一线做知识型项目&#xff0c;每天的工作基本就是读资料、写笔记、做分析、出方案&#xff0c;坏消息是中间的衔接环节特别散。今天在文档里看到一句话很关键&#xff0c;明天可能就忘在哪个聊天记录…

2026/10/21 4:52:56 阅读更多 →
为什么1.58比特就够了?揭秘parakeet-redux三值量化的核心原理

为什么1.58比特就够了?揭秘parakeet-redux三值量化的核心原理

人工智能语音模型量化模型压缩 【免费下载链接】parakeet-redux 项目地址&#xff1a; https://ai.gitcode.com/hf_mirrors/moondream/parakeet-redux 点击查看 免费下载 parakeet-redux 是一个 1.58 比特三值量化&#xff08;ternary quantization&#xff09;的自动语音识别…

2026/10/21 4:52:56 阅读更多 →
论文数据炼金术:AI辅助从提取到清洗的全流程实战

论文数据炼金术:AI辅助从提取到清洗的全流程实战

写在前面&#xff1a;这篇东西不是软件广告&#xff0c;也不打算把某个工具吹成神话。它就来自我自己平时处理论文数据的一堆真实经历&#xff1a;从抓取文献里的零散数据&#xff0c;到清洗成一张能看能算的表&#xff0c;再到最后写出方法学和图表描述&#xff0c;中间踩过的…

2026/10/21 4:51:55 阅读更多 →

最新新闻

在线字典学习MATLAB实现:稀疏编码与字典更新实战指南

在线字典学习MATLAB实现:稀疏编码与字典更新实战指南

简介&#xff1a;在线字典学习代码是一套基于MATLAB的机器学习实现资源&#xff0c;面向处理文本、音频等序列数据的开发者与研究者。代码演示了在线学习与字典学习的结合&#xff1a;通过逐样本或小批量方式更新模型参数&#xff0c;在节省内存的同时适应数据流场景&#xff0…

2026/10/21 5:27:10 阅读更多 →
MCP AI监考重点监控的3类环境配置:虚拟机、远程桌面与容器沙箱

MCP AI监考重点监控的3类环境配置:虚拟机、远程桌面与容器沙箱

这两年在线考试系统越来越“卷”&#xff0c;我第一次看到MCP AI监考的环境检测报告时&#xff0c;说实话愣了一下。它不仅能盯着你的摄像头画面&#xff0c;还能直接告诉你&#xff1a;这台电脑是不是虚拟机、有没有开远程桌面、有没有跑模拟器。2025年才过了一半&#xff0c;…

2026/10/21 5:27:10 阅读更多 →
在线字典学习MATLAB实现:从稀疏编码到图像去噪

在线字典学习MATLAB实现:从稀疏编码到图像去噪

简介&#xff1a;这是一份基于MATLAB的在线字典学习实现代码&#xff0c;面向机器学习初学者和图像/信号处理方向的研究者&#xff0c;用于解决如何从序列数据中在线学习一组基字典的问题。与批处理方式不同&#xff0c;在线学习逐样本更新模型&#xff0c;适合内存有限或数据流…

2026/10/21 5:27:10 阅读更多 →
MuJoCo相机内参标定:用棋盘格在仿真中实现视觉系统精准对齐

MuJoCo相机内参标定:用棋盘格在仿真中实现视觉系统精准对齐

1. 先想清楚&#xff1a;仿真里为什么还要标定相机内参最近我在做一套视觉机械臂抓取的仿真验证&#xff0c;遇到一个特别尴尬的问题&#xff1a;MuJoCo 场景里明明可以直接指定相机视场角&#xff0c;渲染出来的图像看起来也完全正常&#xff0c;但把图像喂给视觉策略网络后&a…

2026/10/21 5:27:10 阅读更多 →
友盟分享SDK 6.4.6 Android接入踩坑与二次开发实践

友盟分享SDK 6.4.6 Android接入踩坑与二次开发实践

简介&#xff1a;友盟分享Android SDK 6.4.6定制版压缩包&#xff0c;来自阿里巴巴旗下移动开发者服务&#xff0c;面向需要在App中快速接入微信、QQ、微博、Facebook、Twitter等主流社交平台分享功能的开发者&#xff0c;尤其适合对分享流程与界面定制有需求的团队。压缩包以z…

2026/10/21 5:27:10 阅读更多 →
Hadoop NameNode Checkpoint机制详解:原理、参数调优与踩坑实战

Hadoop NameNode Checkpoint机制详解:原理、参数调优与踩坑实战

做 Hadoop 运维和调优这几年&#xff0c;NameNode 的 Checkpoint 机制是我觉得最“看着简单、实则坑多”的一块。很多朋友对它的理解停留在“SecondaryNameNode 定期合并 edits 和 fsimage”&#xff0c;但真到集群出问题的时候——比如 edists 文件暴涨、Checkpoint 失败、Nam…

2026/10/21 5:26:09 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →