有没有播放器可以自动跳过静音部分的内容? (电脑/android端都需要)

经常会下载载一些讲课的视频, 没事儿的时候听.
但是讲师版书或者放空的时间通常很长,
所以需要一个播放器, 可以设置一个音量阈值, 自动跳过低于这个阈值的部分.

因为我会在电脑端, 或者手机端同步这些视频,
保证可以不局限终端的连续学习.
所以无论是电脑端还是手机端都需要.


我知道一些工具可以使用ffmpeg的相关操作,
将视频的静音部分删除,
并重新生成新的视频,
但是这样的做法是需要话不少的时间重新压制.

也许有朋友推荐我倍速播放,
相比跳过静音的方式,
倍速播放对于讲义的部分速度过快,
我觉得在边听边学的时候,
会遗失很多要点.


我看到了一个比较学术的实例,
但是不知道怎么使用,

比如:
Automatic on-the-fly video editing tool! - YouTube

有兴趣的大家可以看看.


综上, 我希望大家推荐可以跳过静音的gui播放器, 电脑端, 手机端(android)均可.

感谢.

安卓端有个听书软件“我的听书”可以跳,但只能放音频

MPV播放器(mpv.io | Installation ),支持 macOS、Linux、Android等系统,但我只用过它的Windows版。

这个插件会快进跳过无声的部分,第88行可以改速度,默认100倍。

1 个赞

