繁体   English   中英

ffmpeg转换任何用户视频文件以在手机上运行h264 mp4

[英]ffmpeg convert any user video file to run on mobiles h264 mp4

因此,我有点接受这项工作任务,但我真的不确定是否可行。

我们将建立一个网站,让用户可以从他们的计算机和手机浏览器上传视频。 视频文件的宽高比,宽度,高度,编码和文件格式可以很大。

我将可以从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编码中引发错误。 最好自己做数学。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM