真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java上傳視頻轉(zhuǎn)碼代碼 java實(shí)現(xiàn)視頻轉(zhuǎn)碼

用JAVA調(diào)用ffmpeg實(shí)現(xiàn)將各種視頻格式轉(zhuǎn)為flv時(shí),怎樣做出簡(jiǎn)單操作的界面?

源代碼肯定不會(huì)貼給你的,思路可以說(shuō)下!

開(kāi)福網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,開(kāi)福網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為開(kāi)福1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的開(kāi)福做網(wǎng)站的公司定做!

首先,你在后臺(tái)把各格式的相互轉(zhuǎn)換函數(shù)寫(xiě)好比如,rm2flv,wav2flv,自己去掉人家的借口,找下demo代碼。

然后,做一個(gè)表單網(wǎng)頁(yè),能上傳源文件到服務(wù)器,點(diǎn)擊上傳提交任務(wù)

最后,上傳完畢,判斷文件格式(后綴),然后調(diào)用對(duì)應(yīng)的函數(shù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換完畢后,可以給出轉(zhuǎn)換信息,如文件大小,轉(zhuǎn)換時(shí)間,轉(zhuǎn)換后文件url地址等

完畢!

java怎么實(shí)現(xiàn)視頻上傳

方法/步驟

1

首先這里jsp頁(yè)面的代碼 定義布局文件html的 如圖所示

這是js文件 打開(kāi)一個(gè)新子窗口和向頁(yè)面中加載視頻播放標(biāo)簽

上傳文件java代碼 獲取時(shí)間轉(zhuǎn)換成字符串作為上傳之后的文件名以及設(shè)置保存路徑和傳值到j(luò)sp頁(yè)面

這里copy代碼 將一個(gè)源文件復(fù)制到新的目錄路徑下 如圖所示

這里upload的jsp文件 用來(lái)選擇視頻文件并提交給后臺(tái)

展示舊文件名新文件名和上傳后的文件目錄路徑 并將其傳給父頁(yè)面即index.jsp

upload.jsp文件提交的代碼經(jīng)過(guò)java文件處理后通過(guò)控制轉(zhuǎn)到upload_video.jsp

代碼片段已經(jīng)貼出來(lái)了,接下來(lái)我們開(kāi)始演示界面 打開(kāi)后如圖所示 點(diǎn)擊上傳按鈕

點(diǎn)擊選擇文件 找到要上傳的視頻文件 選中后選擇打開(kāi) 然后點(diǎn)擊確定按鈕

這里就是顯示新舊文件名和文件目錄路徑的界面 點(diǎn)擊確定將文件目錄傳給父文件界面

如圖所示 目錄路徑已經(jīng)出給input中了 點(diǎn)擊播放按鈕 就會(huì)出現(xiàn)播放界面并且自動(dòng)播放了

java 項(xiàng)目開(kāi)發(fā) 實(shí)現(xiàn)上傳視頻。

上傳視頻?只是上傳的話,相當(dāng)于,上傳文件了

html如下

form action="MultipartTestServlet" enctype="multipart/form-data" method="post"

input type="text" name="username" /br /

input type="file" name="myfile" /br/

input type="submit" /

/form

java如下

MultipartTestServlet.java

package com.bug.servlet;

import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

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.FileUpload;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.RequestContext;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

import org.apache.commons.fileupload.servlet.ServletRequestContext;

public class MultipartTestServlet extends HttpServlet {

public MultipartTestServlet() {

super();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("gbk");

RequestContext requestContext = new ServletRequestContext(request);

if(FileUpload.isMultipartContent(requestContext)){

DiskFileItemFactory factory = new DiskFileItemFactory();

factory.setRepository(new File("c:/tmp/"));

ServletFileUpload upload = new ServletFileUpload(factory);

//upload.setHeaderEncoding("gbk");

upload.setSizeMax(2000000);

List items = new ArrayList();

try {

items = upload.parseRequest(request);

} catch (FileUploadException e1) {

System.out.println("文件上傳發(fā)生錯(cuò)誤" + e1.getMessage());

}

Iterator it = items.iterator();

while(it.hasNext()){

FileItem fileItem = (FileItem) it.next();

if(fileItem.isFormField()){

System.out.println(fileItem.getFieldName() + " " + fileItem.getName() + " " + new String(fileItem.getString().getBytes("iso8859-1"), "gbk"));

}else{

System.out.println(fileItem.getFieldName() + " " +

fileItem.getName() + " " +

fileItem.isInMemory() + " " +

fileItem.getContentType() + " " +

fileItem.getSize());

if(fileItem.getName()!=null fileItem.getSize()!=0){

File fullFile = new File(fileItem.getName());

File newFile = new File("c:/temp/" + fullFile.getName());

try {

fileItem.write(newFile);

} catch (Exception e) {

e.printStackTrace();

}

}else{

System.out.println("文件沒(méi)有選擇 或 文件內(nèi)容為空");

}

}

}

}

}

}

web.xml中加入

servlet

servlet-nameMultipartTestServlet/servlet-name

servlet-classcom.bug.servlet.MultipartTestServlet/servlet-class

/servlet

需要的包到這三個(gè)地方下載

下載

下載

在下載

關(guān)于視頻的播放,你只能自己再去找了

java中怎樣將視頻文件轉(zhuǎn)換成二進(jìn)制文件再轉(zhuǎn)換回視頻文件?求具體代碼!

其實(shí)x.avi本身也是二進(jìn)制文件,你只需要按照二進(jìn)制文件讀取方式讀取就可以了,所以不理解你這里的x.dat又是什么樣的?或者是說(shuō)輪換成文本文件?如果這樣的話你將x.avi一個(gè)字符一個(gè)字符地讀取然后用16進(jìn)制保存到x.dat中即可。

再轉(zhuǎn)換為y.avi時(shí)同理,讀取x.dat中的兩個(gè)文本字符,轉(zhuǎn)換成byte再寫(xiě)入y.avi即可。

怎樣使用javaweb實(shí)現(xiàn)上傳視頻和下載功能?

文件上傳就是將客戶端資源,通過(guò)網(wǎng)路傳遞到服務(wù)器端。

因?yàn)槲募?shù)據(jù)比較大,必須通過(guò)文件上傳才可以完成將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)端的操作。

