python怎么执行ffmpeg

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎么执行ffmpeg相关的知识,希望对你有一定的参考价值。

参考技术A 在ubuntu环境下,在python程序中调用ffmpeg的一条命令:
ffmpeg -i yourVideo.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 160x90-f image2 thumbnails-%02d.jpeg本回答被提问者采纳

在循环中执行“ffmpeg”命令[重复]

【中文标题】在循环中执行“ffmpeg”命令[重复]【英文标题】:Execute "ffmpeg" command in a loop [duplicate] 【发布时间】:2014-03-05 05:44:17 【问题描述】:

我的文件夹中有三个 .wav 文件,我想使用 ffmpeg 将它们转换为 .mp3

我写了这个 bash 脚本,但是当我执行它时,只有第一个被转换为 mp3。

我应该怎么做才能让脚本继续遍历我的文件?

这是脚本:

#!/bin/bash
find . -name '*.wav' | while read f; do
    ffmpeg -i "$f" -ab 320k -ac 2 "$f%.*.mp3"
done

【问题讨论】:

【参考方案1】:

使用-nostdin 标志禁用交互模式,

ffmpeg -nostdin -i "$f" -ab 320k -ac 2 "$f%.*.mp3"

或者让ffmpeg从控制终端而不是标准输入读取它的输入。

ffmpeg -i "$f" -ab 320k -ac 2 "$f%.*.mp3" </dev/tty

查看ffmpeg documentation 中的-stdin/-nostdin 标志

【讨论】:

【参考方案2】:

如果您确实需要find(用于查找子目录或执行更高级的过滤),请尝试以下操作:

find ./ -name "*.wav" -exec sh -c 'ffmpeg -i "$1" -ab 320k -ac 2 "$(basename "$1" wav).mp3"' _  \;

find 的输出传送到while 循环有两个缺点:

    在匹配的文件名包含换行符的情况下(可能很少见)失败。 ffmpeg,出于某种我不知道的原因,将从标准输入读取,这会干扰read 命令。这很容易解决,只需从/dev/null 重定向标准输入,即find ... | while read f; do ffmpeg ... &lt; /dev/null; done

无论如何,不​​要将命令存储在变量名中并使用eval 评估它们。这是危险的,也是一个坏习惯。如果您确实需要分解出实际的命令行,请使用 shell 函数。

【讨论】:

【参考方案3】:

find 没有理由,只需使用bash 通配符通配符

#!/bin/bash
for name in *.wav; do
  ffmpeg -i "$name" -ab 320k -ac 2 "$name%.*.mp3" 
done 

【讨论】:

不会处理子目录。 投反对票。这是解释bash 功能的解决方法,而不是解决ffmpeg 实际问题的解决方案。请参阅 Shammell Lee 的回答。

以上是关于python怎么执行ffmpeg的主要内容,如果未能解决你的问题,请参考以下文章

ios 怎么配置编译ffmpeg

在循环中执行“ffmpeg”命令[重复]

如何获取flutter ffmpeg执行的进度百分比

ffmpeg转换视频格式的问题

tp5用composer安装了php-ffmpeg后怎么调用

delphi 调用exe文件后怎么获得执行结果