欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java怎樣通過視頻播放地址獲取到視頻的下載地址

方一強2年前26瀏覽0評論

java怎樣通過視頻播放地址獲取到視頻的下載地址?

在上傳時手動輸入視頻時長,但是之前庫中有上萬條數據沒這個信息,如果這樣一條一條手動輸入,人都得瘋掉。所以誰也不提不管這破事,在這之前的視頻時長信息就讓它空在那。最近領導讓我做個按類目分類統計視頻時長信息,和領導反映了這個問題,最終解決方案就把沒有的做0處理。在完成了這個功能后,我就在想能用什么方式把之前的視頻時長全部給更新上去。手動輸入這個肯定時不行的,必須得java后臺來獲取錄入。但上網搜索了無數的帖子,最終通過java實現的只有一種方法能用,那就是先要下載到本地,然后再一個一個的遍歷查詢。看著服務器上的上萬個視頻,想想這方法就讓人頭皮發麻。

雖然沒找到可行方法,但基本上都是用jave獲取視頻信息的。于是就去查看jave的官方API,了解到是通過FFmpeg處理多媒體文件,接著又查看FFmpeg的API,發現ffmpeg在命令行中使用時可以通過url獲取視頻。但使用jave工具包時獲取MultimediaInfo就必須得傳入File,可是又不能通過url創建File。于是就就反編譯jave的jar從源碼上動手。

// 源碼

public MultimediaInfo getInfo(File source)

throws InputFormatException, EncoderException

{

FFMPEGExecutor ffmpeg;

ffmpeg = locator.createExecutor();

ffmpeg.addArgument("-i");

ffmpeg.addArgument(source.getAbsolutePath());

try

{

ffmpeg.execute();

}

catch(IOException e)

{

throw new EncoderException(e);

}

MultimediaInfo multimediainfo;

RBufferedReader reader = null;

reader = new RBufferedReader(new InputStreamReader(ffmpeg.getErrorStream()));

multimediainfo = parseMultimediaInfo(source, reader);

ffmpeg.destroy();

return multimediainfo;

Exception exception;

exception;

ffmpeg.destroy();

throw exception;

}

ffmpeg傳入參數時使用的是

source.getAbsolutePath()獲取文件的絕對路徑,所以通過url創建File在這是獲取的就是 項目路徑+url了。

然后就把傳入path修改成了url,但是運行還是出現 InputFormatException異常。好吧,那就繼續找問題吧

然后debug發現雖然修改了path,但是這路徑細看還是不對

http://v1.v.123.com\11\919\2019\zb\0181.mp4

正確的url應該是這樣的:http://v1.v.123.com/11/919/2019/zb/0181.mp4

接著更正問題。

if(path.indexOf("http") != -1) {

path = source.getPath();

path = path.split(":")[0] + "://" + path.split(":")[1].substring(1);

path = path.replace("\\", "/");

}

這次終于沒問題了,可以正常使用了。然后還有下面這個方法的調用,源碼中有個獲取異常信息的也得修改path值

multimediainfo = parseMultimediaInfo(source, reader);

這個也和只需重復上面的操作就OK了。這樣就完全搞定了。

import lx.jave.AudioAttributes;

import lx.jave.AudioInfo;

import lx.jave.Encoder;

import lx.jave.EncoderException;

import lx.jave.EncodingAttributes;

import lx.jave.InputFormatException;

import lx.jave.MultimediaInfo;

import lx.jave.VideoInfo;

import lx.jave.VideoSize;

/**

* jave多媒體工具類(需導出jave jar包)

* @author longxiong

*

*/

public class JaveToolsTest {

public static void main(String[] args) throws InputFormatException, EncoderException, Exception {

/**

* 獲取本地多媒體文件信息

*/

// 編碼器

Encoder encoder = new Encoder();

File file = new File("http://*****018.mp4");

// 多媒體信息

MultimediaInfo info = encoder.getInfo(file);

// 時長信息

long duration = info.getDuration();

System.out.println("視頻時長為:" + duration / 1000 + "秒");

// 音頻信息

AudioInfo audio = info.getAudio();

int bitRate = audio.getBitRate(); // 比特率

int channels = audio.getChannels(); // 聲道

String decoder = audio.getDecoder(); // 解碼器

int sRate = audio.getSamplingRate(); // 采樣率

System.out.println("解碼器:" + decoder + ",聲道:" + channels + ",比特率:" + bitRate + ",采樣率:" + sRate);

// 視頻信息

VideoInfo video = info.getVideo();

int bitRate2 = video.getBitRate();

Float fRate = video.getFrameRate(); // 幀率

VideoSize videoSize = video.getSize();

int height = videoSize.getHeight(); // 視頻高度

int width = videoSize.getWidth(); // 視頻寬度

System.out.println("視頻幀率:" + fRate + ",比特率:" + bitRate2 + ",視頻高度:" + height + ",視頻寬度:" + width);

}

}

split java,java怎樣通過視頻播放地址獲取到視頻的下載地址