【问题标题】:Upload a video via PHP and encode to MP4 and/or WebM on the server?通过 PHP 上传视频并在服务器上编码为 MP4 和/或 WebM?
【发布时间】:2014-07-04 03:30:12
【问题描述】:

我想上传一个文件(实际上,我已经使用 PHP 和 JQuery 完成了),但我想在上传过程中将其编码为 MP4 和/或 WebM,就像 Youtube 在您上传视频时所做的那样.在此过程中是否可以在服务器中执行此操作?

我必须先对其进行编码然后上传吗?

【问题讨论】:

  • 您当然可以在服务器上执行此操作。我建议使用 ffmpeg 来完成这项工作。见这里trac.ffmpeg.org/wiki/Using%20FFmpeg%20from%20PHP%20scripts
  • PHP 的上传机制很愚蠢,您无法处理上传的数据,因为它实际上正在上传。如果要流式处理,则需要使用非 PHP 处理程序。
  • 是的,这就是我提到的原因,无论何时、过程中或之后……但我终于明白了!
  • @MarcB,你知道任何可以做到这一点的语言吗?同时上传和转换?

标签: php html5-video mp4 encode webm


【解决方案1】:

您可以在文件上传结束时执行此操作,即在您将文件移动到特定位置(如下代码)之后

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);

您可以使用一个名为 FFMPEG 的免费且知名的库,该库支持多种格式。请看一下这两个链接的例子和更好的解释:

https://www.phpro.org/tutorials/Video-Conversion-With-FFMPEG.html

https://trac.ffmpeg.org/wiki/Using%20FFmpeg%20from%20PHP%20scripts

基本上,你可以像这样从 PHP 调用 FFMPEG 函数

<?php

 /*** convert video to flash ***/
 exec("ffmpeg -i video.avi -ar 22050 -ab 32 -f flv -s 320x240 video.flv");

?>

【讨论】:

  • 请注意,PHP 通常将最大执行时间设置为 30 秒。在大视频上,传输时间加上转码可能很容易溢出此延迟并中止该过程。如果你有自己的服务器(看起来你是否可以使用ffmpeg),你可能想要使用异步工作器来进行实际处理(看看celerysidekiq 和类似的软件)。不过我不知道 PHP 集成。
猜你喜欢
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-03
相关资源
最近更新 更多