步骤1:连接iOS设备并从中启用音频
首先使用Lightning电缆将iOS设备物理连接到Mac,然后启动“音频MIDI设置”应用程序,该应用程序位于主“应用程序”文件夹的“实用程序”文件夹中。
您应该会看到一个类似于上述屏幕截图的窗口。单击iOS设备名称下的“启用”按钮,以使该设备在Mac上显示为标准音频输入。
注意:尽管设备的自定义名称将出现在“音频MIDI设置”实用程序中,但这不是系统将用于音频输入的名称。相反,该名称仅反映硬件类型:“ iPhone”,“ iPad”或“ iPod touch”。该简化的名称将显示在“系统偏好设置”和“音频劫持”中。
步骤2:在Audio Hijack中创建输入设备会话
接下来,启动Audio Hijack并创建一个新会话。“输入设备”模板是一个很好的起点。单击“输入设备”块,然后选择您的iOS设备作为输入源:
第3步:捕获音频!
现在您可以从iOS设备捕获音频播放了。开始会话,然后开始在设备上播放音频。音频将从iOS设备流到“音频劫持”,并在其中进行记录。如果您想在录制时听到此音频,请将“输出设备”块添加到链的末尾:
如果您需要一款音频录制软件,那么audio hijack mac这款强大的多功能音频处理工具是您的不错选择!可以帮助你录制互联网的音频流,导入录制好的音频声音,或抓取DVD audio光盘的声音。录制下的内容可保存为Apple的AAC或ALAC格式,或者是MP3、AIFF格式,并可直接刻录CD,支持VST/AU插件效果器。
import java.io.*import javax.sound.sampled.*
import java.net.*
/**
* Title:VoiceChat
* Description: 输出音频(放音程序)
* Copyright:Copyright (c) 2001
* Company:
* @author 网络
* @version 1.0
*/
class Playback implements Runnable {
final int bufSize = 16384
SourceDataLine line
Thread thread
Socket s
Playback(Socket s){//构造器 取得socket以获得网络输入流
this.s=s
}
public void start() {
thread = new Thread(this)
thread.setName("Playback")
thread.start()
}
public void stop() {
thread = null
}
public void run() {
AudioFormat format =new AudioFormat(8000,16,2,true,true)//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
BufferedInputStream playbackInputStream
try {
playbackInputStream=new BufferedInputStream(new AudioInputStream(s.getInputStream(),format,2147483647))//封装成音频输出流,如果网络流是经过压缩的需在此加套解压流
}
catch (IOException ex) {
return
}
DataLine.Info info = new DataLine.Info(SourceDataLine.class,format)
try {
line = (SourceDataLine) AudioSystem.getLine(info)
line.open(format, bufSize)
} catch (LineUnavailableException ex) {
return
}
byte[] data = new byte[1024]//此处数组的大小跟实时性关系不大,可根据情况进行调整
int numBytesRead = 0
line.start()
while (thread != null) {
try{
numBytesRead = playbackInputStream.read(data)
line.write(data, 0,numBytesRead)
} catch (IOException e) {
break
}
}
if (thread != null) {
line.drain()
}
line.stop()
line.close()
line = null
}
}
import java.io.*
import javax.sound.sampled.*
import java.net.*
/**
* Title:VoiceChat
* Description: 音频捕捉(录音程序)
* Copyright:Copyright (c) 2001
* Company:
* @author 网络
* @version 1.0
*/
class Capture implements Runnable {
TargetDataLine line
Thread thread
Socket s
BufferedOutputStream captrueOutputStream
Capture(Socket s){//构造器 取得socket以获得网络输出流
this.s=s
}
public void start() {
thread = new Thread(this)
thread.setName("Capture")
thread.start()
}
public void stop() {
thread = null
}
public void run() {
try {
captrueOutputStream=new BufferedOutputStream(s.getOutputStream())//建立输出流 此处可以加套压缩流用来压缩数据
}
catch (IOException ex) {
return
}
AudioFormat format =new AudioFormat(8000,16,2,true,true)//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
DataLine.Info info = new DataLine.Info(TargetDataLine.class,format)
try {
line = (TargetDataLine) AudioSystem.getLine(info)
line.open(format, line.getBufferSize())
} catch (Exception ex) {
return
}
byte[] data = new byte[1024]//此处的1024可以情况进行调整,应跟下面的1024应保持一致
int numBytesRead=0
line.start()
while (thread != null) {
numBytesRead = line.read(data, 0,1024)//取数据(1024)的大小直接关系到传输的速度,一般越小越快,
try {
captrueOutputStream.write(data, 0, numBytesRead)//写入网络流
}
catch (Exception ex) {
break
}
}
line.stop()
line.close()
line = null
try {
captrueOutputStream.flush()
captrueOutputStream.close()
} catch (IOException ex) {
ex.printStackTrace()
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)