相关疑难解决方法(0)

Python从视频文件中提取wav

有关:

如何使用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’ 
Run Code Online (Sandbox Code Playgroud)

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

ffmpeg 好多了:

avconv  -i foo.mp4  -ab 160k -ac 1 -ar 16000 -vn ffaudio.wav
Run Code Online (Sandbox Code Playgroud)

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

第二个问题.

将长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) …
Run Code Online (Sandbox Code Playgroud)

python audio video ffmpeg gstreamer

20
推荐指数
3
解决办法
4万
查看次数

Python - 如何从文件的相同部分提取音频和视频?

我的目标是分析视频文件(在这种情况下是mp4文件)以发现某些功能,并创建一个新的视频文件,其中包含视频和音频,这些视频和音频只是在这些功能发生之前和稍后.

我正在使用Python/OpenCV,可以正确识别视频中的功能,并可以创建我想要的新视频文件.

我也可以使用该subprocess模块并ffmpeg从原始文件中提取完整的音频,我可以使用该wave模块迭代音频帧.我还打算用它ffmpeg来组合生成的音频和视频文件.

我的问题是提取与新的精简视频文件中的帧匹配的音频.原始视频文件中的帧数(根据OpenCV)不等于返回的帧数Wave.getnframes(),因此我不确定如何只提取我需要的音频.

python audio video opencv ffmpeg

5
推荐指数
0
解决办法
1119
查看次数

标签 统计

audio ×2

ffmpeg ×2

python ×2

video ×2

gstreamer ×1

opencv ×1