所以,我有点接受了这项工作,但我真的不确定它是否可行。
我们打算建立一个网站,用户可以从他们的计算机和手机浏览器上传视频。视频文件可以是各种宽高比,宽度,高度,编码和文件格式。
我可以在网络服务器上从php exec命令访问ffmpeg。
是否可以使用它将用户文件转换为适用于计算机,android和iphone的一种文件格式。
要求是我们可以设置最大宽度,视频将被缩放,动态匹配高度。
有谁知道这可以做到,并且可以在合理的时间内完成。将在2天内完成项目。如果是这样,一些正确方向的指针会很好。
答案 0 :(得分:0)
有同样的问题,但通过使用HandBrake解决了开源视频转码器
答案 1 :(得分:0)
如果您的目标只能是一种文件格式,那么我会选择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编码中引发错误。最好自己做数学。