Skip to content

Instantly share code, notes, and snippets.

@snowwalf
Last active December 15, 2017 09:15
Show Gist options
  • Save snowwalf/21f789beca950bd444fa0da934f35848 to your computer and use it in GitHub Desktop.
Save snowwalf/21f789beca950bd444fa0da934f35848 to your computer and use it in GitHub Desktop.

1. 混音效果

使用avthumb转码命令,将目标视频的音轨提取出来混入源视频的指定时间段

1.1. 功能限制

  • 最多只能混入一个音频
  • 源音视频、混音输入音视频都仅支持单音轨
  • 混音的两个音频的channel数必须一致
  • 混音会导致音量发生变化
  • 音量分配无法控制,有程序自动生成

1.2. API

Cmd 是否必填 说明
/amix/<mix_url> N 期望混音的音视频文件,单音轨,channel数与源音视频音轨一致,url要经过 {{urlsafe_base64_encode}}
/amixOffset/<amix_offset> N 混音效果起始位置,相对于混音后视频起始位置计算,单位为秒,精确到毫秒,默认取0,即混音后音视频从起始位置起有混音效果
/amixStart/<amix_start> N 目标混音文件截取的开始时间,单位为秒,精确到毫秒,默认取0,即目标混音文件从起始开始混入源音视频
/amixDuration/<amix_duration> N 目标混音文件截取的时长,单位为秒,精确到毫秒,默认为目标混音文件音轨原始长度,即全部混入源音视频

1.3. 示例

avthumb/mp4/amix/aHR0cDovL3Fib3h0ZXN0LmNvbS9yaW5nLm1wMw==/amixOffset/13.4/amixStart/5/amixDuration/10.0

2. 视频拼接转场效果

目前实现了视频淡入淡出的特效,通过avthumb分别为两段视频添加淡出和淡入效果,以及用avconcat将两端添加特效后的视频进行拼接,实现淡入淡出转场效果

2.1. 功能限制

  • 淡入淡出以亮度变化来实现,不支持其他特效
  • 淡入淡出特效只支持变成黑色,不能使用其他颜色
  • 仅支持片头淡入,片尾淡出,其他不支持

2.2. 淡入淡出API

Cmd 是否必填 说明
/fade/<fade_duration> N fade_duration表示淡入/淡出效果持续时长,其格式为<片头淡入时长>-<片尾淡出时长>,单位为秒,精确到毫秒,默认为0表示无淡入/淡出效果。例如/fade/2.5表示片头添加2.5秒淡入效果;/fade/-1.5表示片尾添加1.5秒淡出效果;/fade/2-3.5表示分别在片头添加2秒淡入效果,片尾添加3.5秒淡出效果。

2.3. 示例

对av001.mp4使用末尾3秒淡出特效
avthumb/mp4/fade/-3.0

对av002.mp4使用开头3秒淡入特效
avthumb/mp4/fade/3.0

使用avconcat拼接两个添加特效后生成的视频

3. 区域马赛克效果

在源视频指定区域、指定时间段生成马赛克

3.1. 功能限制

  • 一次只能打一个马赛克,不支持单命令多个马赛克
  • 不能与改分辨率同用
  • 不能控制马赛克颗粒大小

3.2. API

Cmd 是否必填 说明
/mosaic/<isMosaic> N 是否启用马赛克,1表示启用马赛克,默认为0,无马赛克效果;后续参数必须连续紧跟在/mosaci/1后面
/mosaicGravity/<Gravity>/ N 打马赛克的位置,默认值为NorthEast,参考水印 https://developer.qiniu.com/dora/manual/1314/video-watermarking
/mosaicOffsetX/<OffsetX>/ N 马赛克位置的相对横向偏移量,isMosaic=1时必填
/mosaicOffsetY/<OffsetY>/ N 马赛克位置的相对纵向偏移量,isMosaic=1时必填
/mosaicSize/<Size>/ N 马赛克区域大小,格式为<weight>x<height>,isMosaic=1时必填
/mosaicStart/<Start>/ N 马赛克起始时间,单位为秒,精确到毫秒,默认为0
/mosaicDuration/<Duration> N 马赛克持续时间,单位为秒,精确到毫秒,默认直到片尾

3.3. 示例

avthumb/mp4/mosaic/1/mosaicGravity/NorthWest/mosaicOffsetX/100/mosaicOffsetY/200/mosaicSize/30x30/mosaicStart/15.2/mosaicDuration/14.3

4. 分段水印

avwatermarks是专门用于视频多水印的服务,支持在视频的不同时间段、不同位置,分别打上文字和图片的水印。

4.1. API

       avwatermarks/<format>
       /r/<FrameRate>
       /vb/<VideoBitRate>
       /subtitle/<SubtitleURL>
       /ab/<BitRate>
       /aq/<AudioQuality>
       /ar/<SamplingRate>
       /ac/<ChannelNum>
       /aspect/<Aspect>
       /resolution/<Resolution>
       /start/<Start>
       /duration/<Duration>
       /stripmeta/<0|1>
       /wmImage/<EncodedRemoteImageUrl>
       /wmGravity/<Gravity>
       /wmOffsetX/<offsetX>
       /wmOffsetY/<offsetY>
       /wmPos/<Position>
       /wmDuration/<Duration>
       /wmText/<EncodedText>
       /wmGravityText/<GravityText>
       /wmFont/<EncodeFont>
       /wmFontColor/<EncodeFontColor>
       /wmFontSize/<FontSize>
       /wmOffsetX/<offsetX>
       /wmOffsetY/<offsetY>
       /wmPos/<Position>
       /wmDuration/<Duration>
       /wmImage
       /...
       /wmText
       /...
       /wmImage
       /...
       /wmText
       /...

