2021-06-05 ffmpeg使用多进程将多个视频提取为音频

*话不多说上代码*
import sys
sys.path.append("../")
import os
import os.path as osp
import multiprocessing
import numpy as np
import pickle
import pdb
import subprocess
import librosa
import glob
    #print(args)
print('1')
source_video_path='dataset/videos' ##视频文件夹
save_wav_path='audio_wav' #将要保存的音频文件夹
num_workers=4
os.makedirs(save_wav_path,exist_ok = True)

pool = multiprocessing.Pool(processes=num_workers) #开启多进程
for video_path in glob.glob(source_video_path+'/*.mp4'):
    video_id = video_path.split('/')[-1].split(".mp4")[0]
    source_movie_fn = osp.join(source_video_path,"{}.mp4".format(video_id))
    out_video_fn    = osp.join(save_wav_path,"{}.wav".format(video_id))
#     if not replace_old and osp.exists(out_video_fn):
#             return 0
    call_list  = ['ffmpeg']
    call_list += ['-v', 'error']
    call_list += ['-y']
    call_list += [
        '-i',
        source_movie_fn,
        '-f',
        'wav']
    call_list += ['-map_chapters', '-1'] #remove meta stream
    call_list += [out_video_fn]
    subprocess.call(call_list)
    print(video_id)
    if not osp.exists(out_video_fn):
        wav_np = np.zeros((16000*4),np.float32)
        librosa.output.write_wav(out_video_fn,wav_np,sr=16000)
        print(video_id,"not exist")
pool.close() 
pool.join()
#下图是终端运行结果

终端运行结果

pip install librosa --ignore-installed llvmlite -i https://pypi.douban.com/simple --user  #librosa安装
```python
sudo apt-get install libsndfile1-dev ffmpeg imagemagick nfs-kernel-server#在终端中运行安装ffmpeg

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值