Python从视频中提取音频的操作

简介

OpenCV中使用VideoCapture类写的视频是没有音频的,如果要进一步处理音频则需要用到一个库——MoviePy,这个库是Python视频编辑库,可裁剪、拼接、标题插入、视频合成、视频处理和自定义效果。

安装

pip install moviepy

代码

from moviepy.editor import *
video = VideoFileClip('test.mp4')
audio = video.audio
audio.write_audiofile('test.mp3')

不安装moviepy视频编辑库可以直接使用ffmpeg-python库,见参考文献4,代码稍微复杂点

音频格式

extensions_dict = { "mp4": {'type':'video', 'codec':['libx264','libmpeg4', 'aac']},
          'ogv': {'type':'video', 'codec':['libtheora']},
          'webm': {'type':'video', 'codec':['libvpx']},
          'avi': {'type':'video'},
          'mov': {'type':'video'},
          'ogg': {'type':'audio', 'codec':['libvorbis']},
          'mp3': {'type':'audio', 'codec':['libmp3lame']},
          'wav': {'type':'audio', 'codec':['pcm_s16le', 'pcm_s24le', 'pcm_s32le']},
          'm4a': {'type':'audio', 'codec':['libfdk_aac']}
         }

可看到支持ogg、mp3、wav和m4a四种格式,个人测试m4a输出失败,建议只用mp3和wav

测试2分钟的视频导出mp3为1.83Mb,wav为20.1Mb

mp3是有损格式,wav是无损格式,按需选择

备注

要实现更底层的音视频处理应用ffmpeg

补充:python处理mp4视频提取音频转为mp3或者wav,并进行截取

mp4视频文件提取音频转为mp3或者wav文件

mp3是有损文件,wav是无损文件,就像我测试的视频,mp3导出只有几十k,wav文件导出有3M多。

from moviepy.editor import *
video = VideoFileClip('aa.mp4')
audio = video.audio
audio.write_audiofile('test.wav')
audio.write_audiofile('test.mp3')

截取map或者wav文件

