python mp4提取音频_Python从视频文件中提取wav

有关:

我的问题是如何从视频文件中提取wav音轨,比如video.avi?

我阅读了很多文章,并且人们建议使用(来自Python)ffmpeg作为子进程(因为没有可靠的python绑定到ffmpeg – 唯一的希望是PyFFmpeg,但我发现它现在没有维护).我不知道这是不是正确的解决方案,我正在寻找一个好的解决方案.

我看了gstreamer并发现它很好但无法满足我的需求 – 我发现从命令行完成此操作的唯一方法就像

gst-launch-0.10 playbin2 uri=file://`pwd`/ex.mp4 audio-sink='identity single-segment=true ! audioconvert ! audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)16000, channels=(int)1 ! wavenc ! filesink location=foo.wav’

但它效率不高,因为我需要在播放视频和同时写入wav文件时等待.

ffmpeg要好得多:

avconv -i foo.mp4 -ab 160k -ac 1 -ar 16000 -vn ffaudio.wav

但我无法从python启动它(不是作为命令行子进程).能否指出我从python启动ffmpeg作为命令行实用程序的优点和缺点? (我的意思是使用python多处理模块或类似的东西).

第二个问题.

什么是简单的方法将长wav文件切成碎片,这样我就不会破坏任何单词?我的意思是句子/单词在暂停期间开始和结束的长度为10-20秒的片段?

我知道如何在任意作品上打破它们:

import wave

win= wave.open('ffaudio.wav', 'rb')

wout= wave.open('ffsegment.wav', 'wb')

t0, t1= 2418, 2421 # cut audio between 2413, 2422 seconds

s0, s1= int(t0*win.getframerate()), int(t1*win.getframerate())

win.readframes(s0) # discard

frames= win.readframes(s1-s0)

wout.setparams(win.getparams())

wout.writeframes(frames)

win.close()

wout.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值