ffmpeg - 字幕和视频/音频之间的延迟 hls ffmpeg videojs

标签 ffmpeg http-live-streaming video.js

我使用 ffmpeg 将视频转换为 hls 格式(m3u8),并使用 videojs 来读取该视频。但我有一个问题,字幕出现在真实时间戳之前 1.4 秒。

我执行此命令来提取视频、音频和字幕:

ffmpeg -i [file] -map 0:1 -c:a aac -ar 48000 -b:a 320k -hls_time 2 -hls_segment_filename audio/1/seq-%d.ts audio/1/320kbit.m3u8 -map 0:2 -c:a aac -ar 48000 -b:a 320k -hls_time 2 -hls_segment_filename audio/2/seq-%d.ts audio/2/320kbit.m3u8 -map 0:s:0 -f webvtt sub.vtt -map 0:v:0 -vf scale=1920:-2 -c:v h264 -profile:v main -g 48 -keyint_min 48 -crf 20 -sc_threshold 0 -b:v 5000k -maxrate 5350k -bufsize 7500k -hls_time 2 -hls_segment_filename video/1080p/seq-%d.ts video/1080p/5000k.m3u8

这个命令将 substile 转换为 hls 格式

ffmpeg -i sub.vtt -f segment -segment_time 2 -segment_list_size 0 -segment_list my-hero/subtitles/sub.m3u8 -segment_format webvtt -scodec copy my-hero/subtitles/seq-%d.vtt

然后我创建一个播放列表文件来收集所有内容

#EXTM3U
#EXT-X-VERSION:3

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-group",LANGUAGE="fre",NAME="Français",DEFAULT=YES,AUTOSELECT=YES,URI="audio/1/128k.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-group",LANGUAGE="jpn",NAME="Japonais",DEFAULT=NO,AUTOSELECT=YES,URI="audio/2/128k.m3u8"

#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Français",DEFAULT=yes,AUTOSELECT=YES,FORCED=NO,LANGUAGE="fr",URI="subtitles_fr.m3u8"

#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,SUBTITLES="subs",AUDIO="audio-group"
video/1080p/5000k.m3u8

我没有看到这个问题,所以如果有人有想法:/

最佳答案

查看我之前的回答:

Ffmpeg burnt in subtitles out of sync when converting to hls

出于某种原因,FFMPEG 在写入时使 MPEG-2 传输流的呈现时间增加了约 1.4 秒。所以你的视频和音频迟到了。如果将 -muxdelay 0 添加到 FFMPEG 命令行,同步问题应该得到解决。

关于ffmpeg - 字幕和视频/音频之间的延迟 hls ffmpeg videojs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62921064/

相关文章:

asp.net-core - 是否可以将 ffmpeg 命令的输出流式传输到具有 dot net core 的客户端?

android - Exoplayer2 流式传输 HLS 视频,有时仅播放有声视频(视频未播放)

javascript - 三星智能电视、PlayDRM 和 HLS

swift - 无法使用 Fairplay HLS 从 AVPlayer 获取视频缩略图

html - 如何实时转码 wmv 文件以在 html5 播放器中播放?

ios - 如何使用 ffmpeg/sdl 在 UIView 中播放视频

FFMPEG 将 MP3 转换为 MP4 正在添加空格,如何修复终端命令?

c++ - 同时从不同线程写入套接字时会发生什么?

html - VideoJS - 无缝循环视频

jquery - VideoJS - 播放视频时,暂停所有其他视频