目录

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 ffmpeg

docker restart container_name后重新尝试请求docker服务, 发现视频可以正常播放.