recordsaver.java

来自「JMF制作的截取音频文件代码 运行SecFrame.java」· Java 代码 · 共 110 行

JAVA
110
字号
package util;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.media.DataSink;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoDataSinkException;
import javax.media.NotRealizedError;
import javax.media.Processor;
import javax.media.datasink.DataSinkEvent;
import javax.media.datasink.DataSinkListener;
import javax.media.datasink.EndOfStreamEvent;

public class RecordSaver {
	public static void saveVedio(Processor p, String filePath) {
		File file = new File(filePath);
		DataSink ds = null;

		MediaLocator ml = null;

		try {
			URL url = file.toURI().toURL();
			
			System.out.println(url.toString());
			
			ml = new MediaLocator(url);

			ds = Manager.createDataSink(p.getDataOutput(), ml);

		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (NoDataSinkException e) {
			e.printStackTrace();
		} catch (NotRealizedError e) {
			e.printStackTrace();
		}

		// 添加事件侦听器,当到达文件尾部时,关闭DataSink
		ds.addDataSinkListener(new DataSinkListener() {
			public void dataSinkUpdate(DataSinkEvent e) {
				if (e instanceof EndOfStreamEvent) {
					DataSink tempDS = e.getSourceDataSink();
					try {
						tempDS.stop();
						tempDS.close();
					} catch (IOException e1) {
						e1.printStackTrace();
					}
				}
			}
		});

		// 打开DataSink,并开始数据转换
		try {
			ds.open();
			ds.start();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
	}

	public static void saveAudio(Processor p, String filePath) {
		File file = new File(filePath);
		DataSink ds = null;

		MediaLocator ml = null;

		try {
			URL url = file.toURI().toURL();
			ml = new MediaLocator(url);

			ds = Manager.createDataSink(p.getDataOutput(), ml);

		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (NoDataSinkException e) {
			e.printStackTrace();
		} catch (NotRealizedError e) {
			e.printStackTrace();
		}

		// 添加事件侦听器,当到达文件尾部时,关闭DataSink
		ds.addDataSinkListener(new DataSinkListener() {
			public void dataSinkUpdate(DataSinkEvent e) {
				if (e instanceof EndOfStreamEvent) {
					DataSink tempDS = e.getSourceDataSink();
					try {
						tempDS.stop();
						tempDS.close();
					} catch (IOException e1) {
						e1.printStackTrace();
					}
				}
			}
		});

		// 打开DataSink,并开始数据转换
		try {
			ds.open();
			ds.start();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?