亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? advancedplayer.java

?? Java編寫的一個mp3播放器源代碼,對于想做這方面工作的網友來說還是有很大的參考價值的
?? JAVA
字號:
/*
 * 11/19/04		1.0 moved to LGPL. 
 *-----------------------------------------------------------------------
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU Library General Public License as published
 *   by the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU Library General Public License for more details.
 *
 *   You should have received a copy of the GNU Library General Public
 *   License along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *----------------------------------------------------------------------
 */

package javazoom.jl.player.advanced;

import java.io.InputStream;

import javazoom.jl.decoder.Bitstream;
import javazoom.jl.decoder.BitstreamException;
import javazoom.jl.decoder.Decoder;
import javazoom.jl.decoder.Header;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.decoder.SampleBuffer;
import javazoom.jl.player.AudioDevice;
import javazoom.jl.player.FactoryRegistry;

/**
 * a hybrid of javazoom.jl.player.Player tweeked to include <code>play(startFrame, endFrame)</code>
 * hopefully this will be included in the api
 */
public class AdvancedPlayer
{
	/** The MPEG audio bitstream.*/
	private Bitstream bitstream;
	/** The MPEG audio decoder. */
	private Decoder decoder;
	/** The AudioDevice the audio samples are written to. */
	private AudioDevice audio;
	/** Has the player been closed? */
	private boolean closed = false;
	/** Has the player played back all frames from the stream? */
	private boolean complete = false;
	private int lastPosition = 0;
	/** Listener for the playback process */
	private PlaybackListener listener;

	/**
	 * Creates a new <code>Player</code> instance.
	 */
	public AdvancedPlayer(InputStream stream) throws JavaLayerException
	{
		this(stream, null);
	}

	public AdvancedPlayer(InputStream stream, AudioDevice device) throws JavaLayerException
	{
		bitstream = new Bitstream(stream);

		if (device!=null) audio = device;
		else audio = FactoryRegistry.systemRegistry().createAudioDevice();
		audio.open(decoder = new Decoder());
	}

	public void play() throws JavaLayerException
	{
		play(Integer.MAX_VALUE);
	}

	/**
	 * Plays a number of MPEG audio frames.
	 *
	 * @param frames	The number of frames to play.
	 * @return	true if the last frame was played, or false if there are
	 *			more frames.
	 */
	public boolean play(int frames) throws JavaLayerException
	{
		boolean ret = true;

		// report to listener
		if(listener != null) listener.playbackStarted(createEvent(PlaybackEvent.STARTED));

		while (frames-- > 0 && ret)
		{
			ret = decodeFrame();
		}

//		if (!ret)
		{
			// last frame, ensure all data flushed to the audio device.
			AudioDevice out = audio;
			if (out != null)
			{
//				System.out.println(audio.getPosition());
				out.flush();
//				System.out.println(audio.getPosition());
				synchronized (this)
				{
					complete = (!closed);
					close();
				}

				// report to listener
				if(listener != null) listener.playbackFinished(createEvent(out, PlaybackEvent.STOPPED));
			}
		}
		return ret;
	}

	/**
	 * Cloases this player. Any audio currently playing is stopped
	 * immediately.
	 */
	public synchronized void close()
	{
		AudioDevice out = audio;
		if (out != null)
		{
			closed = true;
			audio = null;
			// this may fail, so ensure object state is set up before
			// calling this method.
			out.close();
			lastPosition = out.getPosition();
			try
			{
				bitstream.close();
			}
			catch (BitstreamException ex)
			{}
		}
	}

	/**
	 * Decodes a single frame.
	 *
	 * @return true if there are no more frames to decode, false otherwise.
	 */
	protected boolean decodeFrame() throws JavaLayerException
	{
		try
		{
			AudioDevice out = audio;
			if (out == null) return false;

			Header h = bitstream.readFrame();
			if (h == null) return false;

			// sample buffer set when decoder constructed
			SampleBuffer output = (SampleBuffer) decoder.decodeFrame(h, bitstream);

			synchronized (this)
			{
				out = audio;
				if(out != null)
				{
					out.write(output.getBuffer(), 0, output.getBufferLength());
				}
			}

			bitstream.closeFrame();
		}
		catch (RuntimeException ex)
		{
			throw new JavaLayerException("Exception decoding audio frame", ex);
		}
		return true;
	}

