gpt4 book ai didi

python - 使用 Python 获取 FFProbe 信息

转载 作者:太空狗 更新时间:2023-10-29 21:29:46 24 4
gpt4 key购买 nike

我一直在尝试解决这个问题(我是编程新手),但我无法解决。

我正在尝试构建一个脚本来测试该文件,并为我提供输出,我可以从中获取诸如“音频格式”之类的信息,然后我可以将这些信息放入文件名中。但是,我什至无法让脚本返回任何文件信息。我在插入输入文件时遇到了困难...

所以此时我只需要帮助让它根据我输入的 argvs 吐出信息。希望我能够弄清楚如何从中解析音频信息。

我的尝试似乎很接近:

#!/usr/bin/python
import os, sys, subprocess, shlex, re
from subprocess import call
def probe_file(filename):
p = subprocess.Popen(['/opt/local/bin/ffprobe', '-show_format', '-pretty', '-loglevel quiet', -i filename], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
print filename
print p.communicate()
[probe_file (f) for f in os.listdir('.') if not f.startswith('.')]

最佳答案

您的代码中存在一些问题:

  1. Popen 的参数列表的最后一个参数是 -i filename,这是一个语法错误,请改用 '-i '+filename
  2. shell=True 通常不需要并且是不必要的负担。

除此之外它似乎在工作,您在修复 #1 后没有看到输出吗?

编辑:看起来你在使用 ffprobe 命令行时遇到问题,所以我安装了它,你需要的更改是:

  1. 我的 ffprobe (ffprobe 0.7.3-4:0.7.3-0ubuntu0.11.10.1) 似乎不接受 -i 标志,输入文件只是作为最后一个参数传递。
  2. 您需要将 -loglevel 和 loglevel 选项 quiet 作为单独的参数传递,即 [..., '-loglevel', 'quiet',. .]

所以在这些更改之后,这里是一个示例脚本:

#!/usr/bin/python
import os, sys, subprocess, shlex, re
from subprocess import call
def probe_file(filename):
cmnd = ['ffprobe', '-show_format', '-pretty', '-loglevel', 'quiet', filename]
p = subprocess.Popen(cmnd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print filename
out, err = p.communicate()
print "==========output=========="
print out
if err:
print "========= error ========"
print err

probe_file('drop.avi')

我看到了正确的输出:

==========output==========
[FORMAT]
filename=drop.avi
nb_streams=1
format_name=avi
format_long_name=AVI format
start_time=0:00:00.000000
duration=0:00:06.066667
size=660.000 Kibyte
bit_rate=891.217 Kbit/s
[/FORMAT]

========= error ========
ffprobe version 0.7.3-4:0.7.3-0ubuntu0.11.10.1, Copyright (c) 2007-2011 the Libav developers
built on Jan 4 2012 16:08:51 with gcc 4.6.1
configuration: --extra-version='4:0.7.3-0ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
libavutil 51. 7. 0 / 51. 7. 0
libavcodec 53. 6. 0 / 53. 6. 0
libavformat 53. 3. 0 / 53. 3. 0
libavdevice 53. 0. 0 / 53. 0. 0
libavfilter 2. 4. 0 / 2. 4. 0
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 52. 0. 0 / 52. 0. 0
Unsupported codec with id 114 for input stream 0

关于python - 使用 Python 获取 FFProbe 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9896644/

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