我已经在我的PC上使用pip ffprobe命令安装了ffprobe,并从here安装了ffmpeg。
但是,我仍然在运行列出的代码here时遇到问题。
我尝试使用下面的代码,但没有成功。
SyntaxError: Non-ASCII character '\xe2' in file GetVideoDurations.py
on line 12, but no encoding declared; see
http://python.org/dev/peps/pep-0263/ for details
有人知道哪里出问题了吗?我没有正确引用目录吗?是否需要确保.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)
如果这个问题有点基础的话,很抱歉。我所需要的就是能够迭代一组视频文件,并获得它们的开始时间和结束时间。
谢谢!
发布于 2015-06-24 19:35:39
不需要遍历FFprobe
的输出。有一个one simple command,它只返回输入文件的持续时间:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 <input_video>
您可以使用以下方法来获取时长:
def get_length(input_video):
result = subprocess.run(['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', input_video], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
return float(result.stdout)
发布于 2015-06-25 14:30:35
我认为Chamath的第二个评论回答了这个问题:你的脚本中有一个奇怪的字符,要么是因为你使用的是`而不是a‘,要么是因为你有一个带有非英语口音的单词,就像这样。
值得一提的是,对于您正在做的事情,您也可以尝试使用MoviePy,它可以像您一样解析ffmpeg输出(但也许将来我会使用Chamath的ffprobe方法,它看起来更干净):
import moviepy.editor as mp
duration = mp.VideoFileClip("my_video.mp4").duration
发布于 2018-06-30 08:19:54
你有没有试过添加编码?正如Chamath所说,这个错误是典型的。将utf-8编码添加到您的脚本头:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
https://stackoverflow.com/questions/31024968
复制相似问题