	/**
	 * skips over a single frame
	 * @return false	if there are no more frames to decode, true otherwise.
	 */
	protected boolean skipFrame() throws JavaLayerException
	{
		Header h = bitstream.readFrame();
		if (h == null) return false;
		bitstream.closeFrame();
		return true;
	}

	/**
	 * Plays a range of MPEG audio frames
	 * @param start	The first frame to play
	 * @param end		The last frame to play
	 * @return true if the last frame was played, or false if there are more frames.
	 */
	public boolean play(final int start, final int end) throws JavaLayerException
	{
		boolean ret = true;
		int offset = start;
		while (offset-- > 0 && ret) ret = skipFrame();
		return play(end - start);
	}

	/**
	 * Constructs a <code>PlaybackEvent</code>
	 */
	private PlaybackEvent createEvent(int id)
	{
		return createEvent(audio, id);
	}

	/**
	 * Constructs a <code>PlaybackEvent</code>
	 */
	private PlaybackEvent createEvent(AudioDevice dev, int id)
	{
		return new PlaybackEvent(this, id, dev.getPosition());
	}

	/**
	 * sets the <code>PlaybackListener</code>
	 */
	public void setPlayBackListener(PlaybackListener listener)
	{
		this.listener = listener;
	}

	/**
	 * gets the <code>PlaybackListener</code>
	 */
	public PlaybackListener getPlayBackListener()
	{
		return listener;
	}

