CN108829318A - 一种截取音频控件的算法 - Google Patents
一种截取音频控件的算法 Download PDFInfo
- Publication number
- CN108829318A CN108829318A CN201810591496.2A CN201810591496A CN108829318A CN 108829318 A CN108829318 A CN 108829318A CN 201810591496 A CN201810591496 A CN 201810591496A CN 108829318 A CN108829318 A CN 108829318A
- Authority
- CN
- China
- Prior art keywords
- audio
- user
- control
- interception
- algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04847—Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明涉及一种截取音频控件的算法,包括如下步骤:设定外部容器控件、内部频谱控件以及边框控件三部分,以构成整个截取音频控件框架,提供对外接口用于接收用户输入的原始音频,捕获用户的确定或取消操作,如取消,则恢复矩形区域的初始位置,如确定,则转存矩形区域对应的音频片段为独立的音频文件,并提示可进行包括分享、播放在内的进一步操作。本发明,可供用户选择并截取感兴趣的音频片段,支持音频片段的存储及分享,可按需设定截取音频的播放时长,自由度高,稳定性好,凸显用户个性化,节省音频分享所需流量资源,提升用户体验,易于后期维护及二次开发。
Description
技术领域
本发明涉及音频处理技术领域,具体说是一种截取音频控件的算法。
背景技术
现有的App,在用户欣赏音乐时,如果遇到喜欢的音乐,只能分享音乐的播放链接,或音乐的乐曲名称,或音乐的相关信息,不能提供更丰富的分享方式,而且分享后的资源,需要其他用户花费一定的流量去获取,在获取到音乐之前,其他用户不能确定自己是否也会喜欢该音乐,这导致分享后的播放不能达到预期的目标。用户间除非非常熟悉或恰有欣赏音乐的需求,否则此类音乐分享不能形成良好的互动和交流,不利于音乐的推广及传播。
音乐对应的音频文件,在获取后,如果希望截取音频文件中的片段形成音频片段,需要专业的软件及一定的经验,普通用户不熟悉相应的操作方式,在不能直观、快捷的操作时,往往难以得到自己所需的音频片段,影响了用户的使用体验。
在短视频普及发展的今天,短音频的发展相对滞后,还需要提供更直观、快捷的操作,方便用户截取音频文件中的片段形成音频片段,扩展短音频的市场发展。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种截取音频控件的算法,可供用户选择并截取感兴趣的音频片段,支持音频片段的存储及分享,可按需设定截取音频的播放时长,自由度高,稳定性好,凸显用户个性化,节省音频分享所需流量资源,提升用户体验,易于后期维护及二次开发。
为达到以上目的,本发明采取的技术方案是:
一种截取音频控件的算法,其特征在于,包括如下步骤:
设定外部容器控件、内部频谱控件以及边框控件三部分,以构成整个截取音频控件框架,
所述外部容器控件,定义外部容器控件AudioSpecLayout,继承android***提供的FrameLayout控件,提供自由滑动内部容器的功能,
所述内部频谱控件,定义频谱控件AudioLineView,集成android***提供的View控件,生成并显示原始音频的波形图,
所述边框控件,定义边框控件AudioFrameView,集成android***提供的View控件,波形图上创建浮动层,在浮动层中生成并显示矩形区域,矩形区域用于指示待截取音频片段,矩形区域长度与音频片段播放时长关联,
内部频谱控件和边框控件构成内部容器,
提供对外接口用于接收用户输入的原始音频,
捕获用户的确定或取消操作,
如取消,则恢复矩形区域的初始位置,
如确定,则转存矩形区域对应的音频片段为独立的音频文件,并提示可进行包括分享、播放在内的进一步操作。
在上述技术方案的基础上,矩形区域用亮色绘制,默认亮色为黄色。
在上述技术方案的基础上,所述边框控件,具体包括:
步骤1,定义绘制区域的画笔mPaintFullYello对象,用来绘制矩形区域;
步骤2,定义mRectLeft, mRectRight,表示左边和右边圆角矩形的区域,是RectF类型的变量;
步骤3,在onSizeChanged回调中获取屏幕宽高,根据屏幕宽度和矩形距离屏幕左边及右边的距离,来构造mRectLeft, mRectRight变量的范围;
步骤4,在onDraw回调中,绘制mRectLeft, mRectRight区域。
在上述技术方案的基础上,所述内部频谱控件,具体包括:
步骤1,定义绘制区域的画笔mPaintSpectrum对象,用来绘制频谱线条;
步骤2,在onSizeChanged回调中mHeight为控件的高度;定义数值RECT_CENTER,表示线条高度的一半的像素值,则有:
RECT_CENTER = (mHeight - AudioViewConfig.RECT_HEIGHT) +AudioViewConfig.RECT_HEIGHT / 2,
步骤3,在onDraw回调中,绘制线条。
在上述技术方案的基础上,所述外部容器控件,具体包括:
在点击回调onTouchEvent中,设置点击、滑动和抬起三个事件,来处理用户的手势操作。
在上述技术方案的基础上,处理用户点击操作进行如下赋值操作:
downX = (int) event.getX();
lastMoveX = getScrollX();
其中:
downX是点击的横坐标,值是int类型的,event是Android***在onTouchEvent回调中传递的操作屏幕对象,包含了用户的操作类型和点击或者滑动的屏幕中的坐标,event.getX()就是获取了用户点击的横坐标,lastMoveX 记录用户从上一次到点击的时候,AudioLineView控件滑动的距离,getScrollX是Android ViewGroup控件提供的api,用来获取子View滑动的横坐标。
在上述技术方案的基础上,处理用户滑动操作进行如下赋值操作:
mCurX = event.getX();
在用户点击或者滑动的时候,记录下操作的横坐标mCurX,
根据mCurX与点击的横坐标downX的差值,判断出用户滑动了多少距离,判断出用户滑动方向,根据这个差值调用ViewGroup提供的api startScroll调用滑动线型控件AudioLineView。
在上述技术方案的基础上,存储原始音频信息、存储音频片段信息、计算并生产音频片段和原始音频的对应关系,形成截取热点信息文件并存储。
在上述技术方案的基础上,截取热点信息文件存储于本地,并上传远端进行同步更新,
每个音频文件至少对应一份截取热点信息文件。
在上述技术方案的基础上,用户启动截取音频控件时,从远端获取截取热点信息文件,展示音频片段和原始音频的对应关系给用户参考,
用户或选择其他用户曾经截取的音频片段并存储或分享,
用户或自主选择新建截取的音频片段并存储或分享。
本发明所述的截取音频控件的算法,可供用户选择并截取感兴趣的音频片段,支持音频片段的存储及分享,可按需设定截取音频的播放时长,自由度高,稳定性好,凸显用户个性化,节省音频分享所需流量资源,提升用户体验,易于后期维护及二次开发。
附图说明
本发明有如下附图:
图1 本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的截取音频控件的算法,包括如下步骤:
设定外部容器控件、内部频谱控件以及边框控件三部分,以构成整个截取音频控件框架,
所述外部容器控件,定义外部容器控件AudioSpecLayout,继承android***提供的FrameLayout控件,提供自由滑动内部容器的功能,
所述内部频谱控件,定义频谱控件AudioLineView,集成android***提供的View控件,生成并显示原始音频的波形图,
所述边框控件,定义边框控件AudioFrameView,集成android***提供的View控件,波形图上创建浮动层,在浮动层中生成并显示矩形区域,矩形区域用于指示待截取音频片段,矩形区域长度与音频片段播放时长关联,
内部频谱控件和边框控件构成内部容器,
提供对外接口用于接收用户输入的原始音频,
捕获用户的确定或取消操作,
如取消,则恢复矩形区域的初始位置,
如确定,则转存矩形区域对应的音频片段为独立的音频文件,并提示可进行包括分享、播放在内的进一步操作。
在上述技术方案的基础上,矩形区域用亮色绘制,默认亮色为黄色。
在上述技术方案的基础上,所述边框控件,具体包括:
步骤1,定义绘制区域的画笔mPaintFullYello对象,用来绘制矩形区域;
步骤2,定义mRectLeft, mRectRight,表示左边和右边圆角矩形的区域,是RectF类型的变量;
步骤3,在onSizeChanged回调中获取屏幕宽高,根据屏幕宽度和矩形距离屏幕左边及右边的距离,来构造mRectLeft, mRectRight变量的范围;
步骤4,在onDraw回调中,绘制mRectLeft, mRectRight区域;
例如可采用如下代码:
canvas.drawRoundRect(mRectLeft,AudioViewConfig.ROUND_COURNER,AudioViewConfig.ROUND_COURNER, mPaintFullYello);
其中:
canvas是Android***提供的画布,用户可以在这个画布上绘制内容,drawRoundRect是画布canvas提供的用来绘制圆角矩形的api,mRectLeft就是步骤3确定的左边的区域,
AudioViewConfig.ROUND_COURNER是客户端设置的圆角值,在这里设置的是7,mPaintFullYello是步骤1定义的画笔,同理可以绘制右边的矩形区域mRectLeft。
在上述技术方案的基础上,所述内部频谱控件,具体包括:
步骤1,定义绘制区域的画笔mPaintSpectrum对象,用来绘制频谱线条;
步骤2,在onSizeChanged回调中mHeight为控件的高度;定义数值RECT_CENTER,表示线条高度的一半的像素值,则有:
RECT_CENTER = (mHeight - AudioViewConfig.RECT_HEIGHT) +AudioViewConfig.RECT_HEIGHT / 2,
其中:
mHeight 是控件的高度,AudioViewConfig.RECT_HEIGHT是用户自己定义的高度,设置为65像素,以上公式就是计算出了线条的一半高度;
步骤3,在onDraw回调中,绘制线条;
例如可采用如下代码:
for (int i = 0; i < mCount; i++) {
int height= mData[i] ;
int x = AudioViewConfig.LINE_INTERVAL * i * 2;
canvas.drawLine(x, RECT_CENTER - height, x, RECT_CENTER + height,mPaintSpectrum);
}
其中:
mCount是是需要绘制线条的数量,由调用者来传递和设置,heighth和mData[i]表示外部传递和设置的线条的高度值,AudioViewConfig.LINE_INTERVAL表示线条的间距,这里设置为4像素,canvas是android***的提供的画布,drawLine是画布canvas提供的绘制线条的api,x表示起始点的横坐标,RECT_CENTER - height是求出来的起始点的竖坐标,RECT_CENTER + height表示终点的竖坐标,这样就绘制出来了带间距的多个线条了。
在上述技术方案的基础上,所述外部容器控件,具体包括:
在点击回调onTouchEvent中,设置点击、滑动和抬起三个事件,来处理用户的手势操作。
在上述技术方案的基础上,处理用户点击操作进行如下赋值操作:
downX = (int) event.getX();
lastMoveX = getScrollX();
其中:
downX是点击的横坐标,值是int类型的,event是Android***在onTouchEvent回调中传递的操作屏幕对象,包含了用户的操作类型和点击或者滑动的屏幕中的坐标,event.getX()就是获取了用户点击的横坐标,lastMoveX 记录用户从上一次到点击的时候,AudioLineView控件滑动的距离,getScrollX是Android ViewGroup控件提供的api,用来获取子View滑动的横坐标。
在上述技术方案的基础上,处理用户滑动操作进行如下赋值操作:
mCurX = event.getX();
在用户点击或者滑动的时候,记录下操作的横坐标mCurX,
根据mCurX与点击的横坐标downX的差值,判断出用户滑动了多少距离,判断出用户滑动方向,根据这个差值调用ViewGroup提供的api startScroll调用滑动线型控件AudioLineView。
在上述技术方案的基础上,在滑动的时候,将滑动的像素值传递给外部的调用者。
在上述技术方案的基础上,存储原始音频信息、存储音频片段信息、计算并生产音频片段和原始音频的对应关系,形成截取热点信息文件并存储。
在上述技术方案的基础上,截取热点信息文件存储于本地,并上传远端进行同步更新,
每个音频文件至少对应一份截取热点信息文件。
在上述技术方案的基础上,用户启动截取音频控件时,从远端获取截取热点信息文件,展示音频片段和原始音频的对应关系给用户参考,
用户或选择其他用户曾经截取的音频片段并存储或分享,
用户或自主选择新建截取的音频片段并存储或分享。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (10)
1.一种截取音频控件的算法,其特征在于,包括如下步骤:
设定外部容器控件、内部频谱控件以及边框控件三部分,以构成整个截取音频控件框架,
所述外部容器控件,定义外部容器控件AudioSpecLayout,继承android***提供的FrameLayout控件,提供自由滑动内部容器的功能,
所述内部频谱控件,定义频谱控件AudioLineView,集成android***提供的View控件,生成并显示原始音频的波形图,
所述边框控件,定义边框控件AudioFrameView,集成android***提供的View控件,波形图上创建浮动层,在浮动层中生成并显示矩形区域,矩形区域用于指示待截取音频片段,矩形区域长度与音频片段播放时长关联,
内部频谱控件和边框控件构成内部容器,
提供对外接口用于接收用户输入的原始音频,
捕获用户的确定或取消操作,
如取消,则恢复矩形区域的初始位置,
如确定,则转存矩形区域对应的音频片段为独立的音频文件,并提示可进行包括分享、播放在内的进一步操作。
2.如权利要求1所述的截取音频控件的算法,其特征在于:矩形区域用亮色绘制,默认亮色为黄色。
3.如权利要求1所述的截取音频控件的算法,其特征在于:所述边框控件,具体包括:
步骤1,定义绘制区域的画笔mPaintFullYello对象,用来绘制矩形区域;
步骤2,定义mRectLeft, mRectRight,表示左边和右边圆角矩形的区域,是RectF类型的变量;
步骤3,在onSizeChanged回调中获取屏幕宽高,根据屏幕宽度和矩形距离屏幕左边及右边的距离,来构造mRectLeft, mRectRight变量的范围;
步骤4,在onDraw回调中,绘制mRectLeft, mRectRight区域。
4.如权利要求1所述的截取音频控件的算法,其特征在于:所述内部频谱控件,具体包括:
步骤1,定义绘制区域的画笔mPaintSpectrum对象,用来绘制频谱线条;
步骤2,在onSizeChanged回调中mHeight为控件的高度;定义数值RECT_CENTER,表示线条高度的一半的像素值,则有:
RECT_CENTER = (mHeight - AudioViewConfig.RECT_HEIGHT) +AudioViewConfig.RECT_HEIGHT / 2,
步骤3,在onDraw回调中,绘制线条。
5.如权利要求1所述的截取音频控件的算法,其特征在于:所述外部容器控件,具体包括:
在点击回调onTouchEvent中,设置点击、滑动和抬起三个事件,来处理用户的手势操作。
6.如权利要求5所述的截取音频控件的算法,其特征在于:处理用户点击操作进行如下赋值操作:
downX = (int) event.getX();
lastMoveX = getScrollX();
其中:
downX是点击的横坐标,值是int类型的,event是Android***在onTouchEvent回调中传递的操作屏幕对象,包含了用户的操作类型和点击或者滑动的屏幕中的坐标,event.getX()就是获取了用户点击的横坐标,lastMoveX 记录用户从上一次到点击的时候,AudioLineView控件滑动的距离,getScrollX是Android ViewGroup控件提供的api,用来获取子View滑动的横坐标。
7.如权利要求5所述的截取音频控件的算法,其特征在于:处理用户滑动操作进行如下赋值操作:
mCurX = event.getX();
在用户点击或者滑动的时候,记录下操作的横坐标mCurX,
根据mCurX与点击的横坐标downX的差值,判断出用户滑动了多少距离,判断出用户滑动方向,根据这个差值调用ViewGroup提供的api startScroll调用滑动线型控件AudioLineView。
8.如权利要求1所述的截取音频控件的算法,其特征在于:存储原始音频信息、存储音频片段信息、计算并生产音频片段和原始音频的对应关系,形成截取热点信息文件并存储。
9.如权利要求8所述的截取音频控件的算法,其特征在于:截取热点信息文件存储于本地,并上传远端进行同步更新,
每个音频文件至少对应一份截取热点信息文件。
10.如权利要求1所述的截取音频控件的算法,其特征在于:用户启动截取音频控件时,从远端获取截取热点信息文件,展示音频片段和原始音频的对应关系给用户参考,
用户或选择其他用户曾经截取的音频片段并存储或分享,
用户或自主选择新建截取的音频片段并存储或分享。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810591496.2A CN108829318A (zh) | 2018-06-10 | 2018-06-10 | 一种截取音频控件的算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810591496.2A CN108829318A (zh) | 2018-06-10 | 2018-06-10 | 一种截取音频控件的算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108829318A true CN108829318A (zh) | 2018-11-16 |
Family
ID=64144633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810591496.2A Pending CN108829318A (zh) | 2018-06-10 | 2018-06-10 | 一种截取音频控件的算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108829318A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1779777A (zh) * | 2005-08-16 | 2006-05-31 | 深圳市彩秀科技有限公司 | 一种通过截取音频波形进行音频编辑和转化的方法 |
US20060224940A1 (en) * | 2005-04-04 | 2006-10-05 | Sam Lee | Icon bar display for video editing system |
CN102193943A (zh) * | 2010-03-12 | 2011-09-21 | 腾讯科技(深圳)有限公司 | 向用户提供媒体数据的方法和装置 |
CN105635418A (zh) * | 2014-10-31 | 2016-06-01 | 东莞宇龙通信科技有限公司 | 一种截取铃声的方法及装置 |
CN105845158A (zh) * | 2015-01-12 | 2016-08-10 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及客户端 |
CN106531202A (zh) * | 2016-11-14 | 2017-03-22 | 腾讯音乐娱乐(深圳)有限公司 | 一种音频处理方法及装置 |
CN106887240A (zh) * | 2015-12-15 | 2017-06-23 | 卓望数码技术(深圳)有限公司 | 一种基于iOS平台的音频处理方法、***及iOS设备 |
CN107220047A (zh) * | 2017-05-19 | 2017-09-29 | 北京酷我科技有限公司 | 一种音频频谱的动图显示进度条控件实现方法 |
-
2018
- 2018-06-10 CN CN201810591496.2A patent/CN108829318A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060224940A1 (en) * | 2005-04-04 | 2006-10-05 | Sam Lee | Icon bar display for video editing system |
CN1779777A (zh) * | 2005-08-16 | 2006-05-31 | 深圳市彩秀科技有限公司 | 一种通过截取音频波形进行音频编辑和转化的方法 |
CN102193943A (zh) * | 2010-03-12 | 2011-09-21 | 腾讯科技(深圳)有限公司 | 向用户提供媒体数据的方法和装置 |
CN105635418A (zh) * | 2014-10-31 | 2016-06-01 | 东莞宇龙通信科技有限公司 | 一种截取铃声的方法及装置 |
CN105845158A (zh) * | 2015-01-12 | 2016-08-10 | 腾讯科技(深圳)有限公司 | 一种信息处理方法及客户端 |
CN106887240A (zh) * | 2015-12-15 | 2017-06-23 | 卓望数码技术(深圳)有限公司 | 一种基于iOS平台的音频处理方法、***及iOS设备 |
CN106531202A (zh) * | 2016-11-14 | 2017-03-22 | 腾讯音乐娱乐(深圳)有限公司 | 一种音频处理方法及装置 |
CN107220047A (zh) * | 2017-05-19 | 2017-09-29 | 北京酷我科技有限公司 | 一种音频频谱的动图显示进度条控件实现方法 |
Non-Patent Citations (1)
Title |
---|
天津君子兰: "音频剪辑软件哪个好用 怎么剪辑音乐 怎么剪", 《百度知道》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11687313B2 (en) | Audio file processing to reduce latencies in play start times for cloud served audio files | |
CN108205467A (zh) | 重复动作的智能辅助 | |
CN104091287B (zh) | 一种基于数据驱动的任务实现方法及装置 | |
CN111050203B (zh) | 一种视频处理方法、装置、视频处理设备及存储介质 | |
US7962935B2 (en) | Data processing apparatus, data processing method and program, and data processing system | |
KR101200460B1 (ko) | 사용자 행동에 기초하여 무선 디바이스 상의 미디어 컨텐츠의 표시를 최적화하기 위한 방법 및 장치 | |
CN105930020B (zh) | 一种管理终端应用程序的功能图标的方法及装置 | |
CN104185039B (zh) | 音视频同步播放的方法和装置 | |
US11614928B2 (en) | Modifying unconfigured application to include default channel | |
KR101197219B1 (ko) | 개인 일정 및 방송 프로그램을 관리하기 위한 장치 및 방법 | |
CN107197357B (zh) | 一种播放中视频的截取方法及装置 | |
CN107659850B (zh) | 媒体信息处理方法和装置 | |
CN102098809A (zh) | 应用程序评价实现方法、终端 | |
CN108900791B (zh) | 一种视频发布方法、装置、设备及存储介质 | |
CN105898410A (zh) | 视频推荐方法以及服务器 | |
CN101807416A (zh) | 一种数字家庭背景音乐控制*** | |
CN108762628A (zh) | 页面元素移动显示方法、装置、终端设备及存储介质 | |
US20200287968A1 (en) | Data synchronization method and apparatus, and electronic cigarette | |
CN109508450A (zh) | 在线文档中表格的操作方法、装置、存储介质及电子设备 | |
CN105094574A (zh) | 更新导航菜单的配置的方法和装置 | |
CN114866805A (zh) | 视频处理方法、设备及存储介质 | |
CN110908638A (zh) | 一种操作流创建方法及电子设备 | |
CN108388576B (zh) | 交互式生成图谱的方法和*** | |
CN108829318A (zh) | 一种截取音频控件的算法 | |
CN108847258B (zh) | 一种截取音频控件的实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |