一、获取音频

先用https://github.com/zeakhold/xmlyfetcher下载音频。

npm install -g xmlyfetcher

二、切分音频一般方法

1,利用python pydub库切割mp3 https://blog.csdn.net/u014633966/article/details/85244347

pip install pydub

并安装ffmpeg
代码:

from pydub import AudioSegmenttmp = "aaa.mp3"
audio = AudioSegment.from_mp3(tmp)
audio[35*1000:45*1000].export("out.mp3", format="mp3")
print("finish")

对于mp3音乐,可行。
对于我的音频,不可行,报错如下。

Traceback (most recent call last):File ".\zjl周杰伦的可以切1.py", line 19, in <module>audio = AudioSegment.from_mp3(tmp)File "C:\Users\ASUS\Anaconda3\lib\site-packages\pydub\audio_segment.py", line 716, in from_mp3return cls.from_file(file, 'mp3', parameters=parameters)File "C:\Users\ASUS\Anaconda3\lib\site-packages\pydub\audio_segment.py", line 704, in from_filep.returncode, p_err))
pydub.exceptions.CouldntDecodeError: Decoding failed. ffmpeg returned error code: 1Output from ffmpeg/avlib:b"ffmpeg version git-2019-12-10-e73688e Copyright (c) 2000-2019 the FFmpeg developers\r\n  built with gcc 9.2.1 (GCC) 20191125\r\n  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf\r\n  libavutil      56. 36.101 / 56. 36.101\r\n  libavcodec     58. 64.101 / 58. 64.101\r\n  libavformat    58. 35.101 / 58. 35.101\r\n  libavdevice    58.  9.101 / 58.  9.101\r\n  libavfilter     7. 68.100 /  7. 68.100\r\n  libswscale      5.  6.100 /  5.  6.100\r\n  libswresample   3.  6.100 /  3.  6.100\r\n  libpostproc    55.  6.100 / 55.  6.100\r\n[mp3float @ 000001aa25db3040] Header missing\r\n    Last message repeated 657 times\r\n[mp3float @ 000001aa25db3040]
big_values too big\r\n[mp3float @ 000001aa25db3040] Error while decoding MPEG audio frame.\r\n[mp3float @ 000001aa25db3040] Header missing\r\n
等等

2,mp3splt 切分
用Python分割MP3音频文件
下载mp3splt 这里
代码:

import osos.system("mp3splt zjl.mp3 2.15 3.45 -o out.mp3")

切分周杰伦mp3音乐,可行。
我的音频,不可行,错误如下。

mp3splt 2.6.2 (09/11/14) - using libmp3splt 0.9.2Matteo Trotta <mtrotta AT users.sourceforge.net>Alexandru Munteanu <m AT ioalex.net>
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!warning: output format ambiguous (@t or @n missing)Processing file 'aaa.mp3' ...error: no plugin matches the file 'aaa.mp3'

3,直接用ffmpeg
ffmpeg 多个音频合并 截取 拆分
输入:

ffmpeg -i aaa.mp3 -vn -acodec copy -ss 00:00:00 -t 00:01:32 output.mp3

切分周杰伦mp3音乐,可行。
我的音频,不可行,错误如下。

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'aaa.mp3':Metadata:major_brand     : M4Aminor_version   : 1compatible_brands: isomiso2M4A mp42encoder         : Lavf58.20.100Duration: 00:05:09.47, start: 0.000000, bitrate: 64 kb/sStream #0:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 64 kb/s (default)Metadata:handler_name    : SoundHandler
[mp3 @ 0000015137cdbc80] Invalid audio stream. Exactly one MP3 audio stream is required.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Stream mapping:Stream #0:0 -> #0:0 (copy)Last message repeated 1 times

三、成功

使用ffmpeg,删除多余参数:

ffmpeg -i aaa.mp3 -ss 00:00:20 -t 00:01:00 output.mp3

成功。

  • ffmpeg 切分工具,需要加入环境变量
  • -i aaa.mp3 待切分文件
  • -ss 00:00:20 从00:00:20(时分秒)开始切分
  • -t 00:01:00 音频时长(而非截止位置)
  • output.mp3 输出文件

截取00:00:20~00:01:20 共60秒内容
http://ffmpeg.org/ffmpeg.html 这里为ffmpeg的一些文档。

-t duration (input/output)
When used as an input option (before -i), limit the duration of data read from the input file.
When used as an output option (before an output url), stop writing the output after its duration reaches duration.
duration must be a time duration specification, see (ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual.
-to and -t are mutually exclusive and -t has priority.

Stream mapping:Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
Output #0, mp3, to 'output.mp3':Metadata:major_brand     : M4Aminor_version   : 1compatible_brands: isomiso2M4A mp42TSSE            : Lavf58.35.101Stream #0:0(und): Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp (default)Metadata:handler_name    : SoundHandlerencoder         : Lavc58.64.101 libmp3lame
size=    1437kB time=00:01:32.01 bitrate= 127.9kbits/s speed=50.1x
video:0kB audio:1436kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.024069%
ffmpeg -i aaa.mp3 -ss 00:00:20 -to 00:01:00 output.mp3
  • -to 00:01:00 音频截止位置
    截取00:00:20~00:01:00 共40秒内容
ffmpeg -loglevel quiet -i aaa.mp3 -ss 00:00:22 -to 00:04:48 output.mp3
  • -loglevel quiet 沉默,不输出日志

四、编程

建议配套视频观看(见评论)
代码:

from pydub.utils import mediainfo
import osdef getLengthOfMp3(path):# 获取mp3的时间长度song = mediainfo(path)time_seconds = song['duration']time_seconds = int(float(time_seconds))minutes = time_seconds//60seconds = time_seconds%60return minutes, secondsdef minusTime(path, to_delete):# path文件位置# to_delete 待删除的时间长度(此处<60s,一般为20s)minutes, seconds = getLengthOfMp3(path)if seconds>=to_delete:# 能减完,如31s - 20sseconds = seconds - to_delete #去掉多余的else:# 否则,要借位min,如5m13s - 20sminutes -= 1seconds = 60+seconds-to_delete# 得4m53sminutes,seconds = str(minutes),str(seconds) #变成字符串minutes = minutes if len(minutes)==2 else "0"+minutes #保证两位seconds = seconds if len(seconds)==2 else "0"+secondsreturn "00:"+minutes+":"+secondsdef cutMp3(input, begin, end, output):# 剪切mp3# ffmpeg -i aaa.mp3 -ss 00:00:20 -to 00:01:00 output.mp3# 本项目音频不超过1小时# 前面22秒是广告,后面20秒也是广告order = "ffmpeg -loglevel quiet -i " + input + " -ss "+ begin + " -to "+end +" "+outputprint(order)os.system(order)# print("finish")def cutAll(base="F:/music音乐/xmly喜马拉雅/tmp", out_base="F:/music音乐/xmly喜马拉雅/output"):# 1~35集有广告for each in os.listdir(base):input = base + "/"+ eachoutput = out_base + "/"+ eachbegin = "00:00:00" #开始位置end = minusTime(input, 20) #找到截止位置,第2个参数为去除末尾广告时间cutMp3(input, begin, end, output)if __name__ == "__main__":# 批量剪辑cutAll()print("finish..")print("=="*30)print()if __name__ == "__main__2":# 只剪辑一个input = "aaa.mp3"output = "output.mp3"begin = "00:00:22" #开始位置end = minusTime(input,20) #截止位置cutMp3(input, begin, end, output)

B06.有意思的小东西 -切分音频mp3,过滤不感兴趣的部分相关推荐

  1. B07.python读写word表格 - 有意思的小东西

    文章目录 一.读取word表格 1.1 数据 1.2 代码 1.3 效果 二.写入word表格 2.1 代码 2.2 效果 三.推荐B系列 完整代码 [作者环境:win10,python3,word2 ...

  2. B02.有意思的小东西 - 辅助英文阅读【福利】

    视频链接:https://www.bilibili.com/video/av78176339 这东西绝对很有用,懂的人自然懂吧. 看英文系列[全]: 骚操作,妈妈再也不用担心我看英文文献了 - 1.功 ...

  3. B08.python智能盯盘 + 声音报警 - 有意思的小东西【黑科技】

    文章目录 一.对上证大盘进行盯盘 二.盯盘侠.bat 三.对外盘进行盯盘 适合人群:稍微有点python基础者,炒股或对金融感兴趣者. 一.对上证大盘进行盯盘 1,首先需要安装winsound, ea ...

  4. B01.有意思的小东西 - pdf转word【python实用工具】

    视频讲解链接:https://www.bilibili.com/video/av78175545 我的代码下载地址:https://github.com/JizhiXiang/simple-pdf2d ...

  5. 逻辑人渴望控制那些让他们感兴趣的东西

    逻辑人渴望控制那些让他们感兴趣的东西,而那些让他们感兴趣的都是些复杂的确定性系统.人是复杂的,但他们不像机器,他们的行为不具有逻辑性和可预见性.最好的机器是数字的,因为这样它就能变得最为复杂.精细,并 ...

  6. 炖猫汤音频mp3下载,撸猫神器吸猫神器小程序

    抖音炖猫汤: "炖猫汤 就是要先把猫打一顿,然后把它放入锅中,让它自己打开水龙头,把自己炖了.喝了这样的汤,以后被子不会再被尿了,沙发不会破了." 最近在抖音上火起来了一个炖猫汤的 ...

  7. android获取小程序音频时长,最新微信小程序获取音频时长与实时获取播放进度...

    #微信小程序获取音频时长与实时获取播放进度 在小程序官方文档中 audio 注意:1.6.0 版本开始,该组件不再维护.建议使用能力更强的 wx.createInnerAudioContext 接口 ...

  8. python批量音频转格式_GitHub - shede333/SWConvertVideoToAudio: Python批量转换 视频 为 音频MP3(即提取音频文件)...

    Python批量转换 视频 为 音频MP3(即提取音频文件) 输入文件格式:ffmpeg支持的视频文件 输出格式格式:mp3文件 使用方法: 注意:使用前需要先安装 ffmpeg 才行(Python最 ...

  9. 最新微信小程序获取音频时长与实时获取播放进度

    #微信小程序获取音频时长与实时获取播放进度 在小程序官方文档中 audio 注意:1.6.0 版本开始,该组件不再维护.建议使用能力更强的 wx.createInnerAudioContext 接口 ...

最新文章

  1. RabbitMQ学习系列(五): RPC 远程过程调用
  2. java 生成parquet文件格式,使用Java API将Parquet格式写入HDFS,而不使用Avro和MR
  3. hdu2846 字典树(带id的)
  4. 初探 NS_STRING_ENUM
  5. windows2019迁移FSMO
  6. 微软官方上线 Python 教程
  7. 【poj2096】Collecting Bugs 期望dp
  8. 如何判定耿耿数已经被bind过?
  9. java编程基础码_【Java编程的逻辑】编程基础
  10. 无监督降维 效果评价 trustworthiness measure
  11. 【114天】尚学堂高琪JAVA300篇视频精华笔记(1-6)
  12. Python 分类算法(1)——逻辑回归logistic regression之代码实现(2)
  13. 删除MacOS的升级文件
  14. Python爬虫(6):比Selenium快100倍的方法爬东方财富网财务报表
  15. Self-supervised Graph Learning for Recommendation
  16. ​食品领域排名靠前的品牌咨询公司塔望/华与华等服务优势对比​
  17. Dev C++ 安装教程(图文)
  18. 木棉花开,送给所有女孩和女人
  19. 酷家乐一面、二面、三面面经,中电海康一面
  20. 怎样将图片的背景色换成透明的?怎么让白底图片变透明?

热门文章

  1. 什么是“孤岛效应”? ----防孤岛保护装置
  2. java小游戏2048实现
  3. 修复电脑蓝屏(电脑自动修复失败)
  4. memcpy函数是怎么样实现的
  5. 计算机网络(二):HTTP 和 HTTPS
  6. MYSQL函数 group_concat巨坑!!!
  7. vue使用javascript动态创建script - 动态引入外部js文件
  8. 关于ITSS的一切都在这里。。。。换证 、延续、····
  9. vim编辑器显示字体颜色
  10. 前端进阶_狂神Vue笔记_语法指令v-bind、v-on、v-for_表单双绑_组件_Axios异步通信_Vue的生命周期_计算属性_插槽 <slot>_webpack使用_vue-router路由