HLS 编码导致“找不到支持的源”

问题描述 投票:0回答:0

我目前面临着我遇到的最奇怪的问题,所以我希望有人能解释为什么会这样。出于缓冲和带宽等原因,我目前正在将我的电影和节目库转换为 HLS。

我的这些电影和节目的文件结构如下:

/电影/[TMDB ID]/[TMDB ID].mp4

/节目/[TMDB ID/[季号]/[集数]/[集数].mp4

我已经使用以下命令成功转换了我的整个电影收藏。

find /* -type f -name "*.mp4" -exec realpath {} \; -exec ffmpeg -i {} -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls -hls_segment_filename '{}-P%03d' {}.m3u8 \;

这是将我命名的 mp4 文件转换为 originalname.m3u8 块,遵循 originalname-PXXX 的命名方案,其中 P 表示部件号。我知道块没有附加文件扩展名,但不需要它。

您可以在此处查看此结果:Example

如果加载到 HLS Player,此结果也有效:HLS Player

所以显然我的视频转换没有问题,甚至视频的结果也没有问题。

现在,如果我使用完全相同的命令转换电视节目,它确实会转换它们,它确实使用与上面可以看到的季节和剧集等略有不同的文件结构,但现在会导致错误:"No Supported Source Was Found"在控制台中反复尝试玩 Part 000 但没有成功。

可以在这里看到:Example

加载到 HLS Player 时的错误:HLS Player

我已经尝试改变很多东西来尝试解决这个错误以及检查东西,我检查的东西是媒体状况本身,也许它是一个损坏的文件?

原版的Mp4文件可以在这里播放没有任何问题,所以我们知道原版的Mp4文件是完全没问题的。我也尝试过向块添加文件扩展名,例如 .ts.mp4 等,但也没有成功。

我什至认为可能是目录问题,所以我将一个节目移到了电影目录中但没有成功,我还将一部电影移到了节目目录中,这导致了一个有效的 HLS 流,所以它与目录无关。

我曾尝试通过使用占位符文本(例如 1.m3u8 以及块命名方案 03051.m3u8 可能不够长)来延长文件名长度,认为这可能是 03051-PXXX 的文件名长度不够长。

我注意到虽然使用这个命令:

ffmpeg -allowed_extensions ALL -i {} -c copy -bsf:a aac_adtstoasc {}.mkv \;

是否将我的 HLS 视频正确地重新组合为相同的文件大小等,但是我注意到视频本身已损坏并且无法播放。所以这让人相信问题在于将初始 Mp4 文件转换为 m3u8。

video ffmpeg http-live-streaming
© www.soinside.com 2019 - 2024. All rights reserved.