寻找将 .srt 转换为 .WebVtt 的客户端方式,因为 HTML5 视频不支持 .srt<track>标签。到目前为止,我只遇到过服务器端解决方案。提前致谢
晚上好.
直截了当 - 我需要一个脚本,从WEBVTT文件中的特定时间间隔抓取RDF/JSON结构.这样的事情存在吗?
RDF/JSON是Talis指定的文件结构,如下所示:
{ "S" : { "P" : [ O ] } }
Run Code Online (Sandbox Code Playgroud)
WEBVTT实现了这样的结构:
0
00:00:00,000 --> 00:00:46,119
{ "S" : { "P" : [ O ] } }
1
00:00:48,000 --> 00:00:50,211
{ "S" : { "P" : [ O ] } }
...
Run Code Online (Sandbox Code Playgroud)
我会在查看视频文件的同时使用这样的文件,当我点击时间线的某些部分时,脚本会获取相应的RDF/JSON代码(我现在能够执行此操作,已经有一个WEBVTT解析器),然后解析器从RDF/JSON结构中获取对象中的请求信息.
当我看到jQuery实现了getJson时,我真的很开心,但它只适用于"普通"json文件.
最好的办法可能是编写脚本,但我的时间和知识非常有限,所以我想听听任何人可能知道的任何建议或解决方案.
我有一个 HTML5 视频,带有一个用于 webvtt 格式字幕的 track-element 。如何在 iOS/iPhone/iPad 上去除字幕后面的黑色背景?在 PC 上的浏览器中,我可以使用 CSS ::cue{background:透明;} 删除它
感谢帮助
我正在加载一个webvtt文件.工作正常但在IE11中没有提示.
WEBVTT FILE
00:00:01.000 --> 00:00:04.000
Let's take a look at the 4th platform preview of IE10
00:00:04.000 --> 00:00:06.000
running on the Windows 8 Developer Preview
Run Code Online (Sandbox Code Playgroud)
在代码内:
var trackNode = jQuery("<track default>");
// videoNode is just a <video> with <source> child
videoNode.append(trackNode);
trackNode.attr({
label: "Captions",
kind: "metadata",
src: "localhost:1234/example&output=vtt"
});
trackNode.on("load", function() { // I have also tried using "loadedmetadata" instead of load, but nothing changed
console.log(this.track.cues.length);
});
Run Code Online (Sandbox Code Playgroud)
在Chrome中我可以看到有2个提示,但在IE11中我看到0
即使在所有内容都加载后我将其放入控制台:
jQuery("track").track.cues.length
Run Code Online (Sandbox Code Playgroud)
我仍然在IE中获得0,在Chrome中获得2
我错过了什么吗?
更新1:
在做了一些重构之后,我在控制台中看到了这个错误:MEDIA12604:文本跟踪:未知的MIME类型.HR = 8007000b.
然后我发现这篇文章: WinJS视频元素中的HTTP字幕 …
在我的项目中,我使用 swiper.js 作为幻灯片,每张幻灯片都包含图像或带有 webvtt 字幕/副标题的 html5 视频。在调试时,我们注意到 webkit 浏览器上的字幕位置错误(太低,截断屏幕)。经过多次调试,发现父 div(swiper-wrapper)上的这个 css3 规则使 vtt 位置错误:
transform: translate3d(-1024px, 0px, 0px)
Run Code Online (Sandbox Code Playgroud)
当您将视频放入第一张幻灯片时,一切都很顺利,因为还没有 css 翻译。
这似乎是一个核心 webkit 问题:在父级上使用 css 翻译时,默认 webvtt 定位会中断。
我发现的解决方法是将 vtt 本身中的行定位添加到每个字幕元素,如下所示:
WEBVTT
00:00:02.160 --> 00:00:06.440 line:90%
hello world
00:00:06.560 --> 00:00:11.920 line:90%
testing subtitles
Run Code Online (Sandbox Code Playgroud)
任何没有“line: 90%”部分的句子都会部分渲染到屏幕外。看来这个设置强制 webvtt 解析器/渲染器将自身设置到正确的位置。
问题:有人遇到过这个问题吗?对于这个错误还有其他(更简单的)解决方法吗?将“line:”部分添加到所有字幕中将是一项艰巨的工作..除非有一个好的编辑器可以批量完成这些工作。
问题 2:由于这似乎是一个 webkit vtt 解析器错误,有人知道在哪里可以最好地报告这个问题吗?
此处测试设置: http: //orgonemedia.nl/webvtt-bug/
我在从跨域加载 vtt 时遇到问题:“加载 URL 域的尝试不安全...协议和端口必须匹配。” 我尝试将 crossorigin="true" 添加到视频中,它在 chrome 和 firefox 中工作,但在 Internet Explorer 11 中不起作用。还有其他方法可以从 IE11 中的跨域获取 vtt 文件吗?
<video controls autoplay crossorigin="true">
<source src="http://ronallo.com/demos/webvtt-cue-settings/soybean-talk-clip.mp4" type="video/mp4">
<track label="Captions" kind="captions" srclang="en" src="http://ronallo.com/demos/webvtt-cue-settings/soybean-talk-clip.vtt" id="caption-change-track" default="">
</video>
Run Code Online (Sandbox Code Playgroud) 我正在尝试对某些视频文件上的音频进行重新编码。我想复制视频和字幕而不接触它们,但是,ffmpeg 无法检测字幕的格式(即 webvtt)并且拒绝执行任何操作。
fmpeg -copy_unknown -analyzeduration 2000M -probesize 2000M -i input.mkv -map_metadata 0 -map 0 -c copy -c:a:0 aac -b:a 384k output.mkv
[matroska,webm @ 0x5597558e4040] Unknown/unsupported AVCodecID S_TEXT/WEBVTT.
[matroska,webm @ 0x5597558e4040] Could not find codec parameters for stream 2 (Subtitle: none): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Guessed Channel Layout for Input Stream #0.1 : 5.1
Input #0, matroska,webm, from 'input.mkv':
Metadata:
encoder : libebml v1.3.9 + libmatroska v1.5.2
creation_time : 2020-03-05T09:03:02.000000Z
Duration: 00:56:33.26, …Run Code Online (Sandbox Code Playgroud) 我想允许我的应用程序允许上传 .vtt 文件。现在它只接受 .txt 文件,但我想为字幕添加 .vtt 功能。
我试过这个 * 没有运气:
validates_attachment_content_type :caption,
:content_type => ['application/txt', 'text/plain', 'WEBVTT', 'application/vtt', 'vtt']
Run Code Online (Sandbox Code Playgroud)
在这种情况下,正确的格式是什么?
我的视频和 webvtt 字幕不同步。有没有一种JavaScript方法来管理html5本机播放器中的webvtt字幕同步/延迟/偏移?
我找到了这个库(https://github.com/florinn/vtt-shift),但它重写了磁盘上的 webvtt 文件。我更喜欢采用客户端方式与视频重新同步。
<video>
<source class="videosource" src="{{media}}?play=true" type="video/mp4"/>
<track kind="subtitles" label="Default" src="{{subtitle}}" default>
</video>Run Code Online (Sandbox Code Playgroud)
我有一个刻有字幕的文件,并且它们完全同步。
这是文件。https://983yqbz442.s3.amazonaws.com/little-mermaid-captions.mp4
我运行此命令来转换为 hls,它会创建 .ts 文件和 .vtt 文件。
ffmpeg -i little-mermaid-captions.mp4 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls index.m3u8
Run Code Online (Sandbox Code Playgroud)
然后,我还在同一文件夹中创建一个 master.m3u8 文件,其中包含以下内容。
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360,SUBTITLES="subtitles"
index.m3u8
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles",NAME="English",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="ENG",URI="index_vtt.m3u8"
Run Code Online (Sandbox Code Playgroud)
现在,如果我播放 master.m3u8 文件,字幕就会不同步,并且速度会加快大约 1 秒。我知道这可能是我在 FFmpeg 中缺少的设置,但我确实坚持这一点,并且希望能得到任何见解。
谢谢
更多信息。
这是直接 .m3u8 的链接,可以在 Safari 中打开。
https://983yqbz442.s3.amazonaws.com/hlstests/master.m3u8
生成的vtt文件在这里。
https://983yqbz442.s3.amazonaws.com/hlstests/subs-0.vtt
如果您查看 .vtt 文件的开头,您会看到这一点。
WEBVTT
00:06.840 --> 00:10.320
once long ago in the deep blue below
Run Code Online (Sandbox Code Playgroud)
它应该在 00:06.840 开始,但是当在 Safari 中播放 .m3u8 文件时,您应该会看到它在大约 5 秒处开始,而不是早了 6 秒左右。
webvtt ×10
javascript ×4
html ×3
ffmpeg ×2
html5-video ×2
subtitle ×2
video ×2
background ×1
content-type ×1
copy ×1
cross-domain ×1
hls.js ×1
json ×1
metadata ×1
node.js ×1
paperclip ×1
parsing ×1
rdf ×1
ruby ×1
swiper.js ×1
video-player ×1
vtt ×1
webkit ×1