sox和shell結(jié)合多通道wav文件中抽取特定通道重新排序的腳本

#########################################################################

# File Name: Fetch5ch.sh

# Function :extract 6 1 2 8 channel as a new file from 8channel wave file

# Created Time: Thu 22 Mar 2018 03:27:02 PM CST

#########################################################################

#!/bin/bash

ARGS=2;

E_BADQUIT=127;

E_BADPARAM=65;

if [[ $# -ne ${ARGS} ]];then

????????echo -e "Usage: \n\t `(basename $0 .sh)` wave-file-directory out-file-directory"

????????exit ${E_BADPARAM}

fi

wave_dir=$1;

out_dir=$2;

if [[ ! -d ${wave_dir} ]];then

????????echo "Error : can not find path ${wave_dir}"

????????exit ${E_BADPARAM}

fi

if [[ ! -d ${out_dir} ]];then

????????echo "Error : cannot find out directory."

????????exit ${E_BADPARMA}

else

????????is_empty=`ls ${out_dir} | wc -l`

????????if [[ ${is_empty} -ne 0 ]];then

????????????????echo "Warning : ${out_dir} is not empty"

????????fi

fi

find ${wave_dir}/*.wav > tmp

cat tmp | awk 'BEGIN{FS="/"}{print $NF}' > tmp1

rm tmp

# 檢測輸入的wave數(shù)據(jù)的通道數(shù)目,本腳本設(shè)定的是8

function CheckChannel()

{

wave=$1;

num_ch=`soxi ${wave} | grep -w "Channels" | awk 'BEGIN{FS=":"}{print $NF}'`

if [[ ${num_ch} -lt 8? ]];then

????????return 1;

else

????????return 0;

fi

}

# 本腳本從8通道數(shù)據(jù)抽取5個(gè)通道,對5個(gè)通道重新排列

ch1=6;

ch2=1;

ch3=2;

ch4=8;

ch5=7;

while read line;do

????????name="`echo ${line%%.*}`_valid14.wav"

????????CheckChannel "${wave_dir}/${line}"

????????if [[ `echo $?` -ne 0 ]];then

????????????????echo "Error : channels of ${wave_dir}/${line} is less than 8"

????????????????exit ${E_BADQUIT}

????????fi

????????echo $wave_dir/$line

????????if [[ -f ${out_dir}/${name} ]];then

????????????????echo "Error : ${out_dir} have existed ${name}"

????????????????exit ${E_BADPARAM}

????????fi

????????echo $wave_dir/$line

????????sox ${wave_dir}/${line} ${out_dir}/${name} remix ${ch1} ${ch2} ${ch3} ${ch4} ${ch5}

done < tmp1

rm tmp1

exit $?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,491評論 3 53
  • 為何叫做 shell ? shell prompt(PS1) 與 Carriage Return(CR) 的關(guān)系?...
    Zero___閱讀 3,324評論 3 49
  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,537評論 1 19
  • 個(gè)人學(xué)習(xí)批處理的初衷來源于實(shí)際工作;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求,從而在測試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,983評論 0 11
  • 資料一: 化敵為友 盟友 沉沒成本 若能將一個(gè)反對者轉(zhuǎn)變?yōu)橹С终撸谶@個(gè)過程中你會將自己的方案更加完善,認(rèn)識更加深...
    一粟于海閱讀 240評論 2 2

友情鏈接更多精彩內(nèi)容