我正在尝试在一个html播放器中播放多个视频文件,就好像它是一个文件一样。
现在,我找到了一个脚本,可以在同一个播放器中一个接一个地播放视频:
<video id="videoPlayer" autoplay autobuffer controls></video>
<script>
var videoPlayer = document.getElementById('videoPlayer')
var vArray = [
"my-first-video.mp4",
"my-second-video.mp4",
"my-thrid-video.mp4",
]
videoPlayer.src = vArray[0]
i = 1
videoPlayer.onended = function(){
if (i < vArray.length) {
videoPlayer.src = vArray[i]
i++
}
}
</script>
问题是:
每个视频之间都有一个小切口
进度条不是所有视频的全局,而是每个视频的全局
关键是用户没有意识到付款人中播放了许多视频。
我怎样才能做到这一点?是否只能使用视频HTML标签?或者有视频播放器可以做到这一点吗?
谢谢
我找到了另一种实现我想做的事情的方法,我使用此模块直接将视频与 ffmpeg 合并在一起:https://github.com/ArsalanDotMe/VideoStitch
试试这个:' 这是一个 HTML 代码,您可以在其中一次在页面上添加多个视频。
<video width="400" controls autoplay>
<source src="my-third-video.mp4" type="video/mp4">
</video>
<video width="400" controls autoplay>
<source src="my-second-video.mp4" type="video/mp4">
</video>
<video width="400" controls>
<source src="my-third-video.mp4" type="video/mp4">
</video>
您可以将文件作为临时或永久输出.mp4文件加入,然后在脚本上运行该视频。如果文件很小,则需要几秒钟。我已经加入了大文件,并没有花太长时间。
对于 ffmpeg,您可以从数组创建一个列表并发出命令
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4
列表必须在纯 txt 上采用这种格式(您可以使用数组在服务器中创建文件(:
file my-first-video.mp4
file my-second-video.mp4
file my-thrid-video.mp4
如果您不想创建列表,则可以直接从文件夹中的文件创建列表,它从第一个以"LS"列出的MP4开始,以找到的最后一个MP4结束。
ffmpeg $(for f in *.mp4 ; do echo -n "-i $f "; done) -filter_complex "$(i=0 ; for f in *.mp4 ; do echo -n "[$i:v] [$i:a] " ; i=$((i+1)) ; done && echo "concat=n=$i:v=1:a=1 [v] [a]")" -map "[v]" -map "[a]" output.mp4
然后,您可以使用该输出.mp4模拟一个唯一的文件,而无需用户弄清楚。希望它对你有用 问候。