一、文件结构生成:
根据用户ID和视频名称VideoName,在服务器生成一个用于保存原视频、中间结果和最终结果的目录结构。
——EasyCut
——ID
——ID_VideoName
——Original_Video #存储原视频
——SceneSeg_Video #存储场景划分结果
——Key_Frame #存储视频摘要结果
——SceneFeature #存储视频摘要后视频的场景特征
——SceneSimilar #存储相似场景的视频聚类结果
——Resources #人脸检测结果
——video
——result
——gif
——featureMean
——featureDB
——faceS
代码实现:
create_files.py:
import os
def create_dir(ID,VideoName):
filename=ID+'_'+VideoName
path='/opt/data/private/xuyunyang/EasyCut/'
path0=path+ID+'/'+filename
path1=path0+'/Original_Video'
path2=path0+'/SceneSeg_Video'
path3=path0+'/Resources'
path4=path0+'/Key_Frame'
path41=path3+'/video'
path42=path3+'/result'
path43=path3+'/gif'
path44=path3+'/featureDB'
path45=path3+'/featureMean'
path46=path3+'/faceS'
path47=path3+'/ScenePhoto'
path5=path0+'/SceneFeature'
path6=path0+'/SceneSimilar'
isExists=os.path.exists(path0)
if not isExists:
os.makedirs(path0)
os.makedirs(path1)
os.makedirs(path2)
os.makedirs(path3)
os.makedirs(path4)
os.makedirs(path41)
os.makedirs(path42)
os.makedirs(path43)
os.makedirs(path44)
os.makedirs(path45)
os.makedirs(path46)
os.makedirs(path47)
os.makedirs(path5)
os.makedirs(path6)
if __name__ == '__main__':
parser = argparse.ArgumentParser("Create Files")
parser.add_argument('ID')
parser.add_argument('VideoName')
args = parser.parse_args()
create_dir(args.ID,args.VideoName)
二、SSH-2实现java连接远程服务器并进行视频传输及命令执行
1、SSH:
Secure Shell Protocol,安全外壳协议,是专门为了远程登录会话和其他网络服务提供的安全性协议,是一种非对称加密协议,使用SSH协议可以有效的防止远程连接会话的时候出现信息泄密,在数据传输的时候SSH会先对联机的数据包通过加密技术进行加密处理,加密后在进行数据的传输,确保了传输中的安全性,SSH服务主要提供两个服务功能:一个是远程联机的SSH服务,一个是借助SSH协议来传输数据的SFTP服务。
2、SSH原理:
① 服务端开启ssh服务监听22端口
② 客户端发送联机请求(携带IP和端口)
③ 客户端服务端进行联机加密认证
④ 认证通过联机成功
3、SSH的两种认证方式:
(1) 基于密码口令的认证:
只要知道服务器的SSH连接账号和密码(当然也要知道服务器的IP和端口(默认22)),就可以通过客户端远程登录到主机了,所以的传输过程都是加密的。
(2) 基于秘钥的安全认证:
① 运行SSH服务,生成密钥对
② 客户端发送公钥到服务端(通过ssh-copy-id或者其他的方式)
③ 客户端发送连接请求
④ 服务端进行对密钥的验证
⑤ 验证成功服务端将用公钥加密质询,发送给客户端
⑥ 客户端用自己的私钥解密质询
⑦ 客户端将解密后的质询发送给服务端
⑧ 服务端验证质询
⑨ 验证通过,建立连接
4、导入jar包:
需要导入3个jar包:
5、代码实现:
注:使用用户名密码方式远程登录linux服务器
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.log4j.Logger;
import org.apache.commons.lang.StringUtils;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class Connection_to_Sever {
private static final Logger logger = Logger.getLogger