1. 程式人生 > >Java實現視訊網站的視訊上傳、視訊轉碼、視訊關鍵幀抽圖, 及視訊播放功能 視訊網站中提供的線上視訊播放功能,播放的都是FLV格式的檔案,它是Flash動畫檔案,可通過Flash製作的播放器來播

Java實現視訊網站的視訊上傳、視訊轉碼、視訊關鍵幀抽圖, 及視訊播放功能 視訊網站中提供的線上視訊播放功能,播放的都是FLV格式的檔案,它是Flash動畫檔案,可通過Flash製作的播放器來播

package com.webapp.service; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import
org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import com.webapp.dao.DaoFactory; import com.webapp.dao.MediaDao; import com.webapp.entity.Media; import com.webapp.util.DateTimeUtil; /**
* * MediaService.java * * @version : 1.1 * * @author : 蘇若年 <a href="mailto:[email protected]">傳送郵件</a> * * @since : 1.0 建立時間: 2013-2-08 下午02:24:47 * * TODO : class MediaService.java is used for ... * */ public class MediaService extends
HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); MediaDao mediaDao = DaoFactory.getMediaDao(); String message = ""; String uri = request.getRequestURI(); String path = uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf(".")); if("/uploadFile".equals(path)){ //提供解析時的一些預設配置 DiskFileItemFactory factory = new DiskFileItemFactory(); //建立一個解析器,分析InputStream,該解析器會將分析的結果封裝成一個FileItem物件的集合 //一個FileItem物件對應一個表單域 ServletFileUpload sfu = new ServletFileUpload(factory); try { Media media = new Media(); List<FileItem> items = sfu.parseRequest(request); boolean flag = false; //轉碼成功與否的標記 for(int i=0; i<items.size(); i++){ FileItem item = items.get(i); //要區分是上傳檔案還是普通的表單域 if(item.isFormField()){//isFormField()為true,表示這不是檔案上傳表單域 //普通表單域 String paramName = item.getFieldName(); /* String paramValue = item.getString(); System.out.println("引數名稱為:" + paramName + ", 對應的引數值為: " + paramValue); */ if(paramName.equals("title")){ media.setTitle(new String(item.getString().getBytes("ISO8859-1"),"UTF-8")); } if(paramName.equals("descript")){ media.setDescript(new String(item.getString().getBytes("ISO8859-1"),"UTF-8")); } }else{ //上傳檔案 //System.out.println("上傳檔案" + item.getName()); ServletContext sctx = this.getServletContext(); //獲得儲存檔案的路徑 String basePath = sctx.getRealPath("videos"); //獲得檔名 String fileUrl= item.getName(); //在某些作業系統上,item.getName()方法會返回檔案的完整名稱,即包括路徑 String fileType = fileUrl.substring(fileUrl.lastIndexOf(".")); //擷取檔案格式 //自定義方式產生檔名 String serialName = String.valueOf(System.currentTimeMillis()); //待轉碼的檔案 File uploadFile = new File(basePath+"/temp/"+serialName + fileType); item.write(uploadFile); if(item.getSize()>500*1024*1024){ message = "<li>上傳失敗!您上傳的檔案太大,系統允許最大檔案500M</li>"; } String codcFilePath = basePath + "/" + serialName + ".flv"; //設定轉換為flv格式後文件的儲存路徑 String mediaPicPath = basePath + "/images" +File.separator+ serialName + ".jpg"; //設定上傳視訊截圖的儲存路徑 // 獲取配置的轉換工具(ffmpeg.exe)的存放路徑 String ffmpegPath = getServletContext().getRealPath("/tools/ffmpeg.exe"); media.setSrc("videos/" + serialName + ".flv"); media.setPicture("videos/images/" +serialName + ".jpg"); media.setUptime(DateTimeUtil.getYMDHMSFormat()); //轉碼 flag = mediaDao.executeCodecs(ffmpegPath, uploadFile.getAbsolutePath(), codcFilePath, mediaPicPath); } } if(flag){ //轉碼成功,向資料表中新增該視訊資訊 mediaDao.saveMedia(media); message = "<li>上傳成功!</li>"; } request.setAttribute("message", message); request.getRequestDispatcher("media_upload.jsp").forward(request,response); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } } if("/queryAll".equals(path)){ List<Media> mediaList; try { mediaList = mediaDao.queryALlMedia(0,5); request.setAttribute("mediaList", mediaList); request.getRequestDispatcher("media_list.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } if("/play".equals(path)){ String idstr = request.getParameter("id"); int mediaId = -1; Media media = null; if(null!=idstr){ mediaId = Integer.parseInt(idstr); } try { media = mediaDao.queryMediaById(mediaId); } catch (Exception e) { e.printStackTrace(); } request.setAttribute("media", media); request.getRequestDispatcher("media_player.jsp").forward(request, response); } } }

相關推薦

Java實現視頻網站的視頻視頻視頻關鍵, 視頻播放功能

mpeg 表單 大小 too center mark object 無法解析 ray 視頻網站中提供的在線視頻播放功能,播放的都是FLV格式的文件,它是Flash動畫文件,可通過Flash制作的播放器來播放該文件.項目中用制作的player.swf播放器. 多媒體視頻處理

java實現大文件

單元 logs method 異步 {} eth UNC 大小 請求 文件上傳是最古老的互聯網操作之一,20多年來幾乎沒有怎麽變化,還是操作麻煩、缺乏交互、用戶體驗差。 一、前端代碼 英國程序員Remy Sharp總結了這些新的接口 ,本文在他的基礎之上,討論在前端采用HT

JAVA實現客戶端圖片至伺服器(SSM)(不使用input 標籤使用,瀏覽器圖片直接伺服器)

JAVA實現客戶端圖片上傳至伺服器(SSM)(不使用input 標籤使用,瀏覽器圖片直接上傳伺服器) 這是本人第一篇部落格 想著記錄一下平時學習的過程,也提供給和我一樣正在學習java的同學們!!(如果有不懂的同學歡迎留言 有時間一定回覆,寫的不好的地方請多包涵) * 開始: 首先要

Atitit 檔案功能實現 圖片 視訊 目錄 1. 原理 1 1.1. http post編碼 multipart / form-data 1 1.2. 臨時檔案模式 最簡單 2 1.3

Atitit 檔案上傳功能的實現 圖片 視訊   目錄 1. 上傳原理 1 1.1. http post編碼 multipart / form-data 1 1.2. 臨時檔案模式  最簡單 2 1.3. 位元組陣列模式  簡單 2

Java檔案資料庫(並儲存本地)wordpdf並進行頁面預覽

對於頁面預覽用到了OpenOffice附件: 官方的下載地址:Apache OpenOffice 選擇windows版本安裝完成後,在cmd中執行下面兩個命令,檢視工作管理員中是否有soffice.bin的程序。(用到OpenOffice,必須保證工作管理員中有

【優化版】Java檔案資料庫(並儲存本地)wordpdf並進行頁面預覽

上一篇檔案上傳【點選跳轉】,是將路徑等檔案資訊存進log_file臨時表,內容二進位制存入資料庫Test表,這種邏輯是在呼叫資料庫表Test內容展示時,判斷檔案為word(轉換成pdf)還是pdf(直接展示)。 上一篇連結:連結地址。 下面進一步優化: 具體邏輯

wangEditor 修改 “視訊”選單 的實現方式,達到視訊功能---完整版

(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory()

wangEditor 修改 “視訊”選單 的實現方式,達到視訊功能---精簡版

/* menu - video */ // 建構函式 function Video(editor) { this.editor = editor; this.$elem = $('<div class="w-e-menu"><i cl

EasyNVR流媒體伺服器接入EasyDSS雲視訊平臺快照實現

EasyNVR擁有接入EasyDSS雲平臺的功能 接入EasyDSS雲平臺會定時向雲平臺上傳快照資料,這個快照資料用於雲平臺向客戶端提供快照展示 遇到的問題 由於快照上傳的間隔提供認為修改的功能,則我們限定最短時間為1分鐘 通道的數量會直接影響快照上傳

java:ssh連接服務實現本地文件和下載

scp lock str path close gen conn 連接服務器 超時 1.連接至服務器:ssh [email protected] -p 5555 下載文件:scp -r [email protected]:/ccc(服務器路徑,文件夾下所有文件) /path(本

Web安全_檔案總結(前端js驗證後端驗證)

一、檔案上傳思路 首先我們通過一個網站上傳一個非法格式的檔案 在瀏覽載入檔案,但還未點選上傳按鈕時便彈出對話方塊,內容如:只允許上傳.jpg/.jpeg/.png字尾名的檔案,而此時並沒有傳送資料包。 如果網頁未彈窗,而在頁面彈窗,則考慮後端驗證 所以就圍繞前

ajax視訊拖拽(完善版)

在前輩的基礎上,進行了一些完善 功能:可實現拖拽上傳視訊,有進度條顯示,MP4格式的視訊還可實現線上播放, 進行了視訊上傳格式限制,格式不符合有提示不能上傳,大小可按情況自行新增限制 最重要的是實現了大檔案斷點續傳的功能,更詳細功能可下載後體驗,就不一 一贅述了 首先,建

jquery.fileupload.js外掛使用--單視訊或音訊預覽

一、前臺程式碼: <!DOCTYPE html> <html> <head> <title>jquery.fileupload.js使用測試</title> <script src="jqu

HTML5實現input:file壓縮,等比壓縮圖片base64和檔案互相轉換

本文例項為大家分享了Vue2.0實現呼叫攝像頭進行拍照功能的具體程式碼,以及圖片上傳功能引用exif.js,供大家參考,具體內容如下 外掛: 1.jquery.min.js 2.exif.js 效果目標:實現等比例壓縮上傳 上程式碼 HTML <!DO

Java 傳送http請求,檔案

package wxapi.WxHelper; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.F

java+jsp程式碼實現從FTP伺服器下載檔案

首先宣告一下。jsp從ftp伺服器上面下載檔案,有兩種方法1.直接給出檔案的地址 2.將檔案作為位元組流返回給瀏覽器 一 、先說第一種吧(這種發放很簡單)。 1.直接使用一個超連結:<a href='ftp://FTP使用者名稱:密碼@IP地址:埠號+ 後面是路徑 (

Vue directive自定義指令+canvas實現H5圖片壓縮-Base64格式

前言 最近優化專案-手機拍照圖片太大,回顯速度比較慢,使用了vue的自定義指令實現H5壓縮上傳base64格式的圖片 canvas自定義指令 Vue.directive("canvas",

java根據“魔數”判斷檔案型別

與Java的class檔案類似,很多型別的檔案,起始的幾個位元組內容都是固定的,跟據這幾個位元組的內容,就可以判斷檔案的型別,這幾個位元組也被稱為“魔數”,比如class檔案的魔數就是“CAFEBABE”。 通過魔數判斷檔案型別便是一種更安全的方式: 一:建立列舉類

iOS App Store 預覽視訊尺寸要求(經驗)

                      聯絡人:石虎 QQ:1224614774  暱稱: 嗡嘛呢叭咪哄                                QQ群:80723613