一令蛉、AVPlayer播放器
1.播放異常問(wèn)題
1)開(kāi)始播放時(shí)黑屏/花屏一下
原因:沒(méi)有緩存好數(shù)據(jù)就開(kāi)始播放,導(dǎo)致卡頓和解碼異常.
解決辦法:收到ReadyToPlay后不要立即播放,多緩存1到2秒的數(shù)據(jù)后再播放
2)畫(huà)面卡頓:有些視頻出現(xiàn)播放幾秒畫(huà)面卡住音頻繼續(xù)播放的問(wèn)題留攒,檢測(cè)mp4格式?jīng)]有問(wèn)題壹粟,android和Windows可以正常播放热押,Mac不能直接播放會(huì)自動(dòng)下載斗这。
原因:mp4視頻編碼格式問(wèn)題,標(biāo)準(zhǔn)mp4格式是H254編碼制定使用的標(biāo)準(zhǔn)封裝格式虏束。
解決辦法:使用AVPlayer+FFmpeg(多媒體轉(zhuǎn)碼)共同進(jìn)行視頻流的播放處理棉饶。為了解決這個(gè)問(wèn)題,我采用了SGPlayer三方庫(kù)(支持視頻镇匀,直播照藻,VR等),設(shè)置采用FFmpeg的編碼格式。
SGPlayer下載地址:https://github.com/libobjc/SGPlayer
二汗侵、SGPlayer播放器
1.遇到問(wèn)題:
1)當(dāng)視頻的顯示模式設(shè)置為SGGravityModeResizeAspect時(shí)幸缕,當(dāng)視頻資源的像素720p(1280*720)時(shí),視頻在16:9的視圖中會(huì)自動(dòng)變窄晰韵,導(dǎo)致視頻的資源要是1080p(1920*1080)以上才不變形发乔。所以要設(shè)置SGGravityModeResizeAspectFill,全屏?xí)r手動(dòng)改變Player的大小雪猪。
2)視頻只能聽(tīng)到背景音樂(lè)栏尚,聽(tīng)不到另一個(gè)播放的內(nèi)容。
原因:視頻資源是左右聲道分離的視頻(左聲道只能聽(tīng)到背景音只恨,右聲道聽(tīng)到其他聲音)译仗,可以通過(guò)耳機(jī)左右兩聽(tīng)筒分辨抬虽。AVPlayer底層是自動(dòng)兼容的,然后項(xiàng)目中使用SGPlayer時(shí)纵菌,因?yàn)樵O(shè)置支持FFmpeg的編碼格式阐污,所有導(dǎo)致無(wú)法合并左右聲道的聲音。
解決辦法:方法一視頻資源改成左右聲道合并的視頻咱圆。方法二:代碼兼容