- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > 編程語(yǔ)言 >
- javaCV開(kāi)發(fā)詳解之收流器實(shí)現
本章基于javaCV實(shí)現收流器功能和錄制功能
補充:基于本功能可以實(shí)現遠程流媒體服務(wù)器實(shí)時(shí)視頻錄制到本地
javacv.jar,javacpp.jar,ffmpeg.jar,ffmpeg-系統平臺.jar,opencv.jar,opencv-系統平臺.jar。 其中ffmpeg-系統平臺.jar,opencv-系統平臺.jar中的系統平臺根據開(kāi)發(fā)環(huán)境或者測試部署環(huán)境自行更改為對應的jar包,比如windows7 64位系統替換為ffmpeg-x86-x64.jar
本章使用windows環(huán)境開(kāi)發(fā),基于javaCV的基礎支撐包以及ffmpeg-3.1.2-1.2.jar、ffmpeg-3.1.2-1.2-windows-x86.jar、ffmpeg-3.1.2-1.2-windows-x86_64.jar;
本功能采用按幀實(shí)現收流器錄制功能
/** * 按幀錄制視頻 * @param inputFile-該地址可以是網(wǎng)絡(luò )直播/錄播地址,也可以是遠程/本地文件路徑 * @param outputFile * 該地址只能是文件地址,如果使用該方法推送流媒體服務(wù)器會(huì )報錯,原因是沒(méi)有設置編碼格式 * @throws FrameGrabber.Exception * @throws FrameRecorder.Exception * @throws org.bytedeco.javacv.FrameRecorder.Exception */ public static void frameRecord(String inputFile, String outputFile, int audioChannel) throws Exception, org.bytedeco.javacv.FrameRecorder.Exception { boolean isStart=true;//該變量建議設置為全局控制變量,用于控制錄制結束 // 獲取視頻源 FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFile); // 流媒體輸出地址,分辨率(長(cháng),高),是否錄制音頻(0:不錄制/1:錄制) FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFile, 1280, 720, audioChannel); // 開(kāi)始取視頻源 recordByFrame(grabber, recorder, isStart); }
private static void recordByFrame(FFmpegFrameGrabber grabber, FFmpegFrameRecorder recorder, Boolean status) throws Exception, org.bytedeco.javacv.FrameRecorder.Exception { try {//建議在線(xiàn)程中使用該方法 grabber.start(); recorder.start(); Frame frame = null; while (status&& (frame = grabber.grabFrame()) != null) { recorder.record(frame); } recorder.stop(); grabber.stop(); } finally { if (grabber != null) { grabber.stop(); } } }
inputFile設置為服務(wù)器播放地址,outputFile設置為本地地址,這里演示.mp4,也可以是flv等其他后綴名
public static void main(String[] args) throws FrameRecorder.Exception, FrameGrabber.Exception, InterruptedException { String inputFile = "rtsp://admin:admin@192.168.2.236:37779/cam/realmonitor?channel=1&subtype=0"; // Decodes-encodes String outputFile = "recorde.mp4"; frameRecord(inputFile, outputFile,1); }
以上就是javaCV開(kāi)發(fā)詳解之收流器實(shí)現的詳細內容,更多關(guān)于javaCV收流器的資料請關(guān)注腳本之家其它相關(guān)文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站