您需要在本周将特定的 YouTube 视频转换为可下载的音频——没有浏览器黑客,没有逆向工程,只有一个可以投入生产的稳定 API。通过本指南的结束,您将能够以编程方式将 YouTube 视频(≈5 分钟或更短)转换为音频文件,检索直接的 MP3 链接,并使用 Zyla API Hub 上的 YouTube 视频到音频 API 将其集成到您的媒体工作流程中。
此 API 的功能及使用时机
YouTube 视频到音频 API 将 YouTube 视频(通过其视频 ID 识别)转换为音频文件,并返回可下载的直接 URL。典型的使用场景包括:
- 提取音频以进行转录或 NLP 流程。
- 为内容审核或内部审查工具创建音频预览。
- 为需要独立于视频的音频轨道的媒体工作流程提供支持。
该 API 返回一个 JSON 负载,其中包含音频链接、视频标题、文件大小和转换状态,使得自动化后处理(如存储、标记或下游摄取)变得简单明了。
在 Zyla API Hub 上开始
Zyla API Hub 是一个市场,拥有超过 10,000 个公共 API,使用一个帐户、一个 API 密钥和一个单一的订阅模型。对于此 API,您需要使用 Authorization: Bearer YOUR_API_KEY 头进行身份验证。计费为订阅 + 配额,而不是按调用付费。没有免费计划。YouTube 视频到音频 API 提供 7 天的试用,您可以直接从列表页面开始。
在此处打开列表并开始您的试用: 开始 7 天的 YouTube 视频到音频 API 试用。
端点概述
该 API 暴露一个用于将 YouTube 视频转换为音频的单一端点。请保持视频在 5 分钟或更短,以确保成功转换。
- 端点:获取音频
- 方法:GET
- URL: https://zylalabs.com/api/1812/youtube-video-to-audio-api/5870/get-audio
- 所需查询参数:
- id(字符串):YouTube 视频 ID(例如,p-Z3YrHJ1sU)
重要提示:在 Authorization 头中传递您的 API 密钥。响应返回一个 JSON 对象,其中包含生成的 MP3 的直接链接、原始标题、文件大小(以字节为单位)、转换进度、持续时间(以秒为单位)以及状态/消息字段。
快速开始:cURL 请求
使用此确切请求来测试流程。将 YOUR_API_KEY 替换为您从 Zyla API Hub 列表中获得的实时密钥。
curl -s -X GET "https://zylalabs.com/api/1812/youtube-video-to-audio-api/5870/get-audio?id=p-Z3YrHJ1sU"
-H "Authorization: Bearer YOUR_API_KEY"
官方示例响应
{
"link": "https://eta.123tokyo.xyz/get.php/9/9e/ty7nkwYqodA.mp3?cid=MmEwMTo0Zjg6YzAxMjozMmVlOjoxfE5BfERF&h=FwrcvY5cIfOO0jyXh5C-6Q&s=1737705748&n=%E2%82%B91%2C07%2C000%20_iPhone%2016%20Pro%20Max_%20USA%20to%20INDIA_%20%23shorts%20%23youtubeshorts&uT=R&uN=QWxlam9aeWxhTGFicw%3D%3D",
"title": "₹1,07,000 *iPhone 16 Pro Max* USA to INDIA! #shorts #youtubeshorts",
"filesize": 417480,
"progress": 100,
"duration": 22.896054233758,
"status": "ok",
"msg": "success"
}
您通常可以从此负载中读取的信息:
- link:您可以下载或流式传输的直接 MP3 URL。
- title:原始 YouTube 标题(用于命名或元数据)。
- filesize:以字节为单位的大小(验证存储限制)。
- progress:完成百分比。准备好时期望为 100。
- duration:以秒为单位的长度(浮动),用于验证/用户体验。
- status/msg:操作状态和消息。在下载之前检查“ok”和“success”。
Python 示例:转换并下载 MP3
此示例调用端点,验证响应,并将 MP3 下载到本地存储。将 YOUR_API_KEY 替换为您的密钥,并根据需要更改 video_id。
import os
import sys
import time
import requests
API_KEY = os.getenv("ZYLALABS_API_KEY", "YOUR_API_KEY")
VIDEO_ID = "p-Z3YrHJ1sU" # YouTube 视频 ID
BASE_URL = "https://zylalabs.com/api/1812/youtube-video-to-audio-api/5870/get-audio"
headers = {"Authorization": f"Bearer {API_KEY}"}
def get_audio_json(video_id: str) -> dict:
params = {"id": video_id}
r = requests.get(BASE_URL, headers=headers, params=params, timeout=30)
r.raise_for_status()
return r.json()
def download_file(url: str, dest_path: str):
with requests.get(url, stream=True, timeout=60) as r:
r.raise_for_status()
with open(dest_path, "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
if chunk:
f.write(chunk)
def main():
try:
data = get_audio_json(VIDEO_ID)
except requests.HTTPError as e:
print(f"HTTP error: {e}", file=sys.stderr)
sys.exit(1)
status = data.get("status")
msg = data.get("msg")
progress = data.get("progress")
link = data.get("link")
title = data.get("title")
filesize = data.get("filesize")
duration = data.get("duration")
if status != "ok" or msg != "success" or progress != 100 or not link:
print(f"转换未准备好或失败。 status={status} msg={msg} progress={progress}", file=sys.stderr)
sys.exit(2)
# 基本文件名:清理标题以避免路径问题
safe_title = "".join(c for c in title if c.isalnum() or c in (" ", "-", "_")).rstrip()
filename = f"{safe_title or VIDEO_ID}.mp3"
print(f"标题:{title}")
print(f"持续时间(秒):{duration}")
print(f"文件大小(字节):{filesize}")
print(f"下载到:{filename}")
try:
download_file(link, filename)
print("下载完成。")
except requests.HTTPError as e:
print(f"下载文件失败:{e}", file=sys.stderr)
sys.exit(3)
if __name__ == "__main__":
main()
注意:
- id 仅期望 YouTube 视频 ID(在观看 URL 中的短令牌)。例如,从 https://www.youtube.com/watch?v=p-Z3YrHJ1sU,传递 p-Z3YrHJ1sU。
- 在下载之前检查 progress == 100,status == "ok" 和 msg == "success"。
- 使用返回的 filesize 和 duration 来验证业务规则(例如,拒绝长文件,强制存储配额)。
节省时间的实用集成细节
- YouTube 长度指导:使用大约 5 分钟或更短的视频;较长的视频可能无法成功处理。
- 重试逻辑:如果您的第一次调用返回的状态未准备好,请实施短暂的退避并重试,尊重您的订阅配额。
- 文件处理:该链接是直接的 MP3 URL。立即下载或将其交给您的存储层(S3、GCS 等)。在生产中避免热链接——缓存或存储音频以确保可靠性。
- 元数据:使用标题作为文件名,但始终清理以确保与文件系统的兼容性。
- 持续时间和用户体验:如果您还管理流媒体 UI,则通过估算文件大小/比特率显示剩余时间或 ETA。
- 安全性:将您的 API 密钥保留在服务器端。切勿在客户端代码中暴露它。
- 配额意识:市场使用订阅 + 配额模型。监控使用情况以防止意外的 429/限制场景。
常见工作流程和用例
语音转文本管道
将短 YouTube 解释视频转换为 MP3,然后将文件输入到您的转录服务中。使用持续时间在您支付下游计算成本之前拒绝超过您的语音识别限制的上传。
播客剪辑和预览
获取短片的音频以进行编辑审查。将文件名存储为从标题派生的 slug,并在呈现预览时使用文件大小来估算传输时间。
合规或审核工具
生成仅音频资产以进行基于 ML 的分类。将标题保留为标签,并存储链接检索时间戳以进行审计跟踪。
CMS 摄取的媒体备份
对于嵌入视频的文章,将音频与帖子一起存储以实现无障碍功能(仅音频版本)。根据您的 CMS 的最大长度政策验证持续时间。
MCP:从 AI 代理调用此 API
如果您使用 AI 编码代理或 IDE 集成的副驾驶进行构建,可以通过 Zyla 的 MCP 端点路由调用,该端点与 Claude Code、Cursor 和 Windsurf 等客户端配合使用。配置您的代理通过 MCP 使用您的 API 密钥调用市场端点。作为参考,请参见: MCP。代理应向 YouTube 视频到音频 API 的获取音频端点发出 GET 请求,带有所需的 id 参数和 Authorization: Bearer YOUR_API_KEY 头。然后,您的工具可以解析链接、标题、文件大小和持续时间,以决定是否下载或将 URL 向前传递。
错误处理和弹性
- 参数验证:确保 id 存在并且是有效的 YouTube 视频 ID。在发送之前删除空格和 URL 查询残留。
- 状态检查:不要假设成功——确认状态、msg 和进度。适当地处理非 200 HTTP 响应并重试。
- 超时:对 JSON 端点和返回的 MP3 链接的网络请求应具有合理的超时(例如,30-60 秒)。
- 缓存:将 JSON 响应与下载的文件一起存储,以便您可以在不重新调用相同视频 ID 的 API 的情况下显示准确的标题和持续时间。
- 吞吐量:如果您正在批量处理,请错开请求以尊重订阅配额,并避免给下游存储施加压力。
测试提示
- 使用已知的短视频:将测试视频保持在 1 分钟以内,以加快端到端检查。
- 文件系统卫生:在返回的标题中替换斜杠、冒号或表情符号等字符,以避免在 Windows/macOS 文件系统上出现错误。
- 断言:在写入磁盘之前验证 progress == 100 并且 filesize 大于零。
- 可观察性:记录 id、状态、msg、持续时间和文件大小,以便在用户报告缺失或损坏的音频时进行分类。
参考:端点详细信息
获取音频
- 方法:GET
- URL: https://zylalabs.com/api/1812/youtube-video-to-audio-api/5870/get-audio
- 查询参数:
- id(字符串,必需):YouTube 视频 ID(示例:p-Z3YrHJ1sU)
- 头部:
- Authorization: Bearer YOUR_API_KEY
- 描述:将给定的 YouTube 视频(建议约 5 分钟或更短)转换为音频,并返回包含直接 MP3 链接和元数据的 JSON。
生产的端到端检查清单
- 从 Zyla 列表中获取您的 API 密钥并安全存储(环境变量或秘密管理器)。
- 实现带有 id 参数和 Authorization 头的 GET 调用。
- 在尝试下载文件之前检查状态/msg/progress。
- 清理并持久化标题、持续时间和文件大小以及音频资产。
- 添加带有退避的重试;监控您的订阅配额。
- 针对稳定的短视频 ID 编写集成测试。
- 连接日志和警报以处理 HTTP 错误和意外响应形状。
常见问题解答
我应该传递什么作为 id 参数?
传递 YouTube 视频 ID,而不是完整的 URL。从 https://www.youtube.com/watch?v=p-Z3YrHJ1sU,使用 p-Z3YrHJ1sU。
视频可以多长?
端点指出视频的长度应约为 5 分钟或更短。
我如何进行身份验证?
使用头部:Authorization: Bearer YOUR_API_KEY。密钥在您在 Zyla API Hub 上订阅 API 后发放。
哪些字段确认成功转换?
在尝试下载之前检查 status == "ok"、msg == "success"、progress == 100,并且链接存在。
这是按调用付费吗?
不。Zyla API Hub 使用订阅 + 配额模型。请查看 API 页面以获取当前访问选项和定价详情。
准备好发布了吗?从列表中开始您的 7 天试用并获取您的 API 密钥: 开始 7 天的 YouTube 视频到音频 API 试用。通过 Zyla API Hub 上数千个 API 的单一订阅构建您的媒体管道。