gpt4 book ai didi

ffmpeg 将段附加到没有#EXT-X-DISCONTINUITY 标记的 m3u8 文件

转载 作者:行者123 更新时间:2023-12-04 22:50:10 34 4
gpt4 key购买 nike

每隔几秒钟,我就会从服务器接收一大段长音频文件。我想分割这些 block 并创建一个 m3u8 播放列表来在浏览器中播放音频。
我可以创建 m3u8 文件并每隔几秒钟将段附加到它,直到我收到最后一个 block 并且可以在浏览器中播放该文件。问题是 ffmpeg 添加了 #EXT-X-DISCONTINUITY标记到 m3u8 文件,这会为音频添加短暂的静音期,并且浏览器中的播放听起来不流畅。
有没有办法告诉 ffmpeg 我所有的独立文件实际上属于一起(相同的源和编码)并停止添加 #EXT-X-DISCONTINUITY标签?或者有没有办法避免这个标签添加的短暂的沉默期?或者有没有其他方法可以尝试从独立文件创建流畅的音频流?
我的最终 m3u8 文件:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:EVENT
#EXTINF:1.792000,
http://localhost:9000/aacf6dc4-9f3e-4f76-86b6-3e0f01a65d88000000.ts
#EXT-X-DISCONTINUITY
#EXTINF:1.792000,
http://localhost:9000/aacf6dc4-9f3e-4f76-86b6-3e0f01a65d88000001.ts
...
#EXT-X-DISCONTINUITY
#EXTINF:1.792000,
http://localhost:9000/aacf6dc4-9f3e-4f76-86b6-3e0f01a65d88000006.ts
#EXT-X-ENDLIST
我的 ffmpeg 命令:
# create the playlist
ffmpeg -y -i <chunk.flac> -hls_playlist_type event -hls_base_url http://localhost:9000/ -hls_segment_filename <segment> -hls_time 2 -hls_flags omit_endlist playlist.m3u8

# append to playlist
ffmpeg -y -i <chunk.flac> -hls_playlist_type event -hls_base_url http://localhost:9000/ -hls_segment_filename <segment> -hls_time 2 -hls_flags omit_endlist+append_list playlist.m3u8

# finish the playlist
ffmpeg -y -i <chunk.flac> -hls_playlist_type event -hls_base_url http://localhost:9000/ -hls_segment_filename <segment> -hls_time 2 -hls_flags append_list playlist.m3u8

最佳答案

我看了libavformat/hlsenc.c的代码:

if (hls->flags & HLS_APPEND_LIST) {
parse_playlist(s, vs->m3u8_name, vs);
vs->discontinuity = 1;
只要您使用 append_list插入了一个间断。除非您添加选项并修补 ffmpeg - 我认为您无法避免 #EXT-X-DISCONTINUITY标签。
但是您可以使用简单的命令行对播放列表进行后期处理:
grep -v "#EXT-X-DISCONTINUITY" playlist.m3u8 > temp; mv temp playlist.m3u8

关于ffmpeg 将段附加到没有#EXT-X-DISCONTINUITY 标记的 m3u8 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63592822/

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