大部分参数解释可参照 http://developer.qiniu.com/code/v6/api/dora-api/av/video-watermark.html 新增两个参数,类似视频截取.

参数 必填 说明
<Format> 输出的视频格式(mp4)。
/r/<FrameRate> 视频帧率,每秒显示的帧数,单位:赫兹(Hz),常用帧率:24,25,30 等,一般用默认值。
/vb/<VideoBitRate> 视频比特率,单位:比特每秒(bit/s),常用视频比特率:128k 1.25m 5m 等。
/subtitle/<SubtitleURL> 添加字幕,支持:srt格式字幕(uft-8编码和和utf-8 BOM编码)、带有字幕的mkv文件、embed(将原视频的字幕流嵌入目标视频)。基于base64编码。
/ab/<BitRate> 静态码率(CBR),单位:比特每秒(bit/s),常用码率:320k, 256k, 192k, 128k, 64k 等。
/aq/<AudioQuality> 动态码率(VBR),取值范围为 0 ~ 9,值越小,码率越高,不得和上面的静态码率 <BitRate>(CBR) 参数合用。
/ar/<SamplingRate> 音频采样频率,单位:赫兹(Hz),常用采样频率:44100,22050,12050,8000等。
/ac/<ChannelNum> 音频声道数量,单位:整数值,目前只支持多种声道转为单声道,即为1,其他数值不合法。
/start/<Start> 指定视频截取的开始时间,以毫秒为单位(精确到小数点后三位,例如1.234秒)。用于视频截取,从一段视频中截取一段视频。
/duration/<Duration> 指定视频截取的长度,以毫秒为单位(精确到小数点后三位,例如1.234秒)。用于视频截取,从一段视频中截取一段视频。
/aspect/<Aspect> 指定视频播放时候的宽高比,格式为w:h,比如16:9
/resolution/<Resolution> 指定视频分辨率,格式为 wxh 或者预定义值,w取值范围[20,3840],h取值范围[20,2160]。
/stripmeta/<0 1> 是否清除文件的metadata,1为清除,0为保留
<EncodedRemoteImageUrl> <EncodedText> 水印的源路径,图片水印目前仅支持远程路径,需要经过urlsafe_base64_encode。注意:至少填写1项,不可超过5项
/wmGravity/<Gravity> 打水印的位置,参考水印锚点参数表,默认值为NorthEast(右上角)
/wmGravity/ <GravityText> 打水印的位置,参考水印锚点参数表,默认值为NorthEast(右上角)
/wmOffsetX/<offsetX> 视频水印位置的相对横向偏移量,当值为正数时则向右偏移,反之向左
/wmOffsetY/<offsetY> 视频图片水印位置的相对纵向偏移量,当值为正数时则向下偏移,反之向上
/wmFont/<EncodeFont> 文本字体(详见支持字体列表),需要经过urlsafe_base64_encode,默认为黑体。注意:中文水印必须指定中文字体
/wmFontColor/<EncodeFontColor> 水印文字颜色,需要经过urlsafe_base64_encode,RGB格式,可以是颜色名称(例如red)或十六进制(例如 #FF0000),参考RGB颜色编码表,默认为黑色
/wmFontSize/<FontSize> 水印文字大小,单位: 缇,等于1/20磅,默认值0(默认大小)
/wmPos/<Postion> 指定水印显示的起始时间,单位:秒,不填表示全时长。支持魔法变量$(end)表示视频结束时间点,注:需要和wmDuration同时存在
/wmDuration/<Duration> 指定水印显示的持续时间,单位:秒,正数表示时间增长方向,负数表示时间递减方向。不填表示全时长。注:需要和wmPos同时存在

4.2. 示例

avwatermarks/mp4/wmImage/aHR0cDovL3Rlc3QtMi5xaW5pdWRuLmNvbS9sb2dvLnBuZw==/wmOffsetX/40/wmOffsetY/40/wmPos/10/wmDuration/10/wmText/d2Vsb3ZlcWluaXU=/wmFontColor/cmVk/wmFontSize/59/wmGravityText/North/wmOffsetX/30/wmOffsetY/30/wmPos/5/wmDuration/10/wmImage/aHR0cDovL3Rlc3QtMi5xaW5pdWRuLmNvbS9sb2dvLnBuZw==/wmOffsetX/40/wmOffsetY/40/wmGravity/SouthWest/wmPos/10/wmDuration/10/wmImage/aHR0cDovL3Rlc3QtMi5xaW5pdWRuLmNvbS9sb2dvLnBuZw==/wmOffsetX/40/wmOffsetY/40/wmGravity/South/wmPos/10/wmDuration/10/wmImage/aHR0cDovL3Rlc3QtMi5xaW5pdWRuLmNvbS9sb2dvLnBuZw==/wmOffsetX/40/wmOffsetY/40/wmGravity/SouthEast/wmPos/$(end)/wmDuration/-20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment