如何从MP4视频文件中抽取MP3音频?
简 介: 为了能够处理视频中的音频,测试了两种提取视频中的音频方法。一种是利用格式工程软件另外一种利用ffmpeg软件。
关键词
: 视频文件,音频文件,mp4,mp3
Contents
厂提取音频
提取音频
§01 提取音频
1.1 视频来源
今天在微信中友人给我发送了一段有趣的视频。这段视频演示了清新优雅的弹拨乐来自于饭盒上的九条橡皮筋,令人不禁感慨飞花摘叶皆可伤人,草木竹石均可为剑,诚不我欺也.
▲ 图1 饭盒、筷子、橡皮筋
现在留下一个问题:
- 这段音乐中各个音符对应的频率是多少?
- 在一定的假设下,各个橡皮筋对应的振动频率是否满足音乐音节要求?
1.2 音频提取
为了回答上面的问题,第一步需要从MP4
文件中将视频音频提取出来。可以使用 格式工厂(Format Factory) 完成音频数据的提取。
1.2.1 利用格式工厂提取音频
(1)下载格式工程软件
从 格式工厂(Format Factory) 下载最新版本软件并进行安装。
▲ 图1.2.1 安装Format Factory软件
(2)分离视频文件中音频
利用软件中的 “ ->MP3” 将MP4
文件中的音频分离出来。
▲ 图1.2.2 利用Format Factory分离MP3
(3)音频预处理
利用 Audacity 软件对分离的MP3
的音频文件进行预处理。
利用软件中的特效中增幅对于原来音频波形进行放大。如下是放大后的音频波形。
▲ 图1.2.3 利用Audacity 对音频文件进行预处理
1.2.2 利用moviepy提取音频
在bing中利用“python extract MP4 sounds” 搜索,可以获得如下一篇博文:
- How to Extract Audio from Video files (Mp3 From Mp4)
博文中给出了应用 moviepy
来提取视频中的音频数据。
(1)处理软件
from headm import * # =from moviepy.editor import *def mp4tomp3(mp4file, mp3file):videoclip = VideoFileClip(mp4file)audioclip = videoclip.audioaudioclip.write_audiofile(mp4file)audioclip.close()videoclip.close()mp4filename = r'D:\Temp\WeChat_20220213170345.mp4'
mp3filename = mp4filename.split('.')[0] + '.mp3'
printt(mp4filename|, mp3filename:)mp4tomp3(mp4filename, mp3filename)
(2)运行错误
运行之后出现了错误:
---------- [PYTHON INFOR] ----------
MoviePy - Writing audio in D:\Temp\WeChat_20220213170345.mp4
chunk: 0%| | 0/507 [00:00<?, ?it/s, now=None]
chunk: 0%| | 0/507 [00:00<?, ?it/s, now=None]chunk: 4%|▉ | 21/507 [00:00<00:02, 209.99it/s, now=None]Traceback (most recent call last):File "C:\Users\zhuoqing\Anaconda3\lib\site-packages\moviepy\audio\io\ffmpeg_audiowriter.py", line 74, in write_framesself.proc.stdin.write(frames_array.tobytes())
BrokenPipeError: [Errno 32] Broken pipe
During handling of the above exception, another exception occurred:
Traceback (most recent call last):File "D:\Temp\TEMP0001\test1.PY", line 25, in <module>mp4tomp3(mp4filename, mp3filename)File "D:\Temp\TEMP0001\test1.PY", line 15, in mp4tomp3audioclip.write_audiofile(mp4file)File "<C:\Users\zhuoqing\Anaconda3\lib\site-packages\decorator.py:decorator-gen-45>", line 2, in write_audiofileFile "C:\Users\zhuoqing\Anaconda3\lib\site-packages\moviepy\decorators.py", line 54, in requires_durationreturn f(clip, *a, **k)File "C:\Users\zhuoqing\Anaconda3\lib\site-packages\moviepy\audio\AudioClip.py", line 210, in write_audiofilelogger=logger)File "<C:\Users\zhuoqing\Anaconda3\lib\site-packages\decorator.py:decorator-gen-9>", line 2, in ffmpeg_audiowriteFile "C:\Users\zhuoqing\Anaconda3\lib\site-packages\moviepy\decorators.py", line 54, in requires_durationreturn f(clip, *a, **k)File "C:\Users\zhuoqing\Anaconda3\lib\site-packages\moviepy\audio\io\ffmpeg_audiowriter.py", line 170, in ffmpeg_audiowritewriter.write_frames(chunk)File "C:\Users\zhuoqing\Anaconda3\lib\site-packages\moviepy\audio\io\ffmpeg_audiowriter.py", line 117, in write_framesraise IOError(error)
OSError: [Errno 32] Broken pipe
MoviePy error: FFMPEG encountered the following error while writing file D:\Temp\WeChat_20220213170345.mp4:
b"Invalid encoder type 'libx264'\r\n"
In case it helps, make sure you are using a recent version of FFMPEG (the versions in the Ubuntu/Debian repos are deprecated).Exception ignored in: <function FFMPEG_AudioWriter.__del__ at 0x0000000017880268>
Traceback (most recent call last):File "C:\Users\zhuoqing\Anaconda3\lib\site-packages\moviepy\audio\io\ffmpeg_audiowriter.py", line 132, in __del__self.close()File "C:\Users\zhuoqing\Anaconda3\lib\site-packages\moviepy\audio\io\ffmpeg_audiowriter.py", line 121, in closeself.proc.stdin.close()
OSError: [Errno 22] Invalid argument
这说明一个问题,需要软件中正确安装FFMPEG软件。
这个问题在 Python extract wav from video file 也被网友提到过,如何能够避免使用ffmpeg。
My question is how could I extract wav audio track from video file, say video.avi? I read many articles and everywhere people suggest to use (from Python) ffmpeg as a subprocess (because there are no reliable python bindings to ffmpeg - the only hope was PyFFmpeg but i found it is unmaintaned now). I don’t know if it is right solution and i am looking for good one.
I looked to gstreamer and found it nice but unable to satisfy my needs – the only way I found to accomplish this from command line looks like、
这个情况在网友使用过程中都发现必须安装FFMPEGA,比如 一段把mp4中的音频提取并保存在原目录的python脚本 。
▲ 图1.2.4 绕不开的ffmpeg软件
甚至在 Extract MP3 audio from Videos using a Python script 将 ffmpeg又重新包装成函数被调用来获取MP4中的音频数据。
1.2.3 安装ffmpeg
既然绕不开,那么就安装ffmpeg软件。 在 How to Install FFmpeg on Windows 给出了安装ffmpeg的方法。
(1)下载ffmpeg
在 ffmpeg官方网站 : https://ffmpeg.org/download.html 下载所需要的软件版本。
▲ 图1.2.5 FFMPEG 官方下载软件
下面给出了两个Windows EXE files下载链接:
- Windows builds from gyan.dev
- Windows builds by btbN
不清楚这两个版本有什么差别,现在选择第一个:builds from gyan.dev。
▲ 图1.2.6 选择Windows EXE 版本
▲ 图1.2.7 选择下载发行版本
下载后是一个ZIP压缩文件:
- D:\Temp\ffmpeg-5.0-essentials_build.zip
(2)解压缩文件
利用 Windows 版本的 Bandizip 对其进行加压缩。
解压缩有产生ffmpeg目录,其中包含有bin 目录,其中包含有ffmpeg.exe可执行文件。
└─ffmpeg-5.0-essentials_build│ LICENSE│ README.txt├─bin│ ffmpeg.exe│ ffplay.exe│ ffprobe.exe├─doc│ bootstrap.min.css│ default.css│ developer.html│ faq.html│ fate.html│ ffmpeg-all.html│ ffmpeg-bitstream-filters.html│ ffmpeg-codecs.html│ ffmpeg-devices.html│ ffmpeg-filters.html│ ffmpeg-formats.html│ ffmpeg-protocols.html│ ffmpeg-resampler.html│ ffmpeg-scaler.html│ ffmpeg-utils.html│ ffmpeg.html│ ffplay-all.html│ ffplay.html│ ffprobe-all.html│ ffprobe.html│ general.html│ git-howto.html│ libavcodec.html│ libavdevice.html│ libavfilter.html│ libavformat.html│ libavutil.html│ libswresample.html│ libswscale.html│ mailing-list-faq.html│ nut.html│ platform.html│ style.min.css└─presetslibvpx-1080p.ffpresetlibvpx-1080p50_60.ffpresetlibvpx-360p.ffpresetlibvpx-720p.ffpresetlibvpx-720p50_60.ffpreset
(3)添加环境变量
将 ffmpeg
的bin
添加在 系统设置 中的 path 变量中。通过编辑可以将 bin目录粘贴在 path 最后。中间使用分号“;”隔开。
▲ 图1.2.8 设置系统的环境变量
(4)测试FFMPEG
利用下面的命令提取视频中的音频:
ffmpeg -i music.mp4 music.wav
ffmpeg -i music.mp4 music.mp3
上面两个命令可以分别产生 music.wav, music.mp3文件。
※ 提取总结 ※
为了能够处理视频中的音频,测试了两种提取视频中的音频方法。一种是利用格式工程软件另外一种利用ffmpeg软件。
■ 相关文献链接:
- 格式工厂(Format Factory)
- How to Extract Audio from Video files (Mp3 From Mp4)
- Python extract wav from video file
- 一段把mp4中的音频提取并保存在原目录的python脚本
- Extract MP3 audio from Videos using a Python script
- How to Install FFmpeg on Windows
- ffmpeg官方网站
- Windows 版本的 Bandizip
● 相关图表链接:
- 图1 饭盒、筷子、橡皮筋
- 图1.2.1 安装Format Factory软件
- 图1.2.2 利用Format Factory分离MP3
- 图1.2.3 利用Audacity 对音频文件进行预处理
- 图1.2.4 绕不开的ffmpeg软件
- 图1.2.5 FFMPEG 官方下载软件
- 图1.2.6 选择Windows EXE 版本
- 图1.2.7 选择下载发行版本
- 图1.2.8 设置系统的环境变量
如何从MP4视频文件中抽取MP3音频?相关推荐
- mp4视频文件如何转为MP3音频文件
mp4视频文件如何转为MP3音频文件 工具介绍 我们可以使用到一个网页版的转换器,这款转换器在未登录的情况下,最大支持100M的大文件上传并转换,如果通过注册,可以支持无限大小的支持,但是这个注册需要 ...
- 如何将MP4视频文件转换成MP3音频格式
2018年11月9日,美国漫威影业公司的大作<毒液:致命守护者>开始在中国上映,作为漫威在2018年最后的压轴巨作自然是非常不错的.在影片中很多激斗的场景也有共生体和宿主之间的对话,但是电 ...
- ffmpeg批量提取mp4视频文件中的音频
1.新建一个txt文件,并复制如下代码进入,然后保存. @echo off & titlecd /d %~dp0for %%a in (*.mp4) do (ffmpeg -i "% ...
- ffmpeg批量去掉mp4视频文件中的音频,仅保留视频
1.新建一个txt文件,并复制如下代码进入,然后保存. @echo off & titlecd /d %~dp0for %%a in (*.mp4) do (ffmpeg -i "% ...
- dede织梦编辑器中插入mp4视频文件方法
dede织梦编辑器中插入****mp4****视频文件方法 场景: 织梦建站的时候 上传mp4视频不成功 思路: a. 登录后台->系统->系统基本参数->附件设置 查 允许上传的文 ...
- 常用MIME类型,解决IIS布署后字体文件、mp4视频文件等not found 的错误
前言:项目在本地运行正常,但部署在IIS服务器后使用浏览器访问项目会报:404 not found 错误,包括mp4视频文件和woff文件找不到..如下 原因:在IIS中没有将 .mp4和 .woff ...
- 使用ffmpeg从视频文件中提取音频文件、视频抽帧和切割视频
目录 ffmpeg下载 使用ffmpeg从视频文件中提取音频文件 批量提取文件夹下多个视频文件的音频 使用ffmpeg从视频文件中提取视频帧 使用ffmpeg将按固定时长将视频切割成多个小片段 将分割 ...
- atitit.mp4 视频文件多媒体格式结构详解
atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个"box"组成的,2 4. 典型简化mp43 5. Fragm ...
- (转载)[FFmpeg]使用ffmpeg从各种视频文件中直接截取视频图片
你曾想过从一个视频文件中提取图片吗?在Linux下就可以,在这个教程中我将使用ffmpeg来从视频中获取图片. 什么是ffmpeg?What is ffmpeg? ffmpeg是一个非常有用的命令行程 ...
最新文章
- python selenium error “Geckodriver executable needs to be in PATH”
- 阿里达摩院再造AI抗疫技术:20秒判读CT影像,识别准确率达96%
- 寄存器理解 及 X86汇编入门
- maven将xml文件一起打包
- [MicroPython]TPYBoard v102 CAN总线通信
- 学习大数据看门的几本书
- pjtool用到的数据库----oracle范畴
- 转:[kipmi0]进程导致系统负载高
- [码海拾贝 之JS] JS 之删除数组中的元素
- python读取文件路径中有中文_转 python 读取中文文件名/中文路径
- TLS(Thread Local Storage)问题demo
- OpenCV版本与EmguCV版本匹配问题
- canoe和python_CANoe开发从入门到精通
- 视频编辑软件(Nero Video2021中文版) v23.0.1.12pjb
- 如何将Python程序打包成linux可执行文件
- 自制力差?!教你强迫自己学习
- 百度1+x计算机视觉证书题库
- 解读生活中的常用的IC卡
- html css支付页面弹出密码框,html5仿支付宝密码框的实现代码
- 用计算机研究脑电波,可用于计算机硬盘识别及脑电波测量的量子传感器【中国科讯】...
热门文章
- Navisworks Api Quantification
- Redisbook学习笔记(1)跳跃表
- 设计模式(六)命令模式
- Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控
- 关于“插入图片”等功能无法使用的问题
- yii框架学习(五)get、post请求如何接收请求参数
- 知乎社区核心业务 Golang 化实践
- 20155328 《信息安全系统设计基础》 课程总结
- Laravel: 基础篇
- 《Adobe Flash CS4中文版经典教程》——1.7 使用“工具”面板