精华内容
下载资源
问答
  • 已知的小程序接口中wx.chooseImage 只能选择图片wx.chooseVideo 只能选择视频现在需要一个接口能够同时选择图片和视频。查了一下,果然有。拍摄或从手机相册中选择图片或视频wx.chooseMedia(Object object)文档地址...

    已知的小程序接口中

    wx.chooseImage 只能选择图片

    wx.chooseVideo 只能选择视频

    现在需要一个接口能够同时选择图片和视频。查了一下,果然有。

    拍摄或从手机相册中选择图片或视频

    wx.chooseMedia(Object object)

    文档地址:

    https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseMedia.html

    对视频进行压缩

    chooseMedia 这个接口不像 chooseVideo 可以在参数中指定对视频进行压缩。只可以压缩图片。

    至少文档里是这么说的。但是,经实际真机测试,现在是支持压缩视频的。

    在进行压缩时,会有提示信息。

    所以下面的内容可以忽略了。

    可以对视频文件使用接口 wx.compressVideo 进行压缩。使用文档:

    https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.compressVideo.html

    但是,这个压缩接口,我真机测试无效,永远报错:

    compressVideo:fail:compress failed, video type not be supported

    官方论坛上一堆反馈的,不是个例,我放弃了。不压缩,直接上传了。

    猜测是因为,第一步选择媒体文件时,已经进行了压缩,所以导致这步压缩失败。

    判断选中的文件类型

    是图片还是视频。

    成功回调中有个 type 字段,可以判断是 image 或是 video。

    展开全文
  • 哇,发现一个好玩的网站,好多漂亮的妹子,页面打开很流畅,点开后有的浏览页面还有好听的音乐,产品体验极佳。[图片上传失败...(image-4c1ba5-1608169838153)]不过每组图片只能看前几张图,后面的图只能看到缩略图...

    写在前面

    前几天玩游戏时,lol盒子右下角有条广告,广告大概这个样子

    咦,小姐姐,还有cosplay,点进去看看。

    哇,发现一个好玩的网站,好多漂亮的妹子,页面打开很流畅,点开后有的浏览页面还有好听的音乐,产品体验极佳。

    [图片上传失败...(image-4c1ba5-1608169838153)]

    不过每组图片只能看前几张图,后面的图只能看到缩略图,如果想继续看或者打包下载得花银子,通常要1-5rmb。

    ctrlC+ctrlV几张后不乐意了,这么保存一来看不到全部图片,二来,麻烦,太麻烦了。

    俗话说,妹子是第一生产力,鲁迅有云,懒人创造美好世界。

    项目编写

    试试吧,看能不能发现点有趣的东东。首先习惯性的看看html源码,blabla一堆,头大,pass。

    从页面源码来看,页面应该是前端渲染出来的,直接解析爬虫爬的话会比较麻烦。既然是前端渲染,那再看看请求吧,首页肯定是加载相册列表,没啥大用处,直接看加载具体某一相册的请求结果,点开某一相册,跳过图片,看看有没有什么可用的接口,果然有。

    复制出来,浏览器走起,请求后返回如下信息

    很明显是该相册的详细信息获取接口,可是怎么有些像是被编码过的东西。既然被编码了,解码出来瞧瞧,postman走起。postman顺利解析出结果

    上下翻翻看,发现了一个神奇的链接,是个zip压缩包,嗯,有点意思。

    下载回来解压,哈哈,居然是该相册的所有照片。

    看返回的结果,很明显使用了jsonp,于是接着试着减少参数,去除了返回结果中恼人的无用回掉前缀,最后简化到仅剩一个参数,id,这接口太呆萌了。

    此外还发现了网页上音乐的地址。

    至此该网站的“核心资产”已经被扒的底裤都没了,下面开始批量爬吧。

    爬虫思路

    有两种思路,一种是利用主页调用的获取相册列表参数接口来获得相册列表再通过列表爬压缩包地址,另外一种是直接从1开始依次尝试到首页最新的一个相册对应的id。最终决定采用第二种思路,因为这样即使首页隐藏的相册通过这种方式也能被发现。

    开搞,建数据库,数据表,为方便后续追加执行,以及放在服务器上爬,所以采用springboot配合异步调用来实现。一开始使用post方式进行调用,结果尝试抓取了一两百条后到数据库一看,怎么这么多重复的啊,而且怎么同一个id和我用postman直接调得到的结果不一致?很可能开反爬了。

    转变思路,postman采用的是get方式,所以程序试试也使用get方式进行调用,同时加入线程随机睡眠时间和User-Agent请求头,以此模拟普通用户的浏览器访问行为。bingo,顺利的抓取到了正确的图包名称、下载地址地址、音乐名称、音乐下载地址等信息。

    扔服务器上爬吧。等了大概十几分钟,爬完后总共获取到892条有效的图包记录,202条有效的音乐记录。

    爬到地址后可不能算结束,还得把真正的压缩包都下载回来,写个批量下载的方法,服务器走起,然后便开始吭哧吭哧的下载,速度还行,能接近7MB/S。

    [图片上传失败...(image-c1a451-1608169838153)]

    从上午11点开始到晚上9点下载完成,总共耗时10个小时,从服务器上全部下载回来吧。

    经过漫长的等待后,终于下载完,写了个脚本统计结果,最终:总共获取到了46187张图片,大小36.5GB。

    项目效果图:

    这下我的节操足足的了吧!害

    展开全文
  •  image_path.endswith('.jpg'), image_paths)) # 图片剪辑类 clip = ImageSequenceClip(image_paths, fps=fps) clip.write_videofile(output_path) 5、加入 BGM 背景音乐 将原始视频的音频文件设置到上一步生成...

    2、获取视频的音频文件及视频基础信息

    首先,根据原始视频,使用 moviepy构建一个VideoFileClip 对象,从而获取到视频的宽、高、帧率、时长等信息

    self.video_raw_clip = VideoFileClip(file_path)

    # 宽、高

    self.video_width, self.video_height = self.video_raw_clip.w, self.video_raw_clip.h

    # 帧率

    self.fps = self.video_raw_clip.fps

    # 视频时长

    self.during = self.video_raw_clip.duration

    接着,从视频中提取 BGM 音频对象,并写入到文件中

    def get_audio_from_video(video_raw_clip, output_path):

    """

    从视频中提取音频

    :param video_raw_clip: 视频Clip对象

    :param output_path: 输出音频文件完整路径

    :return:

    """

    audio = video_raw_clip.audio

    audio.write_audiofile(output_path)

    return output_path

    3、处理视频帧

    我们使用原始视频 Clip 对象的iter_frames() 方法,循环获取所有的视频帧图片

    需要指出的是,为了保证后面视频合成的便捷性,这里对视频帧的文件名按顺序进行命令

    i = 1

    for frame in self.video_raw_clip.iter_frames():

    image = Image.fromarray(frame)

    # 视频帧图片保存的临时路径(完整路径)

    frame_file_complete_path = self.path_temp + "%04d.jpg" % i

    i += 1

    视频每一帧都被裁剪成 9 张图片,我们可以显式指定图片之间的距离,然后计算出新画布的宽和高,最后绘制一个白底背景的图片

    # 1、剪成9张图片,计算每张图片的宽、高

    item_width = int(self.video_width / 3)

    item_height = int(self.video_height / 3)

    # 2、新的宽、高

    item_width_new = self.video_width + self.item_space * 2

    item_height_new = self.video_height + self.item_space * 2

    # 3、重新建一个画布背景

    new_image = Image.new(image.mode, (item_width_new, item_height_new),

    color='white')

    接着,获取每一块区域的坐标值,针对横向、纵向第 2、3 个图片区域加上间隔偏移,粘贴到上面新建的图片上即可

    # 4、裁剪图片,然后粘贴到新的画布中去

    # i:横向、j:纵向

    for i in range(0, 3):

    for j in range(0, 3):

    # 裁剪区域

    box = (j * item_width, i * item_height, (j + 1) * item_width, (i + 1) * item_height)

    # 根据区域,裁剪图片

    crop_image = image.crop(box)

    # 横向、纵向第2块和第3块,要加上偏移距离

    x = 0 if j == 0 else (item_width + self.item_space) * j

    y = 0 if i == 0 else (item_height + self.item_space) * i

    # 将9张图片,按照上面计算的坐标值,粘贴到背景中去

    new_image.paste(crop_image, (int(x), int(y)))

    # 保存图片到本地

    new_image.save(frame_file_complete_path)

    4、一篮子图片重新合成视频

    把上一步生成的帧图片,按照原视频的帧率转为视频

    需要注意的是,为了保证生成的视频不会错乱,最好对帧图片按照名称进行一次排序

    def pics_to_video(pics_path, output_path, fps):

    """

    图片转为视频

    pics_to_video('./../gif_temp/', './../video_temp/temp1.mp4', 20)

    :param pics_path:

    :param output_path:

    :return:

    """

    image_paths = list(map(lambda x: pics_path + x, os.listdir(pics_path)))

    # 注意:这里必须进行一次排序,保证所有帧的顺序是一致

    image_paths = sort_strings_with_emb_numbers(image_paths)

    # 过滤掉非图片

    image_paths = list(filter(lambda image_path: image_path.endswith('.jpg'), image_paths))

    # 图片剪辑类

    clip = ImageSequenceClip(image_paths,

    fps=fps)

    clip.write_videofile(output_path)

    5、加入 BGM 背景音乐

    将原始视频的音频文件设置到上一步生成的视频文件,然后写入一个新的文件中去

    def video_with_audio(path_video_raw, path_bgm_raw, output):

    """

    视频合成音频

    :return:

    """

    videoclip = VideoFileClip(path_video_raw)

    audioclip = AudioFileClip(path_bgm_raw)

    # 设置视频音频,并写入到文件中去

    videoclip.set_audio(audioclip).write_videofile(output,

    codec='libx264',

    audio_codec='aac',

    temp_audiofile='temp-audio.m4a',

    remove_temp=True

    )

    6、删除临时文件

    利用 shutil将上面视频处理的临时文件,包含帧图片、临时视频文件删除掉

    def remove_folder(file_path):

    """

    删除文件夹

    :param file_path:

    :return:

    """

    shutil.rmtree(file_path)

    # 删除临时文件

    remove_folder(self.path_temp)

    7、查看效果

    以东莞仔、渣哥、乌鸦的一段视频为例,最终处理后的效果如下:

    4.最后

    通过上面的一系列操作,我们实现了将一段视频处理成九宫格视频

    展开全文
  • clip = ImageSequenceClip(image_paths, fps=fps) clip.write_videofile(output_path) 5、加入 BGM 背景音乐 将原始视频的音频文件设置到上一步生成的视频文件,然后写入一个新的文件中去 def video_with_audio...

    1. 场景

    如果你经常刷抖音和微信朋友圈,一定发现了最近九宫格短视频很火!

    从朋友圈九宫格图片,到九宫格视频,相比传统的图片视频,前者似乎更有个性和逼格

    除了传统的剪辑软件可以实现,是否有其他更加快捷方便的方式?比如:一键生成,批量生成?

    废话不多说,本篇文章将大家使用 Python 一键生成九宫格短视频,优雅地帮你在朋友圈装一次逼!

    2.准备

    在开始实战之前,使用 pip 安装 2 个依赖,分别是:

    1、视频处理依赖 moviepy

    2、图片处理依赖 PIL

    # 安装两个依赖

    # 视频处理

    pip3 install moviepy

    # 图片处理依赖

    pip3 install Pillow

    3.实战一下

    在实战之前,先准备一段原始视频素材

    下面通过 6 个步骤,将原始视频转换为九宫格视频

    1、新建处理文件夹

    新建一个临时文件夹和一个视频输出文件夹

    def mkdir_folder(file_path):

    """

    创建一个文件夹,如果不存在就创建;否则不做处理

    :param file_path:

    :return:

    """

    if os.path.exists(file_path):

    return

    os.mkdir(file_path)

    # 新建临时文件夹和输出文件夹

    mkdir_folder(self.path_temp)

    mkdir_folder(self.path_output)

    2、获取视频的音频文件及视频基础信息

    首先,根据原始视频,使用 moviepy 构建一个 VideoFileClip 对象,从而获取到视频的宽、高、帧率、时长等信息

    self.video_raw_clip = VideoFileClip(file_path)

    # 宽、高

    self.video_width, self.video_height = self.video_raw_clip.w, self.video_raw_clip.h

    # 帧率

    self.fps = self.video_raw_clip.fps

    # 视频时长

    self.during = self.video_raw_clip.duration

    接着,从视频中提取 BGM 音频对象,并写入到文件中

    def get_audio_from_video(video_raw_clip, output_path):

    """

    从视频中提取音频

    :param video_raw_clip: 视频Clip对象

    :param output_path: 输出音频文件完整路径

    :return:

    """

    audio = video_raw_clip.audio

    audio.write_audiofile(output_path)

    return output_path

    3、处理视频帧

    我们使用原始视频 Clip 对象的 iter_frames() 方法,循环获取所有的视频帧图片

    需要指出的是,为了保证后面视频合成的便捷性,这里对视频帧的文件名按顺序进行命令

    i = 1

    for frame in self.video_raw_clip.iter_frames():

    image = Image.fromarray(frame)

    # 视频帧图片保存的临时路径(完整路径)

    frame_file_complete_path = self.path_temp + "%04d.jpg" % i

    i += 1

    视频每一帧都被裁剪成 9 张图片,我们可以显式指定图片之间的距离,然后计算出新画布的宽和高,最后绘制一个白底背景的图片

    # 1、剪成9张图片,计算每张图片的宽、高

    item_width = int(self.video_width / 3)

    item_height = int(self.video_height / 3)

    # 2、新的宽、高

    item_width_new = self.video_width + self.item_space * 2

    item_height_new = self.video_height + self.item_space * 2

    # 3、重新建一个画布背景

    new_image = Image.new(image.mode, (item_width_new, item_height_new),

    color='white')

    接着,获取每一块区域的坐标值,针对横向、纵向第 2、3 个图片区域加上间隔偏移,粘贴到上面新建的图片上即可

    # 4、裁剪图片,然后粘贴到新的画布中去

    # i:横向、j:纵向

    for i in range(0, 3):

    for j in range(0, 3):

    # 裁剪区域

    box = (j * item_width, i * item_height, (j + 1) * item_width, (i + 1) * item_height)

    # 根据区域,裁剪图片

    crop_image = image.crop(box)

    # 横向、纵向第2块和第3块,要加上偏移距离

    x = 0 if j == 0 else (item_width + self.item_space) * j

    y = 0 if i == 0 else (item_height + self.item_space) * i

    # 将9张图片,按照上面计算的坐标值,粘贴到背景中去

    new_image.paste(crop_image, (int(x), int(y)))

    # 保存图片到本地

    new_image.save(frame_file_complete_path)

    4、一篮子图片重新合成视频

    把上一步生成的帧图片,按照原视频的帧率转为视频

    需要注意的是,为了保证生成的视频不会错乱,最好对帧图片按照名称进行一次排序

    def pics_to_video(pics_path, output_path, fps):

    """

    图片转为视频

    pics_to_video('./../gif_temp/', './../video_temp/temp1.mp4', 20)

    :param pics_path:

    :param output_path:

    :return:

    """

    image_paths = list(map(lambda x: pics_path + x, os.listdir(pics_path)))

    # 注意:这里必须进行一次排序,保证所有帧的顺序是一致

    image_paths = sort_strings_with_emb_numbers(image_paths)

    # 过滤掉非图片

    image_paths = list(filter(lambda image_path: image_path.endswith('.jpg'), image_paths))

    # 图片剪辑类

    clip = ImageSequenceClip(image_paths,

    fps=fps)

    clip.write_videofile(output_path)

    5、加入 BGM 背景音乐

    将原始视频的音频文件设置到上一步生成的视频文件,然后写入一个新的文件中去

    def video_with_audio(path_video_raw, path_bgm_raw, output):

    """

    视频合成音频

    :return:

    """

    videoclip = VideoFileClip(path_video_raw)

    audioclip = AudioFileClip(path_bgm_raw)

    # 设置视频音频,并写入到文件中去

    videoclip.set_audio(audioclip).write_videofile(output,

    codec='libx264',

    audio_codec='aac',

    temp_audiofile='temp-audio.m4a',

    remove_temp=True

    )

    6、删除临时文件

    利用 shutil将上面视频处理的临时文件,包含帧图片、临时视频文件删除掉

    def remove_folder(file_path):

    """

    删除文件夹

    :param file_path:

    :return:

    """

    shutil.rmtree(file_path)

    # 删除临时文件

    remove_folder(self.path_temp)

    7、查看效果

    以东莞仔、渣哥、乌鸦的一段视频为例,最终处理后的效果如下:

    4.最后

    通过上面的一系列操作,我们实现了将一段视频处理成九宫格视频

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

    想要获取更多Python学习资料可以加QQ:2955637827私聊或加Q群630390733大家一起来学习讨论吧!

    展开全文
  • 制作QQ空间背景音乐链接,用网盘的外链地址
  • 我们使用的的音乐素材一般是立体声的效果,...答案是肯定的,今天的EDIUS教程就和大家一起看看如何制作单声道音乐吧!  首先我们来简单的了解下工程预设中有关音频的设置。我们先打开一个工程,然后在菜单中选择...
  • 我们使用的的音乐素材一般是立体声的效果,但...答案是肯定的,今天的EDIUS教程就和大家一起看看EDIUS如何制作单声道音乐吧!  首先我们来简单的了解下工程预设中有关音频的设置。我们先打开一个工程,然后在菜单...
  • 免费电子相册制作软件 怎样把照片制作成电子相册并加背景音乐?最近这几天某明星去世的消息可是传遍了哈,虽然不粉他,但是年纪轻轻就这样结束了生命还是觉得很可惜,关键粉丝也很是难过啊,每个人都有自己心爱的...
  • 调节插入的音乐的音量 第一步:选中开始音乐的图标, 然后点击更换皮肤 【▲图1】 第二步:单击“预览当前” 【▲图2】 第三步:进入预览界面,便可进行音量调节 【▲图3】 调节背景音乐的音量 ...
  • 三维动画公司在制作三维动画宣传片时所运用到的背景音乐通常都是以旋律为主,我们从网上也可以看到大部分宣传片制作的配音都是背景音乐搭配动画旁白。所谓以旋律为主的背景音乐即是没有歌词的纯音乐,众所周知音乐的...
  • 展开全部二维码中是无法直接存放视频、音乐、文档一类信息的,之所以有的二维码手机扫描后可62616964757a686964616fe58685e5aeb931333433633961以直接看视频听音乐,那是因为已经提前把视频或者音乐上传到网站服务器...
  • 想要知道网页如何制作,其实还是要先了解清楚你制作的网页主要用来干嘛的,或者说你制作的网页需要有怎样的效果。 1、清楚网页设计的任务 设计是一种审美活动,是为了保证作品具备一定的艺术气息,但是这个设计只能...
  • 在播放媒体文件时,媒体对象MediaObject 会在指定的时间间隔发射tick(qint64 time)信号, 这个时间间隔可以使用setTickInterval()来进行设置,tick()中的time参数指定了媒体对象在媒体流中的当前位置,单位是...
  • 无论是建设什么样的网站,都必须要重视网页设计,网页是一个网站的排面,只有网页设计好了才能够吸引更多的人,所以一定要重视网页设计的方式方法,其次就是需要了解制作网页的整个流程,这样才能够把网页设计的最...
  • 想要知道网页如何制作,其实还是要先了解清楚你制作的网页主要用来干嘛的,或者说你制作的网页需要有怎样的效果。 1、清楚网页设计的任务 设计是一种审美活动,是为了保证作品具备一定的艺术气息,但是这个设计只能...
  • 现在很多的朋友都喜欢将照片制作成视频,这样就可以发送到朋友圈啦~那么如何电脑制作电子相册呢?就是电脑怎么制作电子相册?此教程不是3d电子相册制作教程,而是将电脑本地的图片制作成电子相册哦。操作很简单,...
  • 很长一段时间以来,我一直希望将我对音乐的热情与我在人工智能方面的工作结合起来。...我觉得我需要先提高我的音乐制作技巧,然后再尝试深度学习这个过程。 由Nuevo.Studio设计...
  • 点击图片上方蓝色字体“慧天地”即可订阅本文由李真同学介绍利用普通智能手机制作周口市关帝庙全景虚拟现实漫游系统全过程,在满足用户足不出户游览景区的基础上,带给其身临其境的真实感受。制作过程如下01素材收集...
  • 之前介绍了一些星空,星轨的堆栈方法,还有利用堆栈制作“慢门风光”等,得到很多朋友的支持!首先要感谢大家,也有一些朋友问到,既然拍了那么多的“堆栈”图片,干嘛不分享一下如何制作延时摄影呢?也是哦,的确是...
  • 怎样制作网页,不是说一两篇文章能够说清楚的。以上介绍的是制作网页的主要纲要,希望能够给想要学习制作网页的朋友一个参考。 网页设计现需要什么 一、工具 1、空间 网页做好了肯定是要发表上网的,所以必须先申请...
  • 音乐播放器的简单制作,该资源主要讲解了怎样制作一个简单的音乐播放器,包括了其中的一些控件的使用
  • 今天小编就和大家讲讲怎样合理的进行网站的设计与开发。 网络经济大时代,互联网已经成为大家生活学习工作不可匮乏的一部分,非常多人从早上睁开眼睛开始,就拿起手机浏览新闻,做饭的时候利用互联网搜寻菜谱,在挤...
  • 摘要:本文以【唱吧】531麦霸音乐节为案例,具体解读了怎样导入自有数据到高德云图,并进行检索和展示。最后,调起高德mobile地图来进行路线规划和周边查询。 本案例能够应用在微信开发平台,支付宝公众服务上。...
  • 如果你在看一部电影,发现里面的背景音乐配音非常好听,想要下载把它放到手机上做铃声之类的,可是却找不到歌名叫什么?有什么办法找到呢?其实不用费心思去找,这里教给大家一个方法,可以利用迅捷视频转换器把它...
  • 男朋友的生日就要到了,送...分享:视频换背景音乐闺蜜相册制作下面咱一起来欣赏一下相册视频的效果先:效果很炫吧,不过视频里面的相片小编用的是一些生日祝福的图片太替代,当然你用什么照片都可以啦,小编只是教...
  • 怎样用word写音乐简谱

    千次阅读 2014-03-10 10:12:18
    原文地址:怎样用word写音乐简谱作者:焦作武陟新声艺术 Word虽然是一款普通的文字处理软件,但是,结合它自身的画图、域、上、下标等功能,完全可以制作出规范的简谱来。 1、调号的输入 对于调号(如1=F)这...
  • 怎样音乐喜欢的部分剪切出来保存呢?那么需要选择一款专业,操作简单的音频剪辑器?只要选对音乐剪辑工具才能轻松剪辑歌曲,下面一起学习下使用音乐剪辑器制作手机闹铃和手机铃声的方法。 准备工作: 操作系统:...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 167
精华内容 66
关键字:

怎样制作音乐