gpt4 book ai didi

python - 将复杂的 ffmpeg 命令转换为 python3

转载 作者:太空宇宙 更新时间:2023-11-03 19:53:50 25 4
gpt4 key购买 nike

我有一个复杂的ffmpeg以音频和图像作为输入并导出音乐视频的命令。

ffmpeg -loop 1 -framerate 2 -i "front.png" -i "testWAVfile.wav" \
-vf "scale=2*trunc(iw/2):2*trunc(ih/2),setsar=1,format=yuv420p" \
-c:v libx264 -preset medium -tune stillimage \
-crf 18 -c:a aac -shortest -vf scale=1920:1080 "outputVideo.mp4"

我正在尝试编写一个python3程序cmdMusicVideo.py它将在纯 Python 中运行此命令。我知道要运行此命令,您需要 ffmpeg程序,我尝试用纯 python3 编写它,我不只是生成一个单独的进程来运行用户需要 ffmpeg 的 bash 命令。已安装。

我研究了运行 ffmpeg 的各种解决方案在 python3 中,它们是:

  • 答:只需运行 ffmpeg命令作为子进程,用户需要有 ffmpeg已安装
  • 或 B:一个 ffmpeg pip 程序,如 ffmpeg-python

我 checkout 的 pip 库都使用令人难以置信的不同格式,而且我还没有找到复制我的 ffmpeg 的方法。命令。我搜索过loop命令在他们的 python 包文档中,但它没有出现在任何地方。

有没有办法转换我的ffmpeg命令进入 python3 程序,用户不需要已经拥有 ffmpeg安装在他们的计算机上?

计划最终将其变成自己的 pip 包,我担心的是,如果我使用 A 方法,可能会出现有人尝试运行我的 pip 命令但没有运行的情况。没有ffmpeg安装在他们的终端上(也许使用 python3 特定终端?)

最佳答案

Is there a way to convert my ffmpeg command into a python3 program where the user doesn't need to already have ffmpeg installed on their computer?

简短回答:不。

The plan is to eventually turn this into its own pip package, and my concern is that if I use the A method, there would be a case where somebody tries to run my pip command but doesn't have ffmpeg installed on their terminal (maybe using a python3 specific terminal?)

您应该在安装步骤中添加检查,以确保用户/系统的路径上有 ffmpeg 二进制文件,如果没有,则引发错误(并通过 ffmpeg install 将用户指向一个 URL)指示)。没有“最佳”方法可以做到这一 pip ,这取决于您如何让用户安装程序。这里有三个选项。

生成文件

如果您使用的是 Makefile,您可以将如下内容添加到 Makefile 的顶部:

ifeq ($(shell which ffmpeg),)
$(error Please install ffmpeg using "apt-get install ffmpeg")
endif

如果未安装 ffmpeg 二进制文件,则在运行任何 make 命令之前都会失败。

仅限 setup.py

如果您只是单独使用 setup.py 文件而没有 Makefile,则可以将类似的内容添加到 setup.py 的顶部(在您之前调用setup()):

import subprocess
try:
subprocess.run(["ffmpeg","--help"], check=True)
except subprocess.CalledProcessError:
print('Please install ffmpeg using "apt-get install ffmpeg"')

conda

这实际上是 conda 的用例之一,它旨在为用户提供一个简单的工具来安装东西(如 pip),但也能够构建和安装非 Python 二进制文件(与 pip 不同)。可以看到ffmpeg可以通过conda使用:

$ conda search ffmpeg
Loading channels: done
# Name Version Build Channel
ffmpeg 3.4 h766ddd1_0 pkgs/main
ffmpeg 3.4 h8a2ae75_0 pkgs/main
ffmpeg 4.0 h01ea3c9_0 pkgs/main
ffmpeg 4.0 hc84425e_0 pkgs/main
ffmpeg 4.2 h677a3f5_0 pkgs/main

因此,您可以创建一个 conda 配方,而不是打包您的程序并使其在 Pypi 上可用。请参阅creating conda recipes有关详细信息,但基本上您可以在 meta.yml 文件中指定 ffmpeg 作为要求:

requirements:
host:
- ffmpeg 4.2.*

关于python - 将复杂的 ffmpeg 命令转换为 python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59658187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com