我几年前使用的是先前提出的问题的代码,但我相信这已经过时了.试图运行代码,我收到上面的错误.我仍然是python的新手,所以我无法从类似的问题中得到很多澄清.任何人都知道为什么会这样吗?
import subprocess
def getLength(filename):
result = subprocess.Popen(["ffprobe", filename],
stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
return [x for x in result.stdout.readlines() if "Duration" in x]
print(getLength('bell.mp4'))
Run Code Online (Sandbox Code Playgroud)
追溯
Traceback (most recent call last):
File "B:\Program Files\ffmpeg\bin\test3.py", line 7, in <module>
print(getLength('bell.mp4'))
File "B:\Program Files\ffmpeg\bin\test3.py", line 6, in getLength
return [x for x in result.stdout.readlines() if "Duration" in x]
File "B:\Program Files\ffmpeg\bin\test3.py", line 6, in <listcomp>
return [x for x in result.stdout.readlines() if "Duration" in x]
TypeError: a …
Run Code Online (Sandbox Code Playgroud) 我有一个项目,将需要能够知道时间的视频文件(如.mp4
,.mov
,.mxf
等)开始(例如,当按下记录),并在视频文件纪元以来的秒数结束.
到目前为止,我一直在做的是找到File Modified
时间并将其用作端点,然后减去持续时间以找到开头.这在某些情况下效果很好但是看起来有些相机并没有以线性可预测的方式准确地写/修改文件,所以有时候视频文件的开始/结束时间重叠,显然你不能在同时.
是否有一些其他方法或元数据我可以使用ffprobe
python中的say (或替代)来准确地确定视频何时开始以及何时结束?
我在我的电脑上使用pip ffprobe命令安装了ffprobe,并从这里安装了ffmpeg .
但是,我仍然无法运行此处列出的代码.
我尝试使用以下代码失败.
SyntaxError:第12行的文件GetVideoDurations.py中的非ASCII字符'\ xe2',但未声明编码; 有关详细信息,请参阅 http://python.org/dev/peps/pep-0263/
有谁知道什么是错的?我没有正确引用目录吗?我是否需要确保.py和视频文件位于特定位置?
import subprocess
def getLength(filename):
result = subprocess.Popen(["ffprobe", "filename"],
stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
return [x for x in result.stdout.readlines() if "Duration" in x]
fileToWorkWith = ?'C:\Users\PC\Desktop\Video.mkv'
getLength(fileToWorkWith)
Run Code Online (Sandbox Code Playgroud)
如果问题有些基本,请道歉.我所需要的只是能够迭代一组视频文件并获得他们的开始时间和结束时间.
谢谢!
是否有一个 Python 库可以从视频文件中读取元数据(相机型号、创建时间等)?Perl 的等价物是“exiftool”。我检查了 pyexiv2,但它没有像 exiftool 那样支持视频。谢谢。
我试图以人类可读的方式获取有关电影的信息(分辨率,帧速率,比特率,编解码器,持续时间等).我找到了这个commnad:
ffprobe -v quiet -print_format json -show_format -show_streams somefile.asf
Run Code Online (Sandbox Code Playgroud)
在此Stack Overflow问题中:以友好的方式获取ffmpeg信息
但它对我不起作用.当我在终端中尝试它时,输出为空:
richard@richard-desktop:~/projects/hello-python$ ffprobe -v quiet -print_format json -show_format -show_streams tests/test_1.mpg
richard@richard-desktop:~/projects/hello-python$
Run Code Online (Sandbox Code Playgroud) 我无法让ffprobe 包在 Python 3.6 中工作。我使用 pip 安装了它,但是当我输入时import ffprobe
它说
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python\Python36\lib\site-packages\ffprobe\__init__.py", line 1, in <module>
from ffprobe import FFProbe
ImportError: cannot import name 'FFProbe'
Run Code Online (Sandbox Code Playgroud)
__init__.py 文件只包含一行from ffprobe import FFProbe
。
sys.path
包括 'C:\Python\Python36\lib\site-packages',这是 ffprobe 目录所在的位置。
在 Python 2.7 中安装和导入包没有问题。但我想在 Python 3 中使用它,即使这意味着对 .py 文件进行手动更改。(没有文档说该包仅适用于 Python 2。)
任何人都可以帮忙吗?
我已经从Coursera.org下载了一堆视频,并将它们存储在一个特定的文件夹中。在一个特定的文件夹中有很多单独的视频(Coursera将一个演讲分成多个短视频)。我想拥有一个Python脚本,该脚本可提供特定目录中所有视频的总长度。视频文件为.mp4格式。
我需要知道使用python 3.3的mp4文件的持续时间.我搜索并试图用酶,原子这样做,但我找不到获得这些的方法.
谢谢你的时间.