package com.ycl.api.YS.playback.config; import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import com.ycl.api.YS.NetDemo; import com.ycl.api.YS.lib.NetDEVSDKLib.NETDEV_VOD_PLAY_CTRL_E; import javax.swing.*; import java.util.regex.Pattern; /** * * @introduction Play local Record * @description Support IPC/NVR/VMS */ public class PlayBackPlayLocalFile { /** * * @introduction Start play local file * @description Calling the interface of NETDEV_StartPlayMediaFile * */ public static void startPlayLocalFile() { if(null != NetDemo.lpPlayHandle) { JOptionPane.showMessageDialog(null, "Please stop playing first."); return; } if (null!=NetDemo.jTextFieldPlayLocalFile.getText()) { String pszFilename=NetDemo.jTextFieldPlayLocalFile.getText(); JOptionPane.showMessageDialog(null, "Filename:"+pszFilename); NetDemo.lpPlayHandle=NetDemo.netdevsdk.NETDEV_OpenMediaFile(pszFilename); } if(NetDemo.lpPlayHandle==null) { NetDemo.jTextFieldPlayLocalFile.setText(null); JOptionPane.showMessageDialog(null, "File is not exist"); return; } NetDemo.jButtonPlayLocalFile.setEnabled(false); NetDemo.jButtonStopLocalFile.setEnabled(true); IntByReference pdwTotalTime=new IntByReference(); boolean bRet2= NetDemo.netdevsdk.NETDEV_GetMediaFileTime(NetDemo.lpPlayHandle, pdwTotalTime); if(bRet2) { JOptionPane.showMessageDialog(null, "File duration "+pdwTotalTime.getValue()+"s"); Pointer lpPlayWnd=Native.getComponentPointer(NetDemo.panelPlayLabel); boolean bRet=NetDemo.netdevsdk.NETDEV_StartPlayMediaFile(NetDemo.lpPlayHandle,lpPlayWnd); if(bRet) { JOptionPane.showMessageDialog(null, "Play success "); NetDemo.netdevsdk.NETDEV_SetMuteStatus(NetDemo.lpPlayHandle,1); NetDemo.netdevsdk.NETDEV_OpenSound(NetDemo.lpPlayHandle); }else { JOptionPane.showMessageDialog(null, "Play media file failed. error code"+NetDemo.netdevsdk.NETDEV_GetLastError()); System.out.println("NETDEV_StartPlayMediaFile failed"+NetDemo.netdevsdk.NETDEV_GetLastError()); } }else { System.out.println("NETDEV_GetMediaFileTime failed"+NetDemo.netdevsdk.NETDEV_GetLastError()); NetDemo.jButtonStopLocalFile.setEnabled(false); NetDemo.jButtonPlayLocalFile.setEnabled(false); } } /** * * @introduction Stop play local file * @description * */ public static void stopPlayLocalFile() { boolean bRet= NetDemo.netdevsdk.NETDEV_StopPlayMediaFile(NetDemo.lpPlayHandle); if(bRet) { JOptionPane.showMessageDialog(null, "Stop success"); NetDemo.lpPlayHandle = null; NetDemo.jButtonPlayLocalFile.setEnabled(true); NetDemo.jButtonStopLocalFile.setEnabled(false); NetDemo.panelPlayLabel.repaint(); }else { JOptionPane.showMessageDialog(null, "Stop playing media file failed. error code"+NetDemo.netdevsdk.NETDEV_GetLastError()); System.out.println("NETDEV_StopPlayMediaFile failed"+NetDemo.netdevsdk.NETDEV_GetLastError()); } } /** * * @introduction Pause play the file * @description * */ public static void pausePlayLocalFile() { if(NETDEV_VOD_PLAY_CTRL_E.NETDEV_PLAY_CTRL_PAUSE == NetDemo.PlayBackControlCmd){ boolean bRet = NetDemo.netdevsdk.NETDEV_PlayBackControl(NetDemo.lpPlayHandle, NETDEV_VOD_PLAY_CTRL_E.NETDEV_PLAY_CTRL_RESUME, null); if(bRet){ NetDemo.PlayBackControlCmd = NETDEV_VOD_PLAY_CTRL_E.NETDEV_PLAY_CTRL_RESUME; NetDemo.jButtonPlayLocalFilePause.setText("Pause"); } } else{ boolean bRet = NetDemo.netdevsdk.NETDEV_PlayBackControl(NetDemo.lpPlayHandle, NETDEV_VOD_PLAY_CTRL_E.NETDEV_PLAY_CTRL_PAUSE, null); if(bRet){ NetDemo.PlayBackControlCmd = NETDEV_VOD_PLAY_CTRL_E.NETDEV_PLAY_CTRL_PAUSE; NetDemo.jButtonPlayLocalFilePause.setText("Resume"); } } } /** * * @introduction Open local Record file * @description Choose local file to play * */ public static void openFile() { String path=null; JFileChooser jfierchoose=new JFileChooser(); jfierchoose.setDialogTitle("请选择上传的文件"); jfierchoose.setApproveButtonText("确定"); jfierchoose.setFileSelectionMode(JFileChooser.FILES_ONLY); if(JFileChooser.APPROVE_OPTION==jfierchoose.showOpenDialog(NetDemo.jPanelliveVoice)) { try { path=jfierchoose.getSelectedFile().getPath(); }catch(Exception ee) { return; } } if(path==null||path.equals("")) { System.out.println("Empty path"); return; } String name=null; try { name=path.substring(path.lastIndexOf(".")); }catch(Exception m1) { JOptionPane.showMessageDialog(null, "File does not exist"); return; } String newpath=null; try { newpath=path.substring(path.lastIndexOf(".")); }catch(Exception m2) { JOptionPane.showMessageDialog(null, "File does not exist"); return; } if(newpath==null||newpath.equals("")) { JOptionPane.showMessageDialog(null, "Empty path"); return; } String reg = "(mp4|MP4|FLV|AVI|RM|RMVB|WMV|MPEG|flv|avi|rm|rmvb|wmv|mpeg|nAVI|asf|mov|3gp|DivX|XviD|ts)"; Pattern p = Pattern.compile(reg); boolean bRet = p.matcher(newpath).find(); if(bRet) { JOptionPane.showMessageDialog(null, "Choose file"+name+" success!"); NetDemo.jTextFieldPlayLocalFile.setText(path); } else { JOptionPane.showMessageDialog(null, "Invalid file type"); } } }