所以我正在使用ffmpeg从互联网上下载流,但是我遇到了其中一个问题,而且每隔一段时间,在流的中间,它就会变成某种“打破“这个#EXT-X-DISCONTINUITY-SEQUENCE标签出现在我开始下载的.m3u8文件上。我开始在控制台上收到“非单调DTS”错误,音频和视频开始去同步,最终,我将在下载后播放该流,但它将无法正常工作。
有没有办法用ffmpeg下载这种流,并以某种方式“跳过”具有此标记的m3u8文件,或者可能正确地将它们解析为视频?
希望有人可以帮助我。
答案 0 :(得分:1)
ffmpeg失败并显示“非单调DTS”,因为它试图强行合并帧速率不完全相同的流(有关详细说明,请参见https://superuser.com/questions/1150276/trim-video-and-concatenate-using-ffmpeg-getting-non-monotonous-dts-in-output)。
并且由于当前没有选项告诉ffmpeg不要在m3u8中合并由#EXT-X-DISCONTINUITY分隔的流,因此唯一的可能性是将m3u8手动拆分为几部分。您在其中看到#EXT-X-DISCONTINUITY标签。然后(在使这些片段成为有效的m3u8单例之后)将其全部馈送到ffmpeg。
这将为您提供几个视频片段,但是您可以(听起来很奇怪)使用ffmpeg将它们全部合并在一起,而使用concat命令(https://trac.ffmpeg.org/wiki/Concatenate)则没有问题。
现在,如果只有ffmpeg开发人员可以添加一个选项,以便当m3u8包含#EXT-X-DISCONTINUITY时不强制合并流,那将使我很开心。