文件上傳的本質(zhì)就是IO流操作。

演示:文件上傳應(yīng)該如何操作?

瀏覽器端:

1.method=post 只有post才可以攜帶大數(shù)據(jù)

2.必須使用input type='file' name='f'要有name屬性

3.encType="multipart/form-data"

服務(wù)器端:

request對(duì)象是用于獲取請(qǐng)求信息。

它有一個(gè)方法 ?getInputStream(); 可以獲取一個(gè)字節(jié)輸入流,通過(guò)這個(gè)流,可以讀取到

所有的請(qǐng)求正文信息.

文件上傳原理:

瀏覽器端注意上述三件事,在服務(wù)器端通過(guò)流將數(shù)據(jù)讀取到,在對(duì)數(shù)據(jù)進(jìn)行解析.

將上傳文件內(nèi)容得到,保存在服務(wù)器端,就完成了文件上傳。

注意:在實(shí)際開(kāi)發(fā)中,不需要我們進(jìn)行數(shù)據(jù)解析,完成文件上傳。因?yàn)槲覀儠?huì)使用文件上傳的工具,它們已經(jīng)封裝好的,提供API,只要調(diào)用它們的API就可以完成文件上傳操作.我們使用的commons-fileupload,它是apache提供的一套開(kāi)源免費(fèi)的文件上傳工具。

代碼演示文件上傳的原理:

在WebRoot下新建upload1.jsp

[html]?view plain?copy

%@?page?language="java"?import="java.util.*"?pageEncoding="UTF-8"%

!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"

html

head

titleMy?JSP?'index.jsp'?starting?page/title

/head

body

!--?encType?默認(rèn)是application/x-www-form-urlencoded?--

form?action="${pageContext.request.contextPath?}/upload1"

method="POST"?enctype="multipart/form-data"

input?type="text"?name="content"br

input?type="file"?name="f"br?input?type="submit"

value="上傳"

/form

/body

/html

新建Upload1Servlet ?路徑:/upload1

