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 ... < /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的主要内容,如果未能解决你的问题,请参考以下文章