相关疑难解决方法(0)

从ffmpeg获取实时输出以在进度条中使用(PyQt4,stdout)

我看了很多问题,但仍然无法弄清楚这一点.我正在使用PyQt,我希望运行ffmpeg -i file.mp4 file.avi并获取输出,因为我可以创建一个进度条.

我看过这些问题: ffmpeg可以显示进度条吗? 从子进程实时捕获stdout

我能够使用以下代码查看rsync命令的输出:

import subprocess, time, os, sys

cmd = "rsync -vaz -P source/ dest/"
p, line = True, 'start'


p = subprocess.Popen(cmd,
                     shell=True,
                     bufsize=64,
                     stdin=subprocess.PIPE,
                     stderr=subprocess.PIPE,
                     stdout=subprocess.PIPE)

for line in p.stdout:
    print("OUTPUT>>> " + str(line.rstrip()))
    p.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

但是当我更改命令时,ffmpeg -i file.mp4 file.avi我没有收到任何输出.我猜这与stdout/output缓冲有关,但是我不知道如何读取看起来像的行

frame=   51 fps= 27 q=31.0 Lsize=     769kB time=2.04 bitrate=3092.8kbits/s
Run Code Online (Sandbox Code Playgroud)

我可以用来计算进度.

有人可以告诉我一个如何从ffmpeg获取此信息到python的示例,无论是否使用PyQt(如果可能)


编辑: 我最终使用jlp的解决方案,我的代码看起来像这样:

#!/usr/bin/python
import pexpect

cmd = 'ffmpeg -i file.MTS file.avi'
thread = pexpect.spawn(cmd)
print "started %s" % cmd …
Run Code Online (Sandbox Code Playgroud)

python subprocess ffmpeg stdout pyqt

22
推荐指数
2
解决办法
2万
查看次数

ffmpeg进度条 - PHP中的编码百分比

我用PHP编写了一个完整的系统,并在服务器上使用bash在我的VPS上转换和流式传输HTML5中的视频.转换由ffmpeg在后台完成,内容输出到block.txt.

看过以下帖子:

ffmpeg可以显示进度条吗?

ffmpeg视频编码进度条

除其他外,我找不到一个有效的例子.

我需要以百分比的形式获取当前编码的进度.

我上面链接的第一篇文章给出了:

$log = @file_get_contents('block.txt');

preg_match("/Duration:([^,]+)/", $log, $matches);
list($hours,$minutes,$seconds,$mili) = split(":",$matches[1]);
$seconds = (($hours * 3600) + ($minutes * 60) + $seconds);
$seconds = round($seconds);

$page = join("",file("$txt"));
$kw = explode("time=", $page);
$last = array_pop($kw);
$values = explode(' ', $last);
$curTime = round($values[0]);
$percent_extracted = round((($curTime * 100)/($seconds)));

echo $percent_extracted;
Run Code Online (Sandbox Code Playgroud)

$ percent_extracted变量回零,由于数学不是我的强项,我真的不知道如何在这里取得进展.

这是来自block.txt的ffmpeg输出的一行(如果它有用)

时间= 00:19:25.16比特率= 823.0kbits/s帧= 27963 fps = 7 q = 0.0 size = 117085kB时间= 00:19:25.33比特率= 823.1kbits/s帧= 27967 fps = 7 …

php regex parsing ffmpeg

21
推荐指数
2
解决办法
3万
查看次数

按键的平均延迟有多大

我目前正在帮助某人进行反应时间实验.对于该实验,测量键盘上的反应时间.对于这个实验,重要的是要知道,由于按键和软件中的处理之间的延迟,可以引入多少错误.

以下是我使用谷歌发现的一些因素:

  • USB总线的最小值为125Hz,最大值为1000Hz(具体取决于设置,请参见此链接).
  • Windows中可能还有一些额外的键盘缓冲区可能会进一步延迟按键,但我不知道其背后的逻辑.

不幸的是,无法控制实验的低级逻辑.该实验用E-Prime编写,该软件通常用于此类实验.然而,提供E-Prime的公司还提供额外的硬件,他们为精确的反应时间做广告.因此他们似乎意识到这种效果(但不知道它有多大).

不幸的是,有必要使用标准键盘,所以我需要提供减少延迟的方法.

hardware keyboard usb low-latency

6
推荐指数
1
解决办法
3866
查看次数

帧提取期间的ffmpeg视频扫描进度

我使用ffmpeg选择过滤器扫描输入视频以提取某些帧。该选择基于复杂的条件,并且无法预测提取的帧数(我正在进行场景检测,但这可能有所不同-例如选择所有I帧等)。

我需要显示扫描(解码)视频的百分比(例如10%或90%)。


我尝试了几种方法来解析控制台输出,就像人们在处理编码时通常所做的那样,但这对扫描进度没有帮助(例如ffmpeg可以显示进度条吗?还是ffmpeg进度条-PHP中的编码百分比

ffmpeg -progress sceneProgr.txt -i input.wmv -vsync passthrough -an -vf select='gt(scene\,0.2)',showinfo scene%%05d.png
Run Code Online (Sandbox Code Playgroud)

产生的输出如下:

<..>    
frame=    0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A    
n:0 pts:16550 pts_time:16.55 pos:4205325 fmt:rgb24 sar:0/1 s:640x480 i:P iskey:1 type:I checksum:95895BC9 plane_checksum:[95895BC9]
frame=    1 fps=0.7 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A    
n:1 pts:24591 pts_time:24.591 pos:6685325 fmt:rgb24 sar:0/1 s:640x480 i:P iskey:0 type:P checksum:FF4CC015 plane_checksum:[FF4CC015]
'frame=...' and 'n:...' lines are repeated for each of the extracted frames.
Run Code Online (Sandbox Code Playgroud)

双方frame=... …

video ffmpeg progress ffprobe

5
推荐指数
1
解决办法
1518
查看次数

ffmpeg读取文件大小

我使用 ffmpeg 转换通过 ASPX 网页上传的视频文件。 ffmpeg转换效果很好。

我想为最终用户提供一个进度条。所以我在网页上放置了一个 updatePanel 并尝试读取文件大小......

  • 使用文件信息:ffmpeg freeze
  • 使用[process.start()] cmd.exe /c dir : ffmpeg freeze
  • 使用文件流:错误->>文件被另一个进程使用
  • 使用ffmpeg -i XY 2> log.txt:仅在转换完成时创建日志

执行此操作的正确/有效方法是什么?

asp.net ffmpeg freeze progress-bar

2
推荐指数
1
解决办法
3943
查看次数

使用 FFMPEG 显示视频内视觉进度条?

由于 OBS Studio 缺乏视觉指示器来显示视频的进度(以及何时需要前进到下一个场景),我想知道是否有命令行选项(或解决方案)来让 FFMPEG 重新编码视频并在视频底部显示一个进度条,显示视频到目前为止已经播放了多长时间。

有这样的功能吗?

ffmpeg

2
推荐指数
1
解决办法
3238
查看次数