阿里雲OSS上傳視訊前端只能聲音沒有影像(黑屏)解決辦法
原因
今天前端開發告訴上傳圖片發現視訊只有聲音沒有影像,讓他發視訊給我上傳一遍發現有聲音有影像,情況如下圖,在postman中視訊可播放,但是沒有畫面
最後在阿里雲的這篇文件裡找到問題的原因:
問題在於視訊編碼格式的問題,視訊檔案為MPEG4或HEVC等格式(H.265編碼),常見的Web瀏覽器暫不相容該編碼的視訊檔案。
前端發給我的時候,微信已經經過一遍壓縮轉碼(發過來給我時檔案小了很多,一開始以為是檔案大小的問題),所以上傳後有影像有聲音。
解決辦法
只需要將視訊轉碼為H.264編碼即可。
pom配置
<!-- windows使用這個座標 -->
<!-- <dependency>-->
<!-- <groupId>ws.schild</groupId>-->
<!-- <artifactId>jave-native-win64</artifactId>-->
<!-- <version>2.4.5</version>-->
<!-- </dependency>-->
<!-- osx使用這個座標 -->
<!-- <dependency>-->
<!-- <groupId>ws.schild</groupId>-->
<!-- <artifactId>jave-native-osx64</artifactId>-->
<!-- <version>2.4.4</version>-->
<!-- </dependency>-->
<!-- linux使用這個座標 -->
<dependency>
<groupId>ws.schild</groupId>
<artifactId>jave-native-linux64</artifactId>
<version>2.4.4</version>
</dependency>
java程式碼
// 上傳的檔案
File tempFile = File.createTempFile(UUID.randomUUID().toString(), suffix);
// 將前端上傳的MultipartFile轉為File
multipartFile.transferTo(tempFile);
// 如果是視訊需要轉碼的檔案
File file = File.createTempFile(UUID.randomUUID().toString(), suffix);
// TODO 根據你的邏輯來判斷檔案是不是視訊
AudioAttributes audio = new AudioAttributes();
// 音訊編碼格式
audio.setCodec("libmp3lame");
audio.setBitRate(800000);
audio.setChannels(1);
VideoAttributes video = new VideoAttributes();
// 編碼格式
video.setCodec("libx264");
video.setBitRate(3200000);
// 幀率
video.setFrameRate(15);
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("mp4");
// 設定音訊
attrs.setAudioAttributes(audio);
// 設定視訊畫面
attrs.setVideoAttributes(video);
Encoder encoder = new Encoder();
MultimediaObject multimediaObject = new MultimediaObject(tempFile);
encoder.encode(multimediaObject, file, attrs);
// 上傳到阿里雲OSS
String url = ossUtil.upload(FileTypeEnum.IMAGE, file);
// 刪除臨時檔案
tempFile.delete();
file.delete();
// 返回url
return url;
結果
postman預覽,可以正常顯示視訊影像
如果分片上傳,postman顯示結果是下面的結果,設定ContentType即可預覽
java程式碼
// 獲取檔案型別
String type = Files.probeContentType(file.toPath());
ObjectMetadata metadata = newObjectMetadata();
metadata.setContentType(type);
// 非分片上傳使用
// PutObjectRequest request = new PutObjectRequest(bucketName, fileUrl, file, metadata)
// 分片上傳使用
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, fileUrl, metadata);
總結
因為看還看到別人寫過OSS無法顯示影像解決辦法,所以寫給碰到這個問題的人,希望大家少走彎路,拿更多時間去學習工作,謝謝觀看!
相關文章
- 電腦沒有聲音的解決辦法
- 耳機沒聲音怎麼辦 電腦耳機沒有聲音的解決辦法
- 電腦沒聲音但是揚聲器顯示有聲音怎麼辦?電腦沒聲音的解決辦法
- 電腦沒聲音怎麼辦?電腦沒聲音的解決辦法
- win10系統沒有聲音的解決辦法Win10
- 電腦沒有音訊裝置怎麼辦? 沒有音訊裝置的解決辦法音訊
- win10音響沒有聲音怎麼辦_win10音響插電腦沒聲音解決辦法Win10
- win10錄屏沒視訊聲音怎麼辦 win10電腦錄屏沒有聲音解決方法Win10
- 電腦沒有音訊裝置怎麼解決? 電腦沒有音訊裝置的解決辦法音訊
- 麥克風沒聲音怎麼辦 電腦麥克風沒聲音解決辦法
- 電腦沒有音訊裝置怎麼辦? 電腦沒有音訊裝置的解決辦法音訊
- 電腦前面耳機沒聲音 電腦前面耳機沒聲音的解決辦法
- 聯想Thinkpad的win10系統沒有外放沒有聲音,插耳機才有聲音的解決辦法ThinkPadWin10
- win10怎麼錄螢幕視訊帶聲音 錄製視訊沒有聲音的解決方法Win10
- 電腦前面耳機沒聲音的解決辦法 電腦前面插耳機沒聲音怎麼辦
- win10麥克風沒禁用沒聲音解決辦法Win10
- Win10系統播放視訊有聲音沒有畫面的解決方法Win10
- 解決Kali Linux沒有聲音Linux
- 電腦前面沒聲音後面正常的解決辦法
- 解決flutter中webview視訊流播放Android正常,ios下有聲音沒影像問題FlutterWebViewAndroidiOS
- win10系統電腦插上耳機沒有聲音怎麼辦的解決辦法Win10
- 度秘怎麼說話沒聲音?百度度秘說話沒聲音解決辦法
- win10錄屏沒有聲音怎麼辦 win10錄屏沒聲音的解決方法Win10
- win10系統玩爐石傳說黑屏有聲音怎麼辦Win10
- Win10玩紅警黑屏有聲音和滑鼠怎麼解決 win10玩紅警黑屏有聲音和滑鼠的解決方法Win10
- win10紅警2黑屏有聲音怎麼解決_win10紅警2黑屏有聲音有滑鼠修復方法Win10
- win10錄屏沒影片聲音怎麼辦 win10電腦錄屏沒有聲音解決方法Win10
- win10前皮膚耳機沒聲音怎麼設定 耳機插前皮膚沒聲音的解決辦法Win10
- win10開機關機沒聲音怎麼解決_win10沒有開關機聲音怎麼辦Win10
- win10連線投影沒有聲音怎麼辦 win10 連線投影儀沒聲音怎麼解決Win10
- 剛裝的win10系統沒有聲音怎麼辦_win10系統更新後沒有聲音的解決方法Win10
- 求救,flash cookie 視訊節目都無法觀看。沒有辦法了嗎,只能任人宰割??Cookie
- win10 主機後置音訊沒聲音怎麼辦_win10主機背部音訊輸出無聲音解決方法Win10音訊
- Win10電腦啟動沒有聲音怎麼辦 win10系統啟動沒聲音的解決方法Win10
- 騰訊會議錄屏沒聲音怎麼辦?騰訊會議錄屏沒聲音的解決方法
- windows10錄屏沒聲音怎麼辦_windows10錄屏沒聲音的解決方法Windows
- win7黑屏解決辦法Win7
- win10 絕地求生遊戲聲音很小几乎沒有聲音怎麼解決Win10遊戲