`
wuzijingaip
  • 浏览: 329853 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 调用 mplayer

阅读更多
java: http://beradrian.wordpress.com/2008/01/30/jmplayer/

qt: http://www.embedu.org/Column/Column140.htm
http://tingxx.ycool.com/post.2028303.html

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;

class LineRedirecter extends Thread {
    /** The input stream to read from. */
    private InputStream in;
    /** The output stream to write to. */
    private OutputStream out;

    /**
     * @param in the input stream to read from.
     * @param out the output stream to write to.
     * @param prefix the prefix used to prefix the lines when outputting to the logger.
     */
    LineRedirecter(InputStream in, OutputStream out) {
        this.in = in;
        this.out = out;
    }

    public void run()
    {
        try {
            // creates the decorating reader and writer
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            PrintStream printStream = new PrintStream(out);
            String line;

            // read line by line
            while ( (line = reader.readLine()) != null) {
                printStream.println(line);
            }
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.PrintStream;


public class MyPlayer {

	public static void main(String[] args) {
		try{
			
//		 create the piped streams where to redirect the standard output and error of MPlayer
//		 specify a bigger pipesize than the default of 1024
			PipedInputStream  readFrom = new PipedInputStream(256*1024);
			PipedOutputStream writeTo = new PipedOutputStream(readFrom);
			BufferedReader mplayerOutErr = new BufferedReader(new InputStreamReader(readFrom));
			Process mplayerProcess = Runtime.getRuntime().exec("e:/player.exe c:/media/video/1.mov");//-quiet -idle -slave  
//		 create the threads to redirect the standard output and error of MPlayer
			new LineRedirecter(mplayerProcess.getInputStream(), writeTo).start();
			new LineRedirecter(mplayerProcess.getErrorStream(), writeTo).start();
			
//		 the standard input of MPlayer
			PrintStream mplayerIn = new PrintStream(mplayerProcess.getOutputStream());

			mplayerIn.print("set_property time_pos 300");
			mplayerIn.print("\n");
			mplayerIn.flush();
			
			
			mplayerIn.print("loadfile \"c:/media/video/1.mov\" 0");
			mplayerIn.print("\n");
			mplayerIn.flush();
			
			
			mplayerIn.print("pause");
			mplayerIn.print("\n");
			mplayerIn.flush();
			
			
			mplayerIn.print("get_property length");
			mplayerIn.print("\n");
			mplayerIn.flush();
			
			
			String answer;
			int totalTime = -1;
			try {
			    while ((answer = mplayerOutErr.readLine()) != null) {
			        if (answer.startsWith("ANS_length=")) {
			            totalTime = Integer.parseInt(answer.substring("ANS_length=".length()));
			            break;
			        }
			    }
			}
			catch (IOException e) {
			}
			System.out.println("========"+totalTime);
			
			
			
			try {
			    mplayerProcess.waitFor();
			}
			catch (InterruptedException e) {}
			
		}catch (Exception e) {
		}
	}
}



例子为 windows 版 mplayer ,此例用基本调用,如有需要请查看 mplayer 手册 http://wuzijingaip.iteye.com/admin/blogs/545229




java开源万能播放器里的一段


/*
 * 作者:lightp2p@gmail.com
 * 网站:http://hi.baidu.com/mqlayer
 */

package player;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.peer.ComponentPeer;

import javax.swing.JPanel;


public class VideoPanel extends JPanel{
	private static final long serialVersionUID = 4417214835406666167L;
	Player player;
	Canvas canvas;
	VideoPanel(Player pl){
		player=pl;
		setBackground(new Color(3,3,3));
		setLayout(new VideoLayout(player));
		canvas=new Canvas();
		add(canvas);
		canvas.setName("canvas");
		canvas.setBackground(new Color(3,3,3));
	}

	//获取组件的window handle
	@SuppressWarnings("deprecation")
	long getWid(){
		long wid=-1;
		try {
			Class<?> cl = Class.forName("sun.awt.windows.WComponentPeer");
			java.lang.reflect.Field f = cl.getDeclaredField("hwnd");
			f.setAccessible(true);
			ComponentPeer peer = canvas.getPeer();
			wid = f.getLong(peer);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("wid:" + wid );
		return wid;
	}
}







分享到:
评论

相关推荐

    java写的MPlayer内核的万能播放器

    通过动态链接库,Java播放器能够调用MPlayer的函数,播放各种媒体文件。MPlayer拥有广泛的硬件兼容性,可以处理各种视频解码,包括硬件加速,这为Java播放器提供了丰富的多媒体处理能力。 在实际应用中,Java播放器...

    mplayer嵌入开发

    编译完成后,开发者可以通过API接口调用MPlayer的功能,实现播放、停止、控制播放进度等操作。 MPlayer还提供了丰富的回调机制,允许开发者监控播放状态,如播放结束、错误发生等,从而实现更复杂的交互逻辑。例如...

    applet 嵌入mplayer 播放视频

    2. 使用Java的JNI(Java Native Interface)技术,创建Java类来调用MPlayer的C/C++接口。 3. 编写Java代码来初始化MPlayer,加载视频文件,并控制播放、暂停、停止等操作。 4. 创建一个HTML页面,将Java Applet标签...

    Mplayer:一个简单的日常音乐播放器

    5. **JNI(Java Native Interface)**:如果Mplayer需要利用特定平台的音频硬件功能,可能会用到JNI来调用本地库。 **总结** Mplayer是一个基于Java开发的音乐播放器,其简洁的设计和跨平台的特性使其成为日常听歌...

    JAVA 利用 ffmpeg 和 mencoder 对视频进行转换

    以下是一个简单的示例,展示如何使用Java调用FFmpeg进行视频转换: ```java import java.io.IOException; public class VideoConverter { public static void main(String[] args) { String inputFilePath = ...

    java视频格式转换

    在Java中使用MEncoder,你可能需要通过执行系统命令的方式来调用。例如,转换视频的基本步骤是: ```java String command = "mencoder input.mp4 -o output.avi"; Runtime.getRuntime().exec(command); ``` 需要...

    Java 万能播放器(带源码)

    Java 万能播放器是一种基于Java编程语言实现的多媒体播放软件,它具备播放各种主流音频和视频格式的能力。这样的播放器通常使用Java的多媒体库来处理不同格式的媒体文件,从而实现跨平台的兼容性,因为Java“一次...

    ffmpeg+mencoder

    本文将详细介绍这两个工具以及如何在Java环境中调用它们进行视频转码。 FFmpeg是一款开源的跨平台命令行工具,用于处理音频和视频文件。它集成了多个功能,包括视频和音频的编码、解码、转换、流处理等。FFmpeg支持...

    视频转换格式,截取图片中某一帧所需要的工具(asp.net/Java)

    在asp.net和Java环境中,这些工具的使用方式通常是通过系统调用或者借助于进程管理库(如Java的Runtime.exec()或asp.net的System.Diagnostics.Process类)来执行命令行操作。开发者需要编写脚本来控制这些工具的行为...

    java制作仿微信视频播放控件

    在Java开发中,创建一个仿微信视频播放控件是一个常见的需求,这可以帮助开发者构建类似微信的多媒体交互体验。本文将详细介绍如何使用Java实现这个功能,主要关注控件的实现方式和核心代码。 首先,我们需要知道...

    插件实现简单的音乐播放

    通过封装MPlayer的API,开发者可以创建一个插件,使得音乐播放器能够利用MPlayer的强大功能。 总结起来,插件技术为音乐播放器提供了模块化的架构,使得软件更易于维护和扩展。用户可以根据需求选择安装适合自己的...

    ffmepeg、mencoder及每个dll文件

    Java本身并不直接支持FFmpeg的DLL调用,因此通常需要借助第三方库,如JNA(Java Native Access)或JFFmpeg等,来桥接Java和FFmpeg的C接口。这样的模板类可能会包含初始化FFmpeg、执行转换操作、处理结果和错误等核心...

    ffmpeg和mencoder视频文件

    FFmpeg和MEncoder是两个非常重要的开源工具,主要用于视频处理和转换。...从简单的转码到复杂的滤镜应用,FFmpeg和MEncoder都能胜任,而通过Java调用它们,可以轻松地将这些功能整合进你的应用程序中。

    小米便签部分代码精读注释

    本文将对小米便签中的部分代码进行深入解读,并重点分析其中的 `UI` 包内 `AlarmAlertActivity.java` 文件的相关代码实现细节。 #### 二、UI 包详解 ##### 2.1 `AlarmAlertActivity.java` `AlarmAlertActivity` ...

    ffmpeg+mencoder实现视频转码

    在Windows环境下,它们可以通过Java后台程序调用,实现高效、灵活的视频格式转换。以下将详细介绍这两个工具以及如何在Java中使用它们。 **FFmpeg** FFmpeg是一款功能强大的多媒体处理工具,它支持多种编码、解码、...

Global site tag (gtag.js) - Google Analytics