php - 如何以编程方式检查 .mp4 文件是否未损坏且未丢失电影帧或音频片段

标签 php ffmpeg youtube-dl

使用 youtube-dl,我能够下载相当多的 .mp4 文件。但是,我刚刚发现,在手动播放其中一些之后,它们在某些部分丢失了电影帧,而仍在播放音频(因此显示了一个空白屏幕),或者在播放电影帧时丢失了音频。

因此,
(1) 为什么 youtube-dl 不检测或​​警告这种情况?看起来电影片段和音轨已合并,并且在没有任何警告的情况下生成了 .mp4。有没有办法配置 youtube-dl 来检测这种情况并重新下载电影?
(2) 否则,还有其他方法可以以编程方式检测此类情况吗? (考虑到一个人可能有数千个这样的 .mp4 文件并且可能无法手动通过所有这些文件?)将不胜感激使用 FFmpeg 或 php 的解决方案。

最佳答案

其原因可能是 youtube-dl 在下载文件时跳过了(一些)片段,如果您使用终端/命令提示符,您可以采取一些措施来防止这种情况发生,其中一些是:

  • 要使用 --fragment-retries RETRIES 选项,使用“无限”时要小心,如果片段在服务器端丢失,您的代码将最终执行无限循环

    --fragment-retries infinite

  • 或者启用 --abort-on-unavailable-fragment 标志,以在 youtube-dl 检测到有问题的片段时中止

    --abort-on-unavailable-fragment


  • 这应该可以防止任何 future 的视频/音频出现损坏的片段,阅读更多 here

    NOTE: I'm currently looking for a way to detect downloaded videos whether it's broken or not (i.e. fragment lost, etc.)

    关于php - 如何以编程方式检查 .mp4 文件是否未损坏且未丢失电影帧或音频片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53636417/

    相关文章:

    php - Windows Azure 上的 PHP 社区在哪里?

    flash - 自定义 HomeKit(使用 HomeBridge 插件或构建自定义应用程序?)

    Bash:从 youtube url 下载修剪后的 mp3 的 bash 脚本

    python - 如何在 python 脚本中使用 youtube-dl 从播放列表中检索单个视频 URL?

    php - "escapeshellarg"足够安全吗?

    php - JOIN 两个表(其中一个需要连接)

    javascript - 如何让网页上的每个用户实时查看和编辑 HTML Canvas ?

    php - 在 Woocommerce 中向取消订单的客户发送电子邮件

    video - 使用 FFMPEG 将 RTSP 流式传输到 HLS 流,使用较新的 FFMPEG 时出现错误

    ffmpeg - 使用 FFmpeg 时删除连续重复的帧