[java]?view plain?copy

package?cn.itcast.web.servlet;

import?java.io.IOException;

import?java.io.InputStream;

import?javax.servlet.ServletException;

import?javax.servlet.http.HttpServlet;

import?javax.servlet.http.HttpServletRequest;

import?javax.servlet.http.HttpServletResponse;

public?class?Upload1Servlet?extends?HttpServlet?{

public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

//?System.out.println("upload1?servlet......");

//?通過(guò)request獲取一個(gè)字節(jié)輸入流,將所有的請(qǐng)求正文信息讀取到,打印到控制臺(tái)

InputStream?is?=?request.getInputStream();

byte[]?b?=?new?byte[1024];

int?len?=?-1;

while?((len?=?is.read(b))?!=?-1)?{

System.out.println(new?String(b,?0,?len));

}

is.close();

}

public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

doGet(request,?response);

}

}

在瀏覽器端訪問(wèn)信息如下:

后臺(tái)打印正文信息如下:

文件上傳概述

實(shí)現(xiàn)web開(kāi)發(fā)中的文件上傳功能,需要完成如下二步操作:

在web頁(yè)面中添加上傳輸入項(xiàng)。

在Servlet中讀取上傳文件的數(shù)據(jù),并保存在服務(wù)器硬盤(pán)中。

如何在web頁(yè)面中添加上傳輸入項(xiàng)?

input ?type="file"標(biāo)簽用于在web頁(yè)面中添加文件上傳輸入項(xiàng),設(shè)置文件上傳輸入項(xiàng)時(shí)注意:

1、必須設(shè)置input輸入項(xiàng)的name屬性,否則瀏覽器將不會(huì)發(fā)送上傳文件的數(shù)據(jù)。

2、必須把form的encType屬性設(shè)為multipart/form-data 設(shè)置該值后,瀏覽器在上傳文件時(shí),并把文件數(shù)據(jù)附帶在http請(qǐng)求消息體內(nèi),并使用MIME協(xié)議對(duì)上傳的文件進(jìn)行描述,以方便接收方對(duì)上傳數(shù)據(jù)進(jìn)行解析和處理。

3、表單的提交方式要設(shè)置為post。

如何在Servlet中讀取文件上傳數(shù)據(jù),并保存到本地硬盤(pán)中?

Request對(duì)象提供了一個(gè)getInputStream方法,通過(guò)這個(gè)方法可以讀取到客戶端提交過(guò)來(lái)的數(shù)據(jù)。但由于用戶可能會(huì)同時(shí)上傳多個(gè)文件,在servlet端編程直接讀取上傳數(shù)據(jù),并分別解析出相應(yīng)的文件數(shù)據(jù)是一項(xiàng)非常麻煩的工作,示例。

為方便用戶處理文件上傳數(shù)據(jù),Apache 開(kāi)源組織提供了一個(gè)用來(lái)處理表單文件上傳的一個(gè)開(kāi)源組件( Commons-fileupload ),該組件性能優(yōu)異,并且其API使用極其簡(jiǎn)單,可以讓開(kāi)發(fā)人員輕松實(shí)現(xiàn)web文件上傳功能,因此在web開(kāi)發(fā)中實(shí)現(xiàn)文件上傳功能,通常使用Commons-fileupload組件實(shí)現(xiàn)。

使用Commons-fileupload組件實(shí)現(xiàn)文件上傳,需要導(dǎo)入該組件相應(yīng)支撐jar包:Commons-fileupload和commons-io。commo-io不屬于文件上傳組件的開(kāi)發(fā)jar文件,但Commons-fileupload組件從1.1版本開(kāi)始,它工作時(shí)需要commons-io包的支持。

急急急?。?!java 用ffmpeg將上傳的視頻轉(zhuǎn)成 .mp4 .ogg .webm 3種格式的視頻,沒(méi)思路,麻煩大神給點(diǎn)思路

import java.io.File;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.List;

