问题标签 [mpv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用 String 的 JNA 调用与使用 byte[] 的行为不同
我有一个 C 函数的 JNA Java 接口,mpv_set_option_string
定义为:
当我这样称呼它时:
-5
我从上次调用中返回错误 ( ),表示keep-open
未找到选项 ( )。
但是,如果我将 JNA 函数签名更改为:
...然后这样称呼它:
...它不返回错误(0
)并且可以正常工作(或者看起来如此)。
我没有得到的是,JNA 应该String
默认编码为char *
UTF-8 编码并NUL
终止(正是我手动执行的操作),但我得到了不同的结果。
任何人都可以对此有所了解吗?
java - Linux播放视频命令几秒钟后冻结
我在 Java jar 应用程序中运行 shell 命令,我使用运行时和进程 exec,但几分钟后视频和 java 进程冻结。
当我在 shell 控制台中单独运行命令时,它工作正常。
在控制台中它可以工作:
当我在 java jar 中运行此命令时出现问题:
我在 Ubuntu 16.04 Java Openjdk 8 中运行它
ffmpeg - 如何使 mpv 与 mininterpolate 等 ffmpeg 过滤器更兼容?
ffmpeg 过滤器 mininterpolate(运动插值)在 MPV 中不起作用。
(尽管如此,该文件然后在没有 mininterpolate 的情况下正常播放)。
(我使用搜索引擎和整个文档进行了研究,并对使用 opengl 进行了故障排除,除了寻求帮助和学习更多地了解源代码之外,我通常尝试了所有方法,而且我不是程序员)......</p>
--gpu-context=angle --gpu-api=opengl
也不能使opengl工作。(我猜 opengl 可以帮助查看它在文档中的使用)。
笔记
要获取可用视频过滤器的完整列表,请参阅 --vf=help 和 http://ffmpeg.org/ffmpeg-filters.html。
另外,请记住,大多数实际过滤器都可以通过 lavfi 包装器获得,它使您可以访问大多数 libavfilter 的过滤器。这包括从 MPlayer 移植到 libavfilter 的所有过滤器。
大多数内置过滤器在某些方面已被弃用,除非它们仅在 mpv 中可用(例如处理 mpv 细节或仅在 mpv 中实现的过滤器)。
如果没有内置过滤器,将自动尝试 lavfi-bridge。本桥不支持帮助输出,在过滤器实际使用前不校验参数。尽管 mpv 语法与 libavfilter 的语法非常相似,但并不相同。(这意味着并非所有被 vf_lavfi 的图形选项接受的东西都会被 --vf 接受。)
您还可以在过滤器名称前加上 lavfi- 以强制包装。如果过滤器名称与已弃用的 mpv 内置过滤器冲突,这将很有帮助。例如 --vf=lavfi-scale=args 将使用 libavfilter 的比例过滤器而不是 mpv 已弃用的内置过滤器。
我希望 MPV 能够启用 mininterpolate(MPV 可以使用的几个过滤器之一,列在http://ffmpeg.org/ffmpeg-filters.html中)。但这就是发生的事情:
输入:"--vf=lavfi=[minterpolate=fps=60000/1001:mi_mode=mci]"
输出:
(有趣的是,它也 --gpu-api=opengl
不起作用(尽管根据规范我——不是吹牛——HD Graphics 400 Braswell 支持它的 4.2 版本)……而且这 aresample
似乎也没有效果,而且选择的少数音频过滤器通常不会播放' t 启动或输出错误。)
c++ - GTKmm Opengl 上下文未初始化
我正在尝试在 GTKmm 中创建一个视频播放器,为此我正在使用mpv。文档说,我可以使用 OpenGL 视图嵌入视频播放器。但是,我在 GTKmm 应用程序中实现播放器时遇到了困难。
我有一个 GLWindow,它包含一个 GLArea,然后应该包含视频播放器。问题是,当我尝试初始化 mpv 渲染上下文时,我收到一个错误,告诉我 OpenGL 未初始化。
以下是我拥有的主窗口的构造函数:
据我所知,这应该只是初始化视频播放器视图,但是当我尝试使用mpv_render_context_create
. 我在该行收到以下错误:
[libmpv_render] glGetString(GL_VERSION) 返回 NULL。
[libmpv_render] OpenGL 未初始化。
然后应用程序以SIGSEGV
信号终止。
问题可能出在我的get_proc_address
函数上,目前我只为 linux 实现了它,它看起来像下面这样:
老实说,我对为什么没有创建 OpenGL 上下文感到不知所措。如何调整我的 GTKmm 应用程序以允许 mpv 视频播放器正确初始化?
mpv - MPV:获取窗口位置和大小?还是窗口移动/调整大小的事件?
有没有办法获取 MPV 媒体播放器窗口的当前位置和大小(或更改时触发的事件)?
我正在尝试制作一个脚本来自动保存窗口的最后一个位置,然后在播放器启动时加载它。可以用 设置启动时的位置geometry
,但不能读取。
在日志中,它会在窗口移动时记录:
并调整大小:
有没有办法在(javascript)脚本中获取这些值或回调?遗憾的是,我在文档中找不到该事件,或者我只是错过了它?
我能找到的只有dwidth
和dheight
,但这些只代表视频的大小,而不是整个窗口,也不是它的位置。
谢谢!
注意:我也在mpv 的 github上问过这个问题,但还没有回复。当我得到答复时,我会更新另一个。
video - 在本地网络中通过 udp 流式传输 mp4 的 ffmpeg 问题
我正在udp://232.255.23.23:1234
使用 ffmpeg v3.4.2 从 linux(嵌入式)流式传输 mp4 视频文件(其中一些是之前使用 ffmpeg 转换为 mp4)到多个使用 MPV 播放流的 linux(antix)机器,所有这些都发生在本地网络,所以我希望它可以完美地工作,但不幸的是它没有。
以下是我尝试使用的原始命令:
ffmpeg
mpv
这似乎很有效,但是出现了一个问题,在显示端,流实际上比流内容本身长得多。mp4 文件总共有约 5 分 36 秒,而 mpv 在 >= 6 分钟内播放整个流循环。我认为这是由于丢帧、mpv 等待恢复或其他原因而发生的,因此会延长实际内容的长度。这在我的情况下不起作用,因为我有一个精确的时间间隔来显示流并且它不能比流内容长。所有内容均以 1680x800 分辨率制作,并以 1680x1050 分辨率显示在屏幕上(以 mpv 几何定位)
似乎将此命令用于mpv:
使持续时间正确,但这有时会在视频中引入巨大的伪影。
我读到使用-re
流式传输会导致这些帧丢失,所以我尝试为文件输入和输出流设置静态数量的 fps,例如:
这会以本机帧速率读取文件并以 25fps 输出流,并且它似乎具有正确的计时持续时间,但它也会导致偶尔的articats,我认为整体质量更差。当其中一个工件发生时,mpv 的输出:
我也尝试在 mpv 中使用--untimed
or ,但这会导致视频卡顿--no-cache
我Invalid video timestamp
在 MPV 中也经常收到警告,例如:Invalid video timestamp: 1.208333 -> -8.711667
--no-config
在没有和添加的情况下播放 mpv--untimed
也会导致频繁的伪影:
我尝试使用 ffplay 播放流,它还导致视频“播放”时间延长了 20 秒。有什么方法可以保持流媒体持续时间完整并防止那些巨大的伪影?这些不是任何巨大的视频文件,每个文件只有几 MB,一切都发生在本地网络中,因此延迟很小。
流式传输文件之一时从 ffmpeg 输出:
编辑:所有文件都不包含任何音频,因此网络上的流量应该更少
c# - 调用带有指向指针参数的指针的非托管函数
我正在尝试从我的 .Net Core 应用程序中调用 C 中的函数。为了深入了解,C 函数来自libmpv render.h,函数的头部如下所示:
问题是我不知道如何从 C# 调用该函数。所以我尝试了以下方法:
由于**res
参数应该由函数更新,我认为这是有道理的。我试图用以下方法调用:
这给了我一个 AccessViolationException,事实上,每次我调用该mpv_render_context_create
方法时,我都会得到相同的异常,所以当我说“它不起作用”时,我的意思是调用抛出了那个异常。
所以我想也许我必须把它变成一个 ref 参数:
调用它时导致相同的错误。
然后我读到另一个 stackoverflow 问题,我应该像下面这样传递裸 IntPtr:
但首先,它不再起作用,其次我怎么能从中得到结果?
那么我应该如何创建和调用该函数以便创建渲染上下文呢?
MpvRenderParam声明如下:
和MpvRenderParamType:
更新
我已经考虑了 Mattias Santoro 提供的所有资源,我只是不完全确定如何将它们翻译成 C#,因为它是一种托管语言。我现在调用 mpv 函数的方法如下所示:
MpvOpenGlInitParams:_
可悲的是它仍然抛出同样的错误,我不确定我做错了什么,这真的很令人沮丧。
qt - 尝试使用 mpv 从浏览器空间中显示 H264 视频
我目前正在使用 MPV 显示视频的 QT 浏览器。对于个人事务,我需要在浏览器页面允许的表面之外显示视频。所以视频需要在页面底部进行剪切。由于某些原因,视频是由硬件视频加速推动的。
我尝试使用 mpv 命令启动视频:
几何参数定义了宽度 x 高度 + posX + posY。视频正在浏览器上显示,但视频的 posY 或 posX 似乎被推送以适合显示。
这是命令的日志:
我有 2 个不同的客户端,都使用 centOS 7。一个工作正常,但另一个不接受要切断的视频。这两个之间的主要区别是窗口管理器和 GPU: - 带有英特尔 GPU 的 Compiz 工作正常 - 带有 Nvidia GPU 的 Metacity 不起作用
导致 vdpau_video 报告错误并将视频从调用的几何图形中推出的问题可能是什么?
linux - gnome 登录后播放视频文件
我想在开始使用计算机时(以及登录 Gnome 后)自动查看视频剪辑。我如何在 Linux (Manjaro) 中做到这一点?我试图通过 Systemd 服务做到这一点,但我没有成功。这是我的 Systemd 服务文件: