时间: 2024-11-05 08:57:19 阅读: 213
利用这项API接口,我们可以轻松地将图文内容转换为视频,无需借助其他任何软件。不过目前这项功能一次只能转换一条图文。
对于从事短视频创作的人来说,这无疑是一项非常便捷的功能。于是我决定花些时间研究一下,并整理出了相应的代码。
在使用之前,我们需要做好一些前期准备工作。
一、百度账号
要使用百度API接口,首先需要一个百度开放平台的账号。请直接使用您的百度账号登录。
接下来,我们需要获取应用中的AppID、API Key和Secret Key。如果您对此不太了解,可以通过百度搜索或私信我了解更多信息,这里不再赘述。
二、百家号
需要注意的是,该接口只接受百度官方的百家号文章链接,其他链接无效。如果您需要使用该接口但并未注册百家号,您可以注册一个,同时也可以当做自媒体进行运营。如果您觉得注册过程较为麻烦,可以私信我,我可以帮您发布内容并为您提供链接。
图文内容不宜过长,建议将文字控制在500字以内,具体原因将在后文详述。
三、获取access_token
文档中提到了url中有一个参数access_token,这个参数是必须的。我们在对url发送请求前,需要先获取access_token。相关代码已经为大家写好:
(此处省略获取access_token的详细代码)
四、图文生成视频
1. 创建视频任务
前期准备工作完成后,我们可以开始使用API文档来生成视频。如果您只想使用这个功能而不关心具体细节,可以跳过以下部分,我会在最后提供完整的代码。
关于接口的描述是这样的:通过提供新闻链接和必要的参数,即可创建一个视频任务,并获得任务id,用于后续的查询或中止操作。目前同一用户仅能创建一个视频任务。
接下来,我们需要对url发送请求。请求内容包括请求头和请求参数,其中请求头是固定的。
(此处省略请求头和请求参数的详细描述)
这段图文内容中,我们可以发现一些重要的参数和设置。图文链接已经准备好了,而且我们拥有七种不同的发音人声音可以选择。
我已经尝试使用度小美的声音,大家也可以试试看其他的,感受一下不同的声音效果。这里特别需要注意的是,有一个duration参数,它规定了视频的时长范围,只能创建40-120秒的视频,非常适合制作短视频。
这个时长的设定也间接告诉我们,图文内容中的文字数量需要控制在一定范围内。生成的视频会自动包含片头片尾,时间约为8秒。据我测试,每秒大约能包含4-5个字(包括标点符号)。设置视频时长时,可以参考字数除以(时长+8秒)的公式。
接下来,我们来看看生成图文视频的代码。在这段代码中,我们首先定义了一个函数get_video(),用于获取是否创建视频成功。我们需要提供news_url、tts_per和duration等参数。通过发送post请求到指定的url,并带上headers,我们可以获取到返回的json信息。如果错误码为0,就表示视频创建成功,同时会返回job_id和预计结束时间。如果创建失败,我们可以通过查询任务API来查看具体情况。
视频创建成功后,后台会开始生成视频,这个过程可能需要一些时间。那么在这段时间里我们可以做什么呢?我们可以查询视频的任务状态,如果视频已经生成成功,我们可以下载视频。如果我们突然不想用这个图文内容生成视频了,我们可以中止任务。接下来我们详细讲解如何查询视频任务和下载视频。
查询任务API是另一个url,但已经在代码中处理好了,无需担心。发起查询请求后,会返回任务的状态码,包括已创建、排队中、生成中、生成成功和生成失败等。我们可以根据返回的状态码进行相应的操作。
如果视频已经生成成功,我们会得到视频的下载链接、封面下载链接、链接失效时间等信息。我们可以直接复制粘贴下载链接到浏览器中播放或下载使用。如果出现错误,可以再次查询,可能是接口本身的问题。如果视频还在生成中,我们会得到一个大概的完成时间点。还会返回一个任务ID,可以用于中止视频任务。
这一步其实比较简单,就不在重复那么多。
1. 中止任务
def stop_task():
print('准备中止任务。。')
job_id = int(input('请输入你要中止的任务id:'))
data = {
'job_id':job_id
r = requests.get(url = url_d.format(get_AccessToken(),data = data,headers=headers))
info = r.json()
if info['error_code'] == 0:
print('中止的任务信息为:%s' %info['result'])
else:
print('该任务不存在,请检查输入数据后再试!')
关于API的详细说明,感兴趣的同学也可以去参考官方文档:https://ai.baidu.com/ai-doc/NLP/Zk7ylspjv
2. 完整代码
最后的代码我把一些需要手动输入的参数重新添加了进去,不过没有对输入的内容进行判断,不然代码写起来也太长了…
输入的顺序是:
(1)输入要进行的操作:【0:创建任务】 【1:查询任务】 【2:中止任务】
如果是0,那么需要输入以下:
(2)输入文章链接
(3)输入发音人(数字代号)
(4)输入视频时长(40-120),单位是秒
如果是2,那么需要输入任务id
(5)请输入要中止的任务ID(不知道可以通过1查询获得)
完整代码,我把账户的几个key都删除了,需要用的记得填好后再用,不然会报错的…