【问题标题】:play multiple files as one in video html tag在视频 html 标签中将多个文件作为一个播放
【发布时间】:2020-05-11 09:17:43
【问题描述】:

我正在尝试在一个 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>

问题是:

  • 每个视频之间有一个小插曲

  • 进度条不是所有视频的全局而是每个视频的全局

关键是用户没有意识到付款人中有很多视频在播放。

我怎样才能做到这一点?是否只能使用 video HTML 标签?还是有视频播放器可以做到这一点?

谢谢

【问题讨论】:

  • 如果有一种方法可以避免您所说的那种小“剪辑”,我会感到惊讶,因为您正在处理多个视频文件。进度条问题应该是可以修复的,尽管我没有看到你的实现。但是,您应该能够使用 vArray.length 来管理进度条,或组合视频的实际时间。
  • 我很确定某些网络视频播放器可以像播放单个文件一样播放文件的一部分。例如:filmstreamvk.info/series/kojak-1973-saison-2/Episode/10-VF 如果您尝试使用下载助手之类的工具获取视频文件,这是不可能的:它不会检测到整个视频文件,而是检测到很多小文件。因此,如果有人知道如何使用播放器或使用 html 视频标签来做到这一点,那就太好了 :)

标签: javascript html video


【解决方案1】:

我找到了另一种方法来实现我想做的事情,我使用这个模块直接将视频与 ffmpeg 合并在一起:https://github.com/ArsalanDotMe/VideoStitch

【讨论】:

    【解决方案2】:

    试试这个:` 这是一个 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>
    

    【讨论】:

    • 谢谢你的回答,但这不是我想做的:)
    【解决方案3】:

    您可以将文件作为临时或永久的 output.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
    

    然后您可以使用该 output.mp4 仅模拟一个文件,而无需用户弄清楚。希望它对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 2013-11-15
      • 2015-07-19
      相关资源
      最近更新 更多