mpv里看到有人有类似的需求 Playback mode that automatically skips silent parts. · Issue #6797 · mpv-player/mpv · GitHub
最终有人给出了一个脚本autoeditor.js · GitHub 配合 GitHub - WyattBlue/auto-editor: Auto-Editor: Effort free video editing! 使用,可以跳过无声部分,不过只适用于固定帧率的 (还有基于这个脚本的修改版脚本 GitHub - idMysteries/mpv-skip-silence: Playback mode that automatically skips/speed up silent parts

楼上也提了一个脚本,好像更好用……
mpv的脚本真是会用的话能实现很多神奇功能,当你需要自定义什么功能时,自由度挺高的,虽然难度不小

看了mpv android,似乎是支持脚本的,但是能否正常运行所有脚本还是问题

感谢推荐,
这个插件是需要手动按键才可以跳过一个silence片段,
似乎使用的时候会手忙脚乱.

如果他能自动跳过每一个符合阈值的silenace片段就好了,

用autohotkey可以方便地写一个,监听音量,音量低于阈值时,自动发送→键,直到有高于阈值的声音,再发送一个←键,应该就哦了。
不过手边没电脑,改天试试。
mark一下

似乎不起作用,

我为此专门输出了一个10秒的视频片段,
其中有5秒纯静音,
使用固定帧率30

我原来就有安装auto-editor,
path设置正常, 在cmd环境中可以直接运行 auto-editor

按照github中的操作,
安装了autoeditor.js脚本.

打开mpv, 并拖入视频文件,
按快捷键 shift+E 会提示正在分析,
但静音部分并未如脚本中设置的那样使用2.5倍速.
而是足量播放了5秒.

我看到了该脚本的早期版本中,
有人提出auto-editor更改了语法而让这个脚本无法执行,
此人也给出了解决方案,
我观察到在autoeditor.js的新版本中也已经修改相应的部分,
我安装的就是新版,
但是仍然不能工作.

不过这次问题的解决是6个月前,
auto-editor在这6个月中也做了多次更新,
不知道是不是什么影响了输出的数据格式?

不知道有没有熟悉这个的朋友帮我看下?

感谢.


我自己尝试撸了一下autoeditor.js的代码,
确实有些参数已经不用了,
比如其中用到的 -t 参数, 已经被auto-editor弃用了.

所以我将 autoeditor.js 中的第26行改为:

var AUTO_EDITOR_ARGS = ["--export_as_json", "--quiet", "--edit", "audio:threshold=4%"];

这个参数组合在我的cmd中运行是正常的,
会在视频文件旁边输出一个json文件.

然而, 我使用mpv播放视频,
并触发 shift+E 来调用auto-editor来生成json时,
却没有生成这个json文件.
我想这个脚本目前的问题就在这里.

根据autoeditor.js代码中在67行片段:

var file = mp.get_property("path").replace(/\.[^.]+$/, ".json");

说明应该是在视频文件的旁边会生成同名json文件,
脚本会根据视频文件名称来获取json文件.

目前我的水平就到这里,
不知道为什么mpv脚本无法生成json,

请朋友们帮我看下. 感谢.

感谢高手,
多次看到您在其他帖子用autohotkey完成神奇的功能,

不过您说要监听音量,
那么可否只监听mpv, 或者某个指定播放器的音量,
而不是整个系统的音量呢?
我有时会播放背景音乐什么的,
也有在线会议的情况,
特此说明,
望您在编写ahk的时候能予以考虑.

感谢.

我试着在终端里运行auto-editor,输出了一个视频同名的json文件到视频目录下。
再用MPV,按SHIFT+E,提示成功加载了几百个片段,播放时也会自动快进。

我试的是一个两小时2G的视频,终端几秒就分析完了,感觉速度可以接受。
就是 个人文件夹\AppData\Local\Temp 会有比视频还大的音频缓存,需要手动删。

哦? 这个脚本是需要手动运行auto-editor得出json后才可以用mpv加载吗?
我按照你的方式尝试了一下, 确实可以加速静音部分.

可是让我疑惑的是, 在autoeditor.js中, 却有运行auto-editor的命令,
这是不是说明这个脚本可以自动对播放视频生成json, 并分析呢?

1 个赞

监听不了单个软件的 声音电平。
监听单个软件得安虚拟声卡。
可以排除autohotkey方案了。

虽然如此, 但也感谢英雄参与.

2023了,楼主有什么新方案了吗?目前我找到的就只有"just player"了,能自动跳过静音部分。不过它只有安卓端,所以我只好用逍遥模拟器开共享文件夹,套娃播放pc的视频。一直挂着模拟器占用还是有点的,但我找遍mpv的脚本好像也没有能用的,就这样了

speed-transition-Audio.lua

经人提醒,找到了最贴近楼主需求的mpv脚本,自己改一下参数用,效果还蛮好的。不过果然还是just player更强点,毕竟底层那个跳过静音的功能是谷歌开发的。
现在发现用Scrcpy的GUI投屏,配合一些能远程访问电脑文件的文件管理器( 比如 MiXplorer ),再用just player播放,占用也还可以,也是一种方案

1 个赞

感谢你的回复.

我不知道怎么使用这个脚本, 抱歉, 我是mpv的新手.

我将lua脚本下载, 拷贝到scripts目录中,
然后导入一个影片,
在播放的时候尝试按那些F2的键,
但没有任何提示, 也没有看到播放有任何加速.

是不是我的操作有什么问题? 希望指教.

那个github的页面有两层楼有脚本,第一层的脚本应该是拷进去按F2激活就能用的。第二层是某个老哥把脚本改进了一下。要用他那个,得从"local sense"下面开始的第二行进行替换。然后那个修改脚本的老哥在结尾还加了“ ``` ”三个点,要把那三个点删掉才能激活脚本

快捷键的"voldetect"是检测当前声音范围的。“local sense” 这个参数是控制触发范围的,低于范围就开始快进。然后可以由快捷键的sense-up/down 调节检测灵敏度。

然后脚本默认"沉默部分"是快进两倍,没有快捷键能调节,所以只能从脚本改,在脚本中是这个参数:mp.set_property(“speed”, 填入你想要的倍率) 。那个改进后的脚本有蛮多行mp.set_property 的,应该是设定了不同的检测范围对应不同的速度,我也没仔细研究,反正在它原有的基础上都加个1-30倍还好。如果设定成快进4-50倍,会出现很鬼畜的疯狂快进的情况。

这个脚本应该不是单纯检测声音大小就触发的,应该是检测范围,设定了一定灵敏度后倒是在我大部分视频上都能生效而不用每次都调灵敏度。但不足的是,每次快进后开始播放的一瞬间,会有点刺耳,也可能是我设定的快进速度比较快的原因,也可能可以通过更改脚本参数解决,但我还没研究出来

我现在用的方案还是just player,配合WSA安卓子系统,占用还可以。电脑目标路径用ftp共享,子系统访问,然后播放器选just player就好,just player就不会有刺耳的情况

1 个赞

主楼末尾的内容是Automatic on-the-fly video editing tool,所以这一个是编辑工具而不是播放器。
用静音检测输出新视频,并不困难,可以用现成的轮子。但是实现播放确实困难。我有个思路是用moviepy的预览功能(我但是没有用过)不清楚性能和质量怎么样。

另一个思路是,我知道dvd似乎有节目单的功能。音频文件的cue可以通过增加index 0的方式跳过某一段。mp4之类视频文件有类似的设计嘛?

感谢您的详细回复,
目前我可能卡在了如何让脚本激活上.

  • 我使用的是链接中第一个脚本, 也就是你说的"第一层"
  • 我将该脚本拷贝, 转存成一个lua文件, 并拷贝到mpv的scripts目录里.

按照我的理解, 以上这样操作就能将脚本安装好.
我也安装过其他的2个脚本, 也是如法炮制的.

之后我打开mpv,
拖入一个视频(其中讲话人语速缓慢, 停顿明显)
然后按F2, mpv没有任何提示.
视频播放了1分钟, 也没有见到有任何静音提速.

之后我分别根据脚本中的快捷键定义按下:
ctrl+f2, alt+f2, shift+f2
均没有任何屏幕提示,
也看不到任何播放速度的改变.

不知道是不是我的安装方法有问题?
这个脚本在F2激活后, 是不是在mpv播放界面中会有提示出现?

感谢.

你应该先自行检查一下mpv原来是否有冲突的快捷键,是否使用了no-input-default-bindings(禁用包括外置脚本的预设快捷键),0.34.0版本之后的mpv可用no-input-builtin-bindings只禁用内置预设快捷键

非常感谢你的提示,
确实, 我使用了 no-input-default-bindings,
替换成了你说的 no-input-builtin-bindings 就成功了

再次感谢.