public class ConvertVideo {

private final static String PATH = "c:\\ffmpeg\\input\\c.mp4";

public static void main(String[] args) {

if (!checkfile(PATH)) {

System.out.println(PATH + " is not file");

return;

}

if (process()) {

System.out.println("ok");

}

}

private static boolean process() {

int type = checkContentType();

boolean status = false;

if (type == 0) {

System.out.println("直接將文件轉(zhuǎn)為flv文件");

status = processFLV(PATH);// 直接將文件轉(zhuǎn)為flv文件

} else if (type == 1) {

String avifilepath = processAVI(type);

if (avifilepath == null)

return false;// avi文件沒(méi)有得到

status = processFLV(avifilepath);// 將avi轉(zhuǎn)為flv

}

return status;

}

private static int checkContentType() {

String type = PATH.substring(PATH.lastIndexOf(".") + 1, PATH.length())

.toLowerCase();

// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)

if (type.equals("avi")) {

return 0;

} else if (type.equals("mpg")) {

return 0;

} else if (type.equals("wmv")) {

return 0;

} else if (type.equals("3gp")) {

return 0;

} else if (type.equals("mov")) {

return 0;

} else if (type.equals("mp4")) {

return 0;

} else if (type.equals("asf")) {

return 0;

} else if (type.equals("asx")) {

return 0;

} else if (type.equals("flv")) {

return 0;

}

// 對(duì)ffmpeg無(wú)法解析的文件格式(wmv9,rm,rmvb等),

// 可以先用別的工具(mencoder)轉(zhuǎn)換為avi(ffmpeg能解析的)格式.

else if (type.equals("wmv9")) {

return 1;

} else if (type.equals("rm")) {

return 1;

} else if (type.equals("rmvb")) {

return 1;

}

return 9;

}

private static boolean checkfile(String path) {

File file = new File(path);

if (!file.isFile()) {

return false;

}

return true;

}

// 對(duì)ffmpeg無(wú)法解析的文件格式(wmv9,rm,rmvb等), 可以先用別的工具(mencoder)轉(zhuǎn)換為avi(ffmpeg能解析的)格式.

private static String processAVI(int type) {

ListString commend = new ArrayListString();

commend.add("c:\\ffmpeg\\mencoder");

commend.add(PATH);

commend.add("-oac");

commend.add("lavc");

commend.add("-lavcopts");

commend.add("acodec=mp3:abitrate=64");

commend.add("-ovc");

commend.add("xvid");

commend.add("-xvidencopts");

commend.add("bitrate=600");

commend.add("-of");

commend.add("avi");

commend.add("-o");

commend.add("c:\\ffmpeg\\output\\a.avi");

try {

ProcessBuilder builder = new ProcessBuilder();

builder.command(commend);

builder.start();

return "c:\\ffmpeg\\output\\a.avi";

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)

private static boolean processFLV(String oldfilepath) {

if (!checkfile(PATH)) {

System.out.println(oldfilepath + " is not file");

return false;

}

// 文件命名

Calendar c = Calendar.getInstance();

String savename = String.valueOf(c.getTimeInMillis())+ Math.round(Math.random() * 100000);

ListString commend = new ArrayListString();

commend.add("c:\\ffmpeg\\ffmpeg");

commend.add("-i");

commend.add(oldfilepath);

commend.add("-ab");

commend.add("56");

commend.add("-ar");

commend.add("22050");

commend.add("-qscale");

commend.add("8");

commend.add("-r");

commend.add("15");

commend.add("-s");

commend.add("600x500");

commend.add("c:\\ffmpeg\\output\\a.flv");

try {

Runtime runtime = Runtime.getRuntime();

Process proce = null;

String cmd = "";

String cut = " c:\\ffmpeg\\ffmpeg.exe -i "

+ oldfilepath

+ " -y -f image2 -ss 8 -t 0.001 -s 600x500 c:\\ffmpeg\\output\\"

+ "a.jpg";

String cutCmd = cmd + cut;

proce = runtime.exec(cutCmd);

ProcessBuilder builder = new ProcessBuilder(commend);

builder.command(commend);

builder.start();

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

}


網(wǎng)頁(yè)標(biāo)題:java上傳視頻轉(zhuǎn)碼代碼 java實(shí)現(xiàn)視頻轉(zhuǎn)碼
URL鏈接:http://weahome.cn/article/dosdoos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部