PHP视频转换
最新更新日期:Dec-18-2023
PHP视频转换概述
上传视频云化后,可多方式转换
变换和交付视频语法通常与图像语法相同,您也可以将大多数可用图像变换应用到视频中。举例说,您可调整大小、裁剪、旋转、设置视频质量和格式或使用汽车质量和/或自格式化,在视频中添加文本或图像叠加等
还有一些特殊选项可供转换和提供视频内容使用举例说,你可以调整它们的大小、形状、速度、持续时间、质量和外观还有一些声音特有特征
本节向您介绍PHP视频流换基础视频转换功能全细节见视频转换并变换URLAPI引用.
PHP视频转换功能
变换特征对图像和视频同样相关,如重定大小、裁剪、旋转、添加文本或图像叠加和设置视频质量或格式等,除此之外,还有各种特殊变换视频可用举例说,您可:
- 转码视频从一个格式到另一个格式
- 应用视频特效退步/退步、加速或减速、调整体积、逆向播放
- 播放视频视频,修剪视频或组合式多视频
- 集成视频播放并音频质量选项,如比特率、视频编解码器、音频采样频率或音频编解码器
- 调整视频视觉语调三维LUTs
- 生成式缩略图或动画化视频图片
- 提供视频使用自适应比特率流HLS或MPEG-DASH
可选择指定所有以上转换视频使用生成图像标签方法或直接URL构建指令
视频标签助手法
可任选指定a内所有以上变换视频塔格
方法自动生成HTML5视频标签,包括由Web浏览器支持的主格式变换URL源码和图画缩图这使浏览器自动选择并播放它支持的视频格式视频文件先由用户访问时动态创建
例举 :
(new VideoTag('dog'))
->resize(Resize::pad(480, 360))
->videoEdit(VideoEdit::trim()->duration(10))
->quality(70)
->fallback('Your browser does not support HTML5 video tags.')
->setAttributes(['controls', 'loop']);
以上代码产生HTML
<video controls loop poster="https://res.www.aaaalireno.com/demo/video/upload/c_pad,h_360,w_480/du_10/q_70/dog.jpg">
Your browser does not support HTML5 video tags.
<source src="https://res.www.aaaalireno.com/demo/video/upload/c_pad,h_360,w_480/du_10/q_70/vc_h265/dog.mp4" type="video/mp4; codecs=hev1">
<source src="https://res.www.aaaalireno.com/demo/video/upload/c_pad,h_360,w_480/du_10/q_70/vc_vp9/dog.webm" type="video/webm; codecs=vp9">
<source src="https://res.www.aaaalireno.com/demo/video/upload/c_pad,h_360,w_480/du_10/q_70/vc_auto/dog.mp4" type="video/mp4">
<source src="https://res.www.aaaalireno.com/demo/video/upload/c_pad,h_360,w_480/du_10/q_70/vc_auto/dog.webm" type="video/webm">
</video>
细节见视频标签文档记录
泛泛地说,当使用SDK时,你可能利用SDK参数名提高可读性并维护代码可选添加任何变换URL语法使用addTransformation方法论
例举 :
$cld->VideoTag('dog')->addTransformation('c_scale,w_400/e_accelerate');
直接URL构建
上头视频塔格
上文描述方法生成HTML5视频标签在某些条件中,你可能想直接生成变换URL,不包含视频标签只返回URL使用视频播放
helper方法调用tourl()
方法论
tourl()
方法上你也有选择向字符串投影法
(string)$cld->video()
或将方法置入字符串
"{$cld->video()}"
举个例子
cld->video('docs/sunglasses.mp4')
->videoEdit(
VideoEdit::trim()
->startOffset(7.5)
->endOffset(10.0)
)
->effect(Effect::boomerang())
->resize(Resize::scale()->width(0.2))->toUrl();
// Output: "https://res.www.aaaalireno.com/demo/video/upload/so_7.5,eo_10.0/e_boomerang/c_scale,w_0.2/v1/docs/sunglasses.mp4"
视频转换实例
本节举例说明使用PHP代码应用上一节提及的一些视频变换特征
实例1:
下示例调整大小狗狗
视频到40%原创尺寸并旋转20度并加半透明右下角云标识,使用东南重力调整xy坐标达旋转视频角
(new VideoTag('dog.mp4'))
->rotate(Rotate::byAngle(20))
->resize(Resize::scale()->width(0.4))
->overlay(
Overlay::source(Source::image('cloudinary_icon_white')
->transformation((new ImageTransformation())
->resize(Resize::scale()->width(60))
->adjust(Adjust::opacity(50))))
->position((new Position())
->gravity(Gravity::compass(Compass::southEast()))
->offsetX(60)->offsetY(15)
));
实例2
下示例调整滑雪视频的亮度, 并设置半径最大度以产生像望远镜效果后转录影带拷贝反转放 并慢动作再向前播放
(new VideoTag('ski_jump.mp4'))
->videoEdit(
VideoEdit::concatenate(Concatenate::videoSource('ski_jump')
->transformation((new VideoTransformation())
->effect(Effect::reverse()))))
->videoEdit(
VideoEdit::concatenate(Concatenate::videoSource('ski_jump')
->transformation((new VideoTransformation())
->effect(Effect::accelerate()->rate(-50)))))
->roundCorners(RoundCorners::max())
->adjust(Adjust::brightness()->level(10));
实例3
下示例生成
标签视频循环HTML5带默认控件视频播放器视频加载默认招贴时基于视频中间框显示标签自动包括所有支持格式源URLs,并请求转换:使用原创视频前10秒,平台480x360并生成70质量控制文件大小
(new VideoTag('dog'))
->resize(Resize::pad(480, 360))
->videoEdit(VideoEdit::trim()->duration(10))
->quality(70)
->fallback('Your browser does not support HTML5 video tags.')
->setAttributes(['controls', 'loop']);
实例4
下例使用直接URL构建提供视频二秒从秒一到秒三 循环三次视频缩放到宽度的微分
cld->video('docs/sunglasses.mp4')
->resize(Resize::scale()->width(0.2))
->videoEdit(VideoEdit::trim()->startOffset(1.0)
->endOffset(3.0))
->effect(Effect::loop(3))->toUrl();
实例5
下例使用直接URL构建视频从7.5秒到10秒用浅蓝边框传输2.5秒后,并附加同段回转版,将视频重排到原小数分数覆盖右上角应用东北
高25像素不透明90
cld->video('docs/sunglasses.mp4')
->videoEdit(VideoEdit::trim()->startOffset(7.5)->endOffset(10.0))
->effect(Effect::boomerang())
->resize(Resize::scale()->width(0.2))
->overlay(
Overlay::source(
Source::image('cloudinary')
->transformation(
(new ImageTransformation())
->adjust(Adjust::opacity(90))
->resize(Resize::scale()->height(25))
)
)
->position(
(new Position())
->gravity(
Gravity::compass(Compass::northEast())
)
)
)->toUrl();
));