简 介: 为了能够处理视频中的音频,测试了两种提取视频中的音频方法。一种是利用格式工程软件另外一种利用ffmpeg软件。

关键词视频文件音频文件mp4mp3

#mermaid-svg-sPs0isryqtLTjZyg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sPs0isryqtLTjZyg .error-icon{fill:#552222;}#mermaid-svg-sPs0isryqtLTjZyg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sPs0isryqtLTjZyg .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-sPs0isryqtLTjZyg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sPs0isryqtLTjZyg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sPs0isryqtLTjZyg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sPs0isryqtLTjZyg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sPs0isryqtLTjZyg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sPs0isryqtLTjZyg .marker.cross{stroke:#333333;}#mermaid-svg-sPs0isryqtLTjZyg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sPs0isryqtLTjZyg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-sPs0isryqtLTjZyg .cluster-label text{fill:#333;}#mermaid-svg-sPs0isryqtLTjZyg .cluster-label span{color:#333;}#mermaid-svg-sPs0isryqtLTjZyg .label text,#mermaid-svg-sPs0isryqtLTjZyg span{fill:#333;color:#333;}#mermaid-svg-sPs0isryqtLTjZyg .node rect,#mermaid-svg-sPs0isryqtLTjZyg .node circle,#mermaid-svg-sPs0isryqtLTjZyg .node ellipse,#mermaid-svg-sPs0isryqtLTjZyg .node polygon,#mermaid-svg-sPs0isryqtLTjZyg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-sPs0isryqtLTjZyg .node .label{text-align:center;}#mermaid-svg-sPs0isryqtLTjZyg .node.clickable{cursor:pointer;}#mermaid-svg-sPs0isryqtLTjZyg .arrowheadPath{fill:#333333;}#mermaid-svg-sPs0isryqtLTjZyg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-sPs0isryqtLTjZyg .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-sPs0isryqtLTjZyg .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-sPs0isryqtLTjZyg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-sPs0isryqtLTjZyg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-sPs0isryqtLTjZyg .cluster text{fill:#333;}#mermaid-svg-sPs0isryqtLTjZyg .cluster span{color:#333;}#mermaid-svg-sPs0isryqtLTjZyg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-sPs0isryqtLTjZyg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

提取音频
目 录
Contents
视频来源
音频提取
利用格式工
厂提取音频
利用moviepy
提取音频
安装ffmpeg
提取总结

§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)添加环境变量

  将 ffmpegbin 添加在 系统设置 中的 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音频?相关推荐

  1. mp4视频文件如何转为MP3音频文件

    mp4视频文件如何转为MP3音频文件 工具介绍 我们可以使用到一个网页版的转换器,这款转换器在未登录的情况下,最大支持100M的大文件上传并转换,如果通过注册,可以支持无限大小的支持,但是这个注册需要 ...

  2. 如何将MP4视频文件转换成MP3音频格式

    2018年11月9日,美国漫威影业公司的大作<毒液:致命守护者>开始在中国上映,作为漫威在2018年最后的压轴巨作自然是非常不错的.在影片中很多激斗的场景也有共生体和宿主之间的对话,但是电 ...

  3. ffmpeg批量提取mp4视频文件中的音频

    1.新建一个txt文件,并复制如下代码进入,然后保存. @echo off & titlecd /d %~dp0for %%a in (*.mp4) do (ffmpeg -i "% ...

  4. ffmpeg批量去掉mp4视频文件中的音频,仅保留视频

    1.新建一个txt文件,并复制如下代码进入,然后保存. @echo off & titlecd /d %~dp0for %%a in (*.mp4) do (ffmpeg -i "% ...

  5. dede织梦编辑器中插入mp4视频文件方法

    dede织梦编辑器中插入****mp4****视频文件方法 场景: 织梦建站的时候 上传mp4视频不成功 思路: a. 登录后台->系统->系统基本参数->附件设置 查 允许上传的文 ...

  6. 常用MIME类型,解决IIS布署后字体文件、mp4视频文件等not found 的错误

    前言:项目在本地运行正常,但部署在IIS服务器后使用浏览器访问项目会报:404 not found 错误,包括mp4视频文件和woff文件找不到..如下 原因:在IIS中没有将 .mp4和 .woff ...

  7. 使用ffmpeg从视频文件中提取音频文件、视频抽帧和切割视频

    目录 ffmpeg下载 使用ffmpeg从视频文件中提取音频文件 批量提取文件夹下多个视频文件的音频 使用ffmpeg从视频文件中提取视频帧 使用ffmpeg将按固定时长将视频切割成多个小片段 将分割 ...

  8. atitit.mp4 视频文件多媒体格式结构详解

    atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个"box"组成的,2 4. 典型简化mp43 5. Fragm ...

  9. (转载)[FFmpeg]使用ffmpeg从各种视频文件中直接截取视频图片

    你曾想过从一个视频文件中提取图片吗?在Linux下就可以,在这个教程中我将使用ffmpeg来从视频中获取图片. 什么是ffmpeg?What is ffmpeg? ffmpeg是一个非常有用的命令行程 ...

最新文章

  1. python selenium error “Geckodriver executable needs to be in PATH”
  2. 阿里达摩院再造AI抗疫技术:20秒判读CT影像,识别准确率达96%
  3. 寄存器理解 及 X86汇编入门
  4. maven将xml文件一起打包
  5. [MicroPython]TPYBoard v102 CAN总线通信
  6. 学习大数据看门的几本书
  7. pjtool用到的数据库----oracle范畴
  8. 转:[kipmi0]进程导致系统负载高
  9. [码海拾贝 之JS] JS 之删除数组中的元素
  10. python读取文件路径中有中文_转 python 读取中文文件名/中文路径
  11. TLS(Thread Local Storage)问题demo
  12. OpenCV版本与EmguCV版本匹配问题
  13. canoe和python_CANoe开发从入门到精通
  14. 视频编辑软件(Nero Video2021中文版) v23.0.1.12pjb
  15. 如何将Python程序打包成linux可执行文件
  16. 自制力差?!教你强迫自己学习
  17. 百度1+x计算机视觉证书题库
  18. 解读生活中的常用的IC卡
  19. html css支付页面弹出密码框,html5仿支付宝密码框的实现代码
  20. 用计算机研究脑电波,可用于计算机硬盘识别及脑电波测量的量子传感器【中国科讯】...

热门文章

  1. Navisworks Api Quantification
  2. Redisbook学习笔记(1)跳跃表
  3. 设计模式(六)命令模式
  4. Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控
  5. 关于“插入图片”等功能无法使用的问题
  6. yii框架学习(五)get、post请求如何接收请求参数
  7. 知乎社区核心业务 Golang 化实践
  8. 20155328 《信息安全系统设计基础》 课程总结
  9. Laravel: 基础篇
  10. 《Adobe Flash CS4中文版经典教程》——1.7 使用“工具”面板