from scipy.io import wavfile
like = wavfile.read('test.wav')
# print (like)
# 音频结果将返回一个tuple。第一维参数是采样频率,单位为秒;第二维数据是一个ndarray表示歌曲,如果第二维的ndarray只有一个数据表示单声道,两个数据表示立体声。所以,通过控制第二维数据就能对歌曲进行裁剪。
# 对like这个元组第二维数据进行裁剪,所以是like[1];第二维数据中是对音乐数据切分。 start_s表示你想裁剪音频的起始时间;同理end_s表示你裁剪音频的结束时间。乘44100 是因为每秒需要进行44100次采样
# 这里表示对该音频的13-48秒进行截取
wavfile.write('test2.wav',44100,like[1][13*44100:48*44100])

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Python通过m3u8文件下载合并ts视频的操作

    前段时间,接到一个需求,要求下载某一个网站的视频,然后自己从网上查阅了相关的资料,在这里做一个总结. 1. m3u8文件 m3u8是苹果公司推出一种视频播放标准,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般存在服务器的内存中),通过m3u8解析出来路径,然后去请求,是现在比较流行的一种加载方式.目前,很多新闻视频网站都是采用这种模式去加载视频. M3U8文件是指UTF-8编码格式的M3U文件.M3U文件是记录了一个索引纯文本

  • python爬取梨视频生活板块最热视频

    完整代码如下: import requests from lxml import etree import random import os from multiprocessing.dummy import Pool if not os.path.exists('./视频'): os.mkdir('./视频') urls=[] url='https://www.pearvideo.com/category_5' headers={'user-agent':'Mozilla/5.0 (Windo

  • Python+uiautomator2实现自动刷抖音视频功能

    工具准备 Python3.7.7 adb(Android debug bridge) uiautomatorviewer 安装adb 官网地址:https://developer.android.google.cn/studio/command-line/adb 下载好解压后设置环境变量即可 安装uiautomatorviewer 参照此篇文章:https://www.cnblogs.com/corsacsherry/p/10609339.html 调试工具 手机通过USB连接到电脑上开启开发者

  • 教你如何使用Python下载B站视频的详细教程

    前言 众所周知,网页版的B站无法下载视频,然本人喜欢经常在B站学习,奈何没有网时,无法观看视频资源,手机下载后屏幕太小又不想看,遂写此程序以解决此问题 步骤 话不多说,进入正题 1.在电脑上下载python的开发环境,点一下,观看具体步骤 2.下载pycharm开发工具,点一下观看具体步骤 3.同时按键盘上的win键与r键,在弹出的对话框中输入cmd 点击确定进入cmd命令行,在里面输入pip install you-get,之后按键盘enter键,进行you-get的下载,下载完后退出cmd

  • 如何用python反转图片,视频

    利用python反转图片/视频 准备:一张图片/一段视频 python库:Pillow,moviepy 安装库 pip install Pillow -i https://mirrors.aliyun.com/pypi/simple pip install moviepy -i https://mirrors.aliyun.com/pypi/simple 默认官方镜像源,我这里尝试的时候没有任何进度.切换到国内的源,比如阿里镜像,清华镜像即可.第一次使用国内源,简直是神速! 反转效果 反转后 实

  • 用Python制作灯光秀短视频的思路详解

    一.引言 2021年4月8日武汉重启一周年,这是个值得庆祝的日子,作为一个武汉人和一个死宅程序员,老猿也想在这个日子留下点什么.想起武汉长江两岸的灯光秀,顿时有了主意,那就用程序实现一个武汉重启庆祝的灯光秀短视频吧,于是在4月7日晚开始构思和着手开发,4月8日晚终于顺利完成,并且通过使用OpenCV.OpenCV+Moviepy两种方式进行了实现. 本文介绍结合Python+OpenCV+Moviepy实现的思路和过程,Python+OpenCV实现的思路和过程将在另外的博文中单独介绍. 二.实

  • python基于tkinter制作m3u8视频下载工具

    这是我为了学习tkinter用python 写的一个下载m3u8视频的小程序,程序使用了多线程下载,下载后自动合并成一个视频文件,方便播放. 目前的众多视频都是m3u8的播放类型,只要知道视频的m3u8地址,就可以完美下载整个视频. m3u8地址获取 打开浏览器,点开你要获取地址的视频 重要的来了,右键>>审查元素或者按F12也可以 根据开发或测试的实际环境选择相应的设备,选择iphone6 plus 选择好了以后,刷新页面,点击漏斗,选择media,一定刷新之后再点击,没出来的话切换几下选项

  • 用python制作词云视频详解

    使用到的第三方库 Package Version --------------- --------- baidu-aip 2.2.18.0 jieba 0.42.1 moviepy 1.0.3 numpy 1.20.2 opencv-python 4.5.1.48 Pillow 8.2.0 requests 2.25.1 wordcloud 1.8.1 you-get 0.4.1520 B站弹幕爬取 思路 通过视频BV号请求cid,再使用cid请求弹幕文件,最后使用正则表达式去匹配弹幕文本,将匹

  • Python使用UDP实现720p视频传输的操作

    1. 项目背景 视频传输: 在一台电脑上播放视频(捕捉摄像头画面),同局域网内另一台电脑上实时播放,尽量不卡顿. 先放最后的照片,和用gif展示一下视频效果. 传输视频可以采取图片或者流的形式,本文采取传输图片的形式,在1s之内显示多张图片从而形成连续的视频画面. 经费有限,所有实验均基于笔记本电脑. 使用的视频源是本机摄像头,以及进击的巨人720p资源. 2. 解决方案 1. 使用Python的Socket,使用opencv捕捉摄像头/视频的画面. 2. 原始的图片很大(720p的大小是192

  • Python爬虫之爬取哔哩哔哩热门视频排行榜

    一.bs4解析 import requests from bs4 import BeautifulSoup import datetime if __name__=='__main__': url = 'https://www.bilibili.com/v/popular/rank/all' headers = { //设置自己浏览器的请求头 } page_text=requests.get(url=url,headers=headers).text soup=BeautifulSoup(pag

  • 写一个Python脚本自动爬取Bilibili小视频

    我身边的很多小伙伴们在朋友圈里面晒着出去游玩的照片,简直了,人多的不要不要的,长城被堵到水泄不通,老实人想想啊,既然人这么多,哪都不去也是件好事,没事还可以刷刷 B 站 23333 .这时候老实人也有了一个大胆地想法,能不能让这些在旅游景点排队的小伙伴们更快地打发时间呢?考虑到视频的娱乐性和大众观看量,我决定对 B 站新推出的小视频功能下手,于是我跑到B站去找API接口,果不起然,B站在小视频功能处提供了 API 接口,小伙伴们有福了哟! B 站小视频网址在这里哦: http://vc.bili

随机推荐