- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
到目前为止,为了让 ffmpeg 运行起来,我已经涵盖了很多堆栈方面的知识,因此我可以制作一个延时视频。
我在 CentOS 7 机器上运行 python3.7.0a0
。
python3
>>> import numpy as np
>>> np.__version__
'1.12.0'
>>> import matplotlib as mpl
>>> mpl.__version__
'2.0.0'
>>> import mpl_toolkits.basemap as base
>>> base.__version__
'1.0.7'
我找到了 this github gist关于安装ffmpeg。我使用了 chromium 源,并且安装时没有使用 prefix
选项(使用默认值)。
我已经确认安装了 ffmpeg,尽管我对测试它是否有效一无所知。
which ffmpeg
/usr/local/bin/ffmpeg
ffmpeg -version
ffmpeg version N-83533-gada281d Copyright (c) 2000-2017 the FFmpeg dev elopers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-11
configuration:
libavutil 55. 47.100 / 55. 47.100
libavcodec 57. 80.100 / 57. 80.100
libavformat 57. 66.102 / 57. 66.102
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 73.100 / 6. 73.100
libswscale 4. 3.101 / 4. 3.101
libswresample 2. 4.100 / 2. 4.100
我尝试运行一些我在网上找到的示例:
[1] http://matplotlib.org/examples/animation/basic_example_writer.html
[2] https://stackoverflow.com/a/23098090/3454650
在我尝试保存动画文件之前一切正常。
[1]
anim.save('basic_animation.mp4', writer = FFwriter, fps=30, extra_args=['-vcodec', 'libx264'])
[2]
im_ani.save('im.mp4', writer=writer)
我找到了 here明确设置 ffmpeg 的路径可能是必要的,所以我将其添加到测试脚本的顶部:
plt.rcParams['animation.ffmpeg_path'] = '/usr/local/bin/ffmpeg'
我在代码中尝试了一些调整,但总是得到相同的响应,我不知道如何开始破译:
Traceback (most recent call last):
File "testanim.py", line 27, in <module>
writer.grab_frame()
File "/usr/local/lib/python3.7/contextlib.py", line 100, in __exit__
self.gen.throw(type, value, traceback)
File "/usr/local/lib/python3.7/site-packages/matplotlib/animation.py", line 256, in saving
self.finish()
File "/usr/local/lib/python3.7/site-packages/matplotlib/animation.py", line 276, in finish
self.cleanup()
File "/usr/local/lib/python3.7/site-packages/matplotlib/animation.py", line 311, in cleanup
out, err = self._proc.communicate()
File "/usr/local/lib/python3.7/subprocess.py", line 836, in communicate
stdout, stderr = self._communicate(input, endtime, timeout)
File "/usr/local/lib/python3.7/subprocess.py", line 1474, in _communicate
selector.register(self.stdout, selectors.EVENT_READ)
File "/usr/local/lib/python3.7/selectors.py", line 351, in register
key = super().register(fileobj, events, data)
File "/usr/local/lib/python3.7/selectors.py", line 237, in register
key = SelectorKey(fileobj, self._fileobj_lookup(fileobj), events, data)
File "/usr/local/lib/python3.7/selectors.py", line 224, in _fileobj_lookup
return _fileobj_to_fd(fileobj)
File "/usr/local/lib/python3.7/selectors.py", line 39, in _fileobj_to_fd
"{!r}".format(fileobj)) from None
ValueError: Invalid file object: <_io.BufferedReader name=6>
我的配置是否有问题?我在谷歌上搜索了一段时间这个错误,但从未发现任何与动画/ffmpeg 相关的内容。任何帮助将不胜感激。
更新:
@LordNeckBeard 指出我在这里:https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
我在安装 x264 编码依赖项时遇到了问题。 libavcodec/*.c 中的某些文件(在 make
输出中)报告了对多个函数的 undefined reference 。在徒劳的追逐之后发现了这个:https://mailman.videolan.org/pipermail/x264-devel/2015-February/010971.html
为了修复 x264 安装,我只是添加了一些 configure
标志:
./configure --enable-static --enable-shared --extra-ldflags="-lswresample -llzma"
更新:
因此,在修复 libx264 问题后一切都安装正常。我继续将 ffmpeg 二进制文件从 ffmpeg_build
文件夹复制到 /usr/local/bin/ffmpeg
。
运行脚本后,我遇到了 ffmpeg 找不到 libx264 共享对象的问题。我想我将不得不使用不同的前缀重新编译所有内容。我的直觉告诉我,在我使用一些损坏的配置弄乱了所有内容之后,周围有旧文件。
所以我决定也许我应该尝试使用 NUX:http://linoxide.com/linux-how-to/install-ffmpeg-centos-7/我使用新的 rpm 安装了 ffmpeg,但没有用。由于缺少共享对象,我仍然无法运行 ffmpeg。
最后,我没有将 usiong 文件复制到我的 /usr/local/bin
文件夹中,而是直接从构建 bin 目录运行 ffmpeg。事实证明这确实有效!
所以本质上,如果我想在系统范围内安装 ffmpeg,我需要再次从源代码手动编译,但使用非本地前缀。
最佳答案
我在使用 Anaconda 时遇到了同样的问题。运行 which ffmpeg
显示它正在使用 Anaconda 路径内的 ffmpeg
而不是系统的二进制文件。我通过添加
plt.rcParams['animation.ffmpeg_path'] = '/usr/bin/ffmpeg'
在我的 matplotlib
导入之后。
关于python - 如何为 matplotlib.animation 正确启用 ffmpeg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634997/
我想知道如何首先检测 Javascript 是否启用/禁用。在此站点上禁用 javascript 表明 stackoverflow 使用了称为标签的东西。 这是标准的做法吗?它适用于所有浏览器吗?它不
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: How to enable PHP short tags ? Enable short open tags
在 VSTS (Azure DevOps) 上拥有私有(private)存储库我尝试通过将以下内容添加到 .csproj 文件来启用 SourceLink:https://github.com/dot
我创建了一个 wx.Frame(我们称之为 mainFrame)。该框架上包含一个按钮,当单击该按钮时,会创建一个新框架(我们称之为 childFrame)。 我想知道如何在创建 childFrame
当我禁用 WPF 中的控件时,比如说一个菜单项 MenuItem aMenuItem = ... aMenuItem.IsEnabled = false; MenuItem 中的文本仍然处于事件状态,
我想在我的 nginx 服务器上启用 gzip 压缩。 nginx.conf 文件在这里: http { # Enable Gzip server { location ~* \.(?
我正在使用免费的 heroku 附加 PG 备份并遵循这些 instructions .我找到了安装应用程序的命令:heroku addons:add pgbackups:auto-week。但是我想
我想知道脚本是否可以使用某种切换按钮启用/禁用页面上的所有输入元素。 我用谷歌搜索了它,但除了这个之外没有发现任何有用的东西: http://www.codetoad.com/javascript/e
在我的 php 文件中,我想使用 jQuery Datepicker。 当我的文件加载时,我创建了禁用的日期选择器。 然后,当我的 php 文件(它是一个表单)中的一个特殊字段被填充时,我想启用日期选
我有一个按钮,如下所示: RadButton lnkAdd = new RadButton(); lnkAdd.ID = "BtnAdd"; lnkAdd.CommandName = RadGrid.
public static void ToggleTaskManager(string keyValue) { RegistryKey objRegistryK
我正在 Azure 中使用事件网格订阅,该订阅在创建 Blob 时触发。然而,我们有很多文件进入这个 blob,比如说 1000 多个。 如果我发现任何文件有任何错误,我想做的是禁用事件订阅。 最佳答
我的网站上有几个使用 HTML5 contentEditable 属性的 div。目标是让用户能够开始编写日记条目,并将保存按钮从禁用更改为启用。 这是我目前拥有的 HTML: Write
我有一个范围输入,其定义如下: @Html.LabelFor(m => Model.Quality, Resources.CompressionQuality) 和一个下拉菜单: @Html.Lab
我正在尝试创建一个启用/禁用按钮的下拉菜单,并且我正在关注此 example 但它已经有 4 年历史了,而且该功能似乎无法在我的 xhtml 页面上运行。 任何帮助都将被适当 最佳答案 这是一个现场演
我正在 Azure 中使用事件网格订阅,该订阅在创建 Blob 时触发。然而,我们有很多文件进入这个 blob,比如说 1000 多个。 如果我发现任何文件有任何错误,我想做的是禁用事件订阅。 最佳答
我在这里遇到一个非常奇怪的情况:我编写了一个应用程序,除其他外,将连接的代理从打开切换到关闭,反之亦然。通过更改注册表中的值来完成此操作: public void SetUpProxy(string
我需要调整一堆 PVC 的大小。似乎最简单的方法是通过ExpandPersistentVolumes 功能。但是我无法获得配置合作。 ExpandPersistentVolumes feature g
如果我的TextField为空,则应禁用该按钮,并且该按钮的textColor和borderColor应该为灰色。但是,启用按钮后,颜色应为蓝色。 更改textColor很容易: button.Set
您好,我的问题是:我无法从另一个类启用表单的按钮。我的表单类是 public class FileSending { //Function for enabling the button
我是一名优秀的程序员,十分优秀!