【问题标题】:Get video duration of file hosted on Amazon S3获取托管在 Amazon S3 上的文件的视频时长
【发布时间】:2011-11-18 18:19:24
【问题描述】:

我正在创建一个分发视频的门户网站。想法是将视频上传到 Amazon S3 并使用 PHP 从我的服务器收集必要的数据。到目前为止一切正常......我唯一无法获得的是视频的持续时间:-(有人可以给我一个关于如何完成它的提示吗?

谢谢, 米格尔

更新:

我最终选择使用 FFmpeg。我已经在服务器上安装了 FFmpeg,现在我正在尝试在使用 PHP 执行之前在 shell 中执行命令。我将来自 Amazon 的 URL 传递给它(我尝试了 cloudfront URL 和 S3 URL),但它说没有这样的目录或文件。我在网上看到过使用外部文件的示例,所以我希望它可以工作。

我使用的命令是

ffmpeg -i https://s3-eu-west-1.amazonaws.com/path/to/file.m4v

为了使用外部 URL,我需要进行一些配置吗?

【问题讨论】:

  • 如果您使用视频播放器,通常可以通过这种方式提取信息。这是什么类型的视频?
  • 这是一个flv编码的视频。这个想法是在列表页面上显示持续时间,它也将用于搜索,所以我需要将这些数据保存在我的数据库中。
  • 我会使用我的 jwplayer 从 javascript 文件中提取信息,然后可能使用 AJAX 将其传递回 php。
  • 这听起来不太干净 :-( 如果 JWPlayer 可以做到,那么使用 PHP 也应该可以做到。我可能需要在服务器上安装 FFmpeg 才能获取信息,但我希望 S3 API 可以为我提供这些信息。

标签: php amazon-s3 ffmpeg video-streaming


【解决方案1】:

如果您不想使用 FFmpeg(或无法将其安装在您的服务器上),另一种选择是在视频文件的嵌入元数据中查找持续时间。

它通常存储在一个或多个名为“Duration”或“PlayDuration”的标签中。

您可以使用ExifTool 之类的方式从视频文件中读取嵌入的元数据,然后解析标签的输出。

【讨论】:

    【解决方案2】:

    有一个来自 LongTail 的示例代码 sn-p,它使用 PHP 和 FFMPeg http://www.longtailvideo.com/support/forums/jw-player/setup-issues-and-embedding/9448/how-to-get-video-duration-with-ffmpeg-and-php

    这里似乎是另一种解决方案: http://www.jqueryphp.com/getting-video-duration-with-ffmpeg-php-function/2009/10/

    您需要在服务器上安装 FFMpeg

    【讨论】:

    • 谢谢史蒂文。我的视频文件很大(400-600MB)...你知道FFmpeg是否可以远程访问它们并获取必要的数据而无需下载整个文件?
    • 当您将视频文件上传到 S3 时,您确定将视频文件存储在本地,至少是临时存储?你应该能够得到持续时间。如果做不到这一点,请使用 ffmpeg 一次来确定长度并将其存储在您的数据库中。
    • 嗨...该文件将直接上传到S3而不通过我们的服务器...但似乎我必须改变我的想法并让它通过它来检索持续时间。
    【解决方案3】:

    还有另一种可能的解决方案。 将视频文件放入 S3 存储桶时,您需要设置对象元数据。

    要在对象上设置用户元数据,请在标头值前面加上“x-amz-meta-”。

    【讨论】:

      猜你喜欢
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2013-07-27
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      相关资源
      最近更新 更多