小编Kay*_*rch的帖子

如何加入不连续的HLS视频和音频?

我正在流式传输长视频,无缝循环短视频序列。借助 HLS,只需将一个视频序列存储并串联在媒体播放列表中并用 #EXT-X-DISCONTINUITY 标签分隔即可实现这一点

\n\n

1080_视频.m3u8

\n\n
#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-ALLOW-CACHE:YES\n#EXT-X-TARGETDURATION:10\n#EXT-X-MEDIA-SEQUENCE:0\n#EXT-X-PLAYLIST-TYPE:VOD\n#EXTINF:10.010000,\n0/1080p_0_000.ts\n#EXTINF:10.010000,\n0/1080p_0_001.ts\n#EXTINF:2.635967,\n0/1080p_0_002.ts\n#EXT-X-DISCONTINUITY\n#EXTINF:10.010000,\n0/1080p_0_000.ts\n#EXTINF:10.010000,\n0/1080p_0_001.ts\n#EXTINF:2.635967,\n0/1080p_0_002.ts\n#EXT-X-DISCONTINUITY \n... and so on\n
Run Code Online (Sandbox Code Playgroud)\n\n

这很好用。现在,我\xc2\xb4d 喜欢引入替代音频再现,以便我可以使用各种音轨流式传输这些视频循环。为此,我将准备的每个长音频文件根据视频片段的播放长度分成许多小音频文件。我还了解到,如果您的视频播放列表中有#EXT-X-DISCONTINUITY,那么您的音频播放列表也必须有它们。

\n\n

音频.m3u8

\n\n
#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-TARGETDURATION:10\n#EXT-X-MEDIA-SEQUENCE:0\n#EXTINF:10.005333,\ns000_00.ts\n#EXTINF:10.005333,\ns000_01.ts\n#EXTINF:2.688000,\ns000_02.ts\n#EXT-X-DISCONTINUITY\n#EXTINF:10.005333,\ns001_00.ts\n#EXTINF:10.005333,\ns001_01.ts\n#EXTINF:2.688000,\ns001_02.ts\n... and so on\n
Run Code Online (Sandbox Code Playgroud)\n\n

视频和音频集中在主播放列表中。

\n\n

大师.m3u8

\n\n
#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="en",NAME="audio",URI="./audio/audio.m3u8"\n#EXT-X-STREAM-INF:BANDWIDTH=4500000,RESOLUTION=1920x1080,FRAME-RATE=29.970,NAME="1080p",AUDIO="aac"\n1080_video.m3u8\n#EXT-X-STREAM-INF:BANDWIDTH=2500000,RESOLUTION=1280x720,FRAME-RATE=29.970,NAME="720p",AUDIO="aac"\n720_video.m3u8\n#EXT-X-STREAM-INF:BANDWIDTH=1300000,RESOLUTION=852x480,FRAME-RATE=29.970,NAME="480p",AUDIO="aac"\n480_video.m3u8\n
Run Code Online (Sandbox Code Playgroud)\n\n

这不起作用。它开始播放视频和音频,但在第一个 DISCONTINUITY 标签处停止。

\n\n

我的问题:

\n\n
    \n
  1. 我想要实现的目标是否可能实现?获取任何音频文件并将其与视频放在一起,确保片段长度和不连续性大致对齐?
  2. \n
  3. 大致对齐,因为几乎不可能比我上面的更精确。段长度略有不同,相差几毫秒。我知道 HLS 玩家可以应对它,但如果出现不连续性怎么办?这可能是它对我不起作用的原因吗?
  4. \n
\n

video-processing video-streaming h.264 http-live-streaming m3u8

6
推荐指数
0
解决办法
1491
查看次数