介绍
这期内容当中小编将会给大家带来有关利用php怎么对视频进行截取,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
截取视频指定帧为图片,php ffmpeg扩展已经完美实现:
movie 美元;=,new ffmpeg_movie ($ video_filePath); 美元$ ff_frame =,电影→getFrame (1); 美元$ gd_image =, ff_frame→toGDImage (); img=懊涝?test.jpg"; imagejpeg (gd_image美元,,img); imagedestroy ($ gd_image);
然而问题来了,智能手机拍摄的视频,由于拍摄方向不同,视频会被旋转,并带上元信息旋转,当你相对视频截取帧图片的时候,如果有旋转信息的视频,框架也是旋转的,因此你需要将截取的图片相应的旋转。
然后php ffmpeg扩展并无法获知旋转信息(php ffmpeg扩展文档),但可以通过ffmpeg命令行获取:
/usr/地方/ffmpeg/bin/ffprobe测试。mp4 -show_streams | grep旋转
用php简单封装下如下:
function get_video_orientation (video_path美元),{ 时间=美元才能cmd “/usr/地方/ffmpeg/bin/ffprobe “,只video_path 美元;只“,-show_streams 2在/dev/null"; 时间=美元才能result shell_exec ($ cmd); , 时间=美元才能orientation 0; 如果才能(大小写敏感(因此,美元,& # 39;标签:旋转# 39;),!==,FALSE), { ,,,result 美元;=,爆炸(“\ n",,结果美元); ,,,foreach (result 美元;as $线),{ ,,,,,如果(大小写敏感(线,美元,& # 39;标签:旋转# 39;),!==,FALSE), { ,,,,,,,stream_info 美元;=,爆炸(“=?,,美元线); ,,,,,,,orientation 美元;=,stream_info美元[1]; ,,,,,} ,,,} ,,} return 才能;美元取向; }
使用imagerotate()函数就可以旋转截图:
movie 美元;=,new ffmpeg_movie ($ video_filePath); 美元$ frame =,电影→getFrame (1); 美元$ gd =,框架→toGDImage (); if (orientation 美元;=,$ this→get_video_orientation (video_filePath美元)),{=美元才能gd imagerotate (gd美元,360美元取向,,0); } img=懊涝?test.jpg"; imagejpeg (gd美元,,img); imagedestroy ($ gd_image);
最后还有一个麻烦事,不是所有的播放器和浏览器都可对视频识别取向并自动旋转,如果你想对视频进行旋转,可通过ffmpeg命令解决:
<强>/usr/地方/ffmpeg/bin/ffmpeg我输入。mp4 vf & # 39;转置=3 & # 39;元数据:年代:v: 0旋转=0 强>