使用Audio Hijack让你轻松捕获iOS设备中的音频!

使用Audio Hijack让你轻松捕获iOS设备中的音频!,第1张

想要捕获iOS设备中的音频吗?Audio Hijack允许您记录任何应用程序的音频,从Internet流到DVD音频和其间的任何地方。只需单击几下,任何iPhone,iPad或iPod Touch都可以配置为Mac的音频输入设备。

步骤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()

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7781233.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存