gpt4 book ai didi

javascript - 在 html

转载 作者:太空宇宙 更新时间:2023-11-04 15:59:24 24 4
gpt4 key购买 nike

我有一些服务器端代码目前可以毫无问题地支持 http 字节范围请求。但是,我希望能够在将转码后的 block 发送到客户端之前使用 ffmpeg 即时转码视频文件(位于磁盘上),但是 ffmpeg 要求我给它一个寻道时间,而我得到字节范围从客户端。给定来自客户端浏览器的字节范围,我如何才能计算出视频文件的时间范围(寻道时间)?

我已经看了this question假设服务器已经知道指定的时间。

我愿意使用支持使用时间范围而不是字节范围来请求数据的 html5 视频播放器,但我一直无法找到实现或弄清楚 javascript 端如何缓冲 <video>有效。

最佳答案

您可以运行 ffprobe 并分析其输出以确定时间戳。

基本命令是

ffprobe -i in.mp4 -show_entries packet=pos,pts_time,flags -select_streams v -of compact=p=0:nk=1 -v 0

这产生

0.000000|48|K_
0.133333|956|__
0.066667|996|__
0.033333|1053|__
0.100000|1602|__
0.266667|1811|__
0.200000|2371|__
0.166667|2746|__
0.233333|3294|__
....

第一列是视频帧时间戳,第二列是该帧的字节偏移量,第三列是该帧是否是关键帧。

由于您只能在关键帧处剪切视频,因此在复制流时,您必须在标志为 K 的时间戳处剪切或使用以下命令中的参数:

ffmpeg -ss X -i in.mp4 -c copy -avoid_negative_ts make_zero out.mp4

如果您要对视频流进行转码,则不需要这样做。

关于javascript - 在 html <video> 中将字节范围转换为时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42801671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com