Gradio播放返回.avi格式视频无法播放问题
目录
现象
在服务器外部启动gradio, 输入一个mp4视频, 输出一个avi格式视频, 简单代码如下:
if __name__ == '__main__':
input = gr.Video()
output = gr.Video()
...
iface = gr.Interface(
fn=pcwp,
inputs=input,
outputs=output,
)
uvicorn.run(
gr.mount_gradio_app(FastAPI(), iface, path=""), host="0.0.0.0", port=9120
)在conda环境下可以正常运行, 打包为docker容器无法播放output视频, 代码完全相同.
排查
首先print出工作目录和视频路径, 检查后无问题, 然后将视频改为绝对路径, 依然无法播放.
F12打开网络请求记录, 查看conda环境服务播放的视频来自磁盘缓存, 勾选不使用缓存, 然后重新请求, 发现仍然可以播放.
对比conda服务和docker服务的请求列表, 发现conda中有带ffmpeg字样的请求, 尝试在docker环境中安装ffmpeg:
docker exec -it container_name bash
# 进入容器shell
apt install ffmpegdocker restart container_name后重新尝试请求docker服务, 发现视频可以正常播放.