所以,我在工作中接受了这项任务,但我真的不确定这是否可能。
我们将建立一个网站,用户可以从电脑和手机浏览器上传视频。视频文件可以是大范围的纵横比、宽度、高度、编解码器和文件格式。
我将可以从web服务器上的php-exec命令访问ffmpeg。
是否可以使用此功能将用户文件转换为适用于计算机、android和iphone的一种文件格式。
要求是我们可以设置一个最大宽度,切换视频将缩放,动态匹配高度。
有人知道这是可以做到的,并且在合理的时间内完成。将在2天内完成项目。如果是这样的话,一些指向正确方向的指针会很好。
有同样的问题,但通过使用HandBrake开源视频转码器解决了
https://handbrake.fr/
如果你的目标只能是一种文件格式,那么我会选择mp4基线。(然而,有些浏览器不会播放它,这就是为什么html标签提供了多个源标志,其中通常包括webm和ogg视频…)
使用ffprobe -show_streams $uploadedFile
可以获得文件的尺寸(和纵横比)。使用数学,你可以根据自己的需要获得新的尺寸。
$newDim=$new_width.":".$new_height;
$output = shell_exec("/usr/bin/ffmpeg -i $uploadedFile -f mp4 '
-c:a libfdk_aac -b:a 128k -c:v libx264 -vprofile baseline '
-movflags faststart -vf scale=$newDim $output");```
以下是分类:
f mp4 > format mp4
c:a libfdk_aac > audio codec
c:v libx264 > video codec
vprofile baseline > minimal codec usage for mobile
movflags faststart > put the moov atom at the beginning of file
$output > should have '.mp4' as a file ending
当然,关键在于细节(以及你可以向在线转换器抛出的处理核心的数量),但这至少会让你启动并运行。
编辑:确实回答了问题。:)
顺便说一句,ffmpeg确实提供了vf标志:-vf scale=320,-1
,但有时它会给你一个不可被2整除的维度,这会在x264编码中引发错误。最好自己算。