我不明白为什么这不起作用..我试图用 [0:v]/[0:1]/[0:v:0] 和 [0:a] 获取音频流/[0:0]/[0:0:0]。没有任何效果。
解释输入:
1.1st 输入流是一个可以具有不同分辨率的视频,过滤器在其上添加填充以使其成为 600:480。
2.2nd 输入是一个覆盖 png,它的比例已经是 5:4.. 在它被覆盖在过滤器之前只是让它变成 600:480。
3.3rd 和 4th 也是视频,我不在乎它们是否被拉伸..n 它们被拉伸到 600:480。
4.so 最后有 3 个流 1 个重叠视频 2 个需要连接的拉伸视频。
这是命令:
ffmpeg
-i '/home/vidinflux/public_html/assets/temp/2018020116464612/2018020116464612.mp4'
-i '/home/vidinflux/public_html/assets/temp/2018020116464612/2018020116464612_overlay.png'
-i '/home/vidinflux/public_html/assets/user/736/video/Lines1.mp4'
-i '/home/vidinflux/public_html/assets/user/736/video/Lines11.mp4'
-filter_complex
"[0:v]trim=0:138,setpts=PTS-STARTPTS[v0];[0:a]atrim=0:138,asetpts=PTS-STARTPTS[a0];[v0]scale='gte(iw/ih\,600/480)*600+lt(iw/ih\,600/480)*((480*iw)/ih):lte(iw/ih\,600/480)*480+gt(iw/ih\,600/480)*((600*ih)/iw)',pad='600:480:(600-gte(iw/ih\,600/480)*600-lt(iw/ih\,600/480)*((480*iw)/ih))/2:(480-lte(iw/ih\,600/480)*480-gt(iw/ih\,600/480)*((600*ih)/iw))/2:black'[x];[1:v]scale=600:480[y];[x][y]overlay=0:0[z];[2:v]scale=600:480,setsar=1:1[x0];[3:v]scale=600:480,setsar=1:1[x1];[x0][2:a][z][a0][x1][3:a]concat=n=3:v=1:a=1[v][a]"
-map "[v]"
-map "[a]"
-c:v libx264
-shortest /home/vidinflux/public_html/assets/temp/2018020116464612/2018020116464612_final.mp4
Run Code Online (Sandbox Code Playgroud)
这是我得到的完整错误:
Stream specifier ':a' in filtergraph description [0:v]trim=0:138,setpts=PTS-STARTPTS[v0];[0:a]atrim=0:138,asetpts=PTS-STARTPTS[a0];[v0]scale='gte(iw/ih\,600/480)*600+lt(iw/ih\,600/480)*((480*iw)/ih):lte(iw/ih\,600/480)*480+gt(iw/ih\,600/480)*((600*ih)/iw)',pad='600:480:(600-gte(iw/ih\,600/480)*600-lt(iw/ih\,600/480)*((480*iw)/ih))/2:(480-lte(iw/ih\,600/480)*480-gt(iw/ih\,600/480)*((600*ih)/iw))/2:black'[x];[1:v]scale=600:480[y];[x][y]overlay=0:0[z];[2:v]scale=600:480,setsar=1:1[x0];[3:v]scale=600:480,setsar=1:1[x1];[x0][2:a][z][a0][x1][3:a]concat=n=3:v=1:a=1[v][a] matches no streams.
Run Code Online (Sandbox Code Playgroud)
还有这些警告:
[Parsed_setsar_9 @ 0x219fba0] num:den syntax is deprecated, please use num/den or named options instead
[Parsed_setsar_11 @ 0x21a4840] num:den syntax …
Run Code Online (Sandbox Code Playgroud) 我在 python 3.7 上运行 django 2.2.3。我想要一个带有 asyncio 的解决方案,以便 api 可以只调用异步函数并返回响应,而无需等待我们使用 jquery Promise 执行操作的方式。定义my_coro
只是举例。我将运行moviepy
通常需要 40-50 秒才能完成的功能。我不希望 api 等待那么长时间才能发送响应。我也对如何处理线程池感到困惑。这里如何使用线程池呢?因为我也打算让电影迭代更快。那么如何创建一个处理调用的池my_coro
呢?
async def my_coro(n):
print(f"The answer is {n}.")
async def main():
await asyncio.gather(my_coro(1),my_coro(2),my_coro(3),my_coro(4))
class SaveSnaps(APIView):
def post(self, request, format = None):
if request.user.is_anonymous:
return Response({"response":"FORBIDDEN"}, status = 403)
else:
try:
asyncio.run(main())
return Response({"response": "success"}, status = 200)
except Exception as e:
return Response({'response':str(e)}, status = 400)
Run Code Online (Sandbox Code Playgroud)
更新:
我尝试使用芹菜。但由于我不会使用周期性任务,实际上我需要异步接收 blob 数组作为参数的方法。celerytask.delay
给我一个错误,因为任务需要可序列化的参数。所以我回到了这一点。我不确定我是否应该坚持使用线程解决方案或其他解决方案。
更新:我忘了分享我最后做了什么。我转移到celery
. 但由于预期celery …
python django asynchronous django-rest-framework python-asyncio
所以我有这两行代码-
canvas.item(0).set('src',url); canvas.renderAll();
canvas.item(0).setSrc(url); canvas.renderAll();
因此,现有画布的图像在第 0 层加载。因此,当我使用 Solution1 时,它应该更改图像。但它没有反映。当我尝试时console.log(canvas.item(0))
,它显示url
设置为src
中的属性object array
,但它从未反映。然后当我使用Solution2时,它就起作用了。但即便如此,它还是有问题。我必须运行 Solution2 两次然后它就会显示。有什么问题吗?