	/**
	 * closes the player and notifies <code>PlaybackListener</code>
	 */
	public void stop()
	{
		listener.playbackFinished(createEvent(PlaybackEvent.STOPPED));
		close();
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区在线播放 | 日本强好片久久久久久aaa| 国产亲近乱来精品视频| 久久视频一区二区| 久久久无码精品亚洲日韩按摩| 欧美电影免费观看高清完整版在| 91精品国产色综合久久久蜜香臀| 欧美日韩日日夜夜| 欧美一区二区三区视频免费| 91精品国产全国免费观看| 日韩一区二区三区在线观看| 久久影院视频免费| 国产农村妇女毛片精品久久麻豆 | 午夜不卡在线视频| 青青草97国产精品免费观看 | 亚洲激情男女视频| 亚洲第一主播视频| 日韩国产成人精品| 国产成人丝袜美腿| 色综合久久综合中文综合网| 欧美色图激情小说| 欧美精品一区二区三区高清aⅴ| 国产欧美一区二区精品性色| 亚洲欧美另类小说| 日本欧美一区二区三区乱码| 国产麻豆成人传媒免费观看| 91在线视频网址| 欧美日韩亚洲综合一区二区三区| 精品噜噜噜噜久久久久久久久试看| 国产亚洲成aⅴ人片在线观看| 一区二区三区自拍| 狠狠色2019综合网| 色综合一个色综合亚洲| 欧美日韩不卡在线| 国产精品少妇自拍| 日欧美一区二区| 成人国产在线观看| 欧美一区二区三区在线| 成人免费在线视频观看| 日本成人在线一区| 91丨porny丨国产| 日韩精品一区二区三区蜜臀| 亚洲精品视频在线看| 久久99久久99| 欧美视频一区二区在线观看| 国产人久久人人人人爽| 日本欧美肥老太交大片| 97se亚洲国产综合在线| 亚洲精品一区二区三区四区高清| 亚洲综合视频网| 高清成人在线观看| 日韩欧美精品在线| 亚洲一线二线三线久久久| 国产成人av一区二区三区在线| 欧美日韩成人一区| 亚洲国产日韩a在线播放性色| 岛国一区二区三区| 国产网站一区二区三区| 日本aⅴ免费视频一区二区三区 | 在线不卡一区二区| 自拍偷在线精品自拍偷无码专区| 激情小说欧美图片| 日韩亚洲电影在线| 日本人妖一区二区| 欧美日韩高清一区| 亚洲午夜电影在线观看| 色又黄又爽网站www久久| 中文一区二区在线观看| 国产99久久久国产精品免费看 | 亚洲综合色噜噜狠狠| 成人免费视频视频在线观看免费| 精品国产伦一区二区三区观看体验| 亚洲福利一二三区| 欧美男人的天堂一二区| 亚洲二区视频在线| 欧美无人高清视频在线观看| 洋洋av久久久久久久一区| 色综合天天综合网天天看片| 亚洲婷婷综合色高清在线| 成人avav影音| 怡红院av一区二区三区| 91传媒视频在线播放| 亚洲午夜免费视频| 欧美丰满一区二区免费视频| 蜜臀99久久精品久久久久久软件| 91精品国产色综合久久不卡电影 | 国产宾馆实践打屁股91| 久久久精品免费免费| 成人免费视频网站在线观看| 视频一区二区三区入口| 日韩视频一区在线观看| 国产福利91精品一区| 中文字幕欧美日韩一区| 91理论电影在线观看| 午夜av一区二区| 2023国产精华国产精品| 97成人超碰视| 亚洲第一二三四区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产在线精品不卡| 国产精品三级电影| 欧美性生活一区| 麻豆91精品91久久久的内涵| 337p粉嫩大胆噜噜噜噜噜91av| 成人午夜激情视频| 亚洲成人av一区二区三区| 精品国内片67194| 色哟哟亚洲精品| 精彩视频一区二区| 亚洲一区二区三区自拍| 精品日韩在线一区| 欧洲亚洲精品在线| 国产福利一区在线观看| 亚洲一二三四区不卡| 国产亚洲午夜高清国产拍精品| 99精品桃花视频在线观看| 男人的j进女人的j一区| 日韩美女久久久| 欧美一区二区精品在线| 91网站最新地址| 激情五月播播久久久精品| 亚洲卡通动漫在线| 欧美精品一区二区三区在线播放| 91久久精品日日躁夜夜躁欧美| 国产麻豆一精品一av一免费 | 久久久午夜电影| 欧美日韩国产高清一区| 99re亚洲国产精品| 韩国三级中文字幕hd久久精品| 亚洲国产综合在线| 国产精品国产三级国产aⅴ无密码| 日韩欧美自拍偷拍| 欧美日韩中文国产| 一本久久精品一区二区| 风间由美一区二区三区在线观看| 免费观看91视频大全| 亚洲成人动漫在线观看| 亚洲黄色尤物视频| 中文字幕一区二区三区av| 久久久精品人体av艺术| 精品999在线播放| 日韩精品综合一本久道在线视频| 欧美日韩一卡二卡三卡 | 91精品久久久久久久99蜜桃 | 国产日韩在线不卡| 2023国产精品| 久久综合色一综合色88| 91麻豆精品国产自产在线观看一区| 色综合中文综合网| 日韩中文欧美在线| 亚洲午夜国产一区99re久久| 亚洲精品国产精品乱码不99 | 国产成人久久精品77777最新版本| 日韩影院精彩在线| 日本在线不卡视频| 麻豆精品国产91久久久久久| 肉丝袜脚交视频一区二区| 舔着乳尖日韩一区| 麻豆视频一区二区| 国产精品影视天天线| 成人午夜碰碰视频| 97超碰欧美中文字幕| 在线日韩国产精品| 欧美日本在线一区| 欧美人与z0zoxxxx视频| 日韩欧美另类在线| 中文字幕av一区二区三区| 一区精品在线播放| 亚洲成人av资源| 日本aⅴ亚洲精品中文乱码| 国产在线视视频有精品| 成人午夜在线播放| 91色porny在线视频| 欧美久久久久免费| 精品国产一区二区精华| 中文字幕一区在线观看| 亚洲五码中文字幕| 蜜桃视频第一区免费观看| 成人中文字幕电影| 欧美三级视频在线| 久久综合丝袜日本网| 亚洲精品久久久蜜桃| 免费在线观看视频一区| 成人伦理片在线| 欧美疯狂做受xxxx富婆| 欧美国产欧美综合| 亚洲二区在线观看| 国产精品1024| 在线中文字幕不卡| 久久综合国产精品| 亚洲国产精品人人做人人爽| 国产一区二区视频在线播放| 欧美在线免费视屏| 日韩欧美一二三四区| 亚洲视频网在线直播| 极品美女销魂一区二区三区免费| 色婷婷av一区二区三区gif| 精品国产免费一区二区三区四区 | 夜夜爽夜夜爽精品视频| 国产久卡久卡久卡久卡视频精品|