日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

iOS播放器常見問題

本文介紹iOS播放器SDK在使用過程中的常見問題及解決方案。

License相關問題

報錯License is invalid!!!

問題現象:使用5.4.7.1及之后版本的播放器時,出現如下報錯。license

解決方法:

  • 請先確認您是否已申請License授權并在已配置License,5.4.7.1及之后版本播放器SDK需要配置License之后才能正常使用,具體操作,請參見License說明

    說明

    當您使用組件化、多工程維護的代碼工程,且已根據License說明配置好License后,如果使用AliListPlayer播放,仍然報錯License is invalid!!!,則建議您使用5.5.0.0及以上版本的播放器SDK。

  • 請確認您配置的License是否正確,判斷方法請參見如何判斷License是否正確

如何判斷License是否正確

  1. 確認您申請的License授權與實際需要使用的SDK是否匹配,例如:僅申請了短視頻SDK的授權,未申請播放器SDK的授權等。

  2. 排查您的License是否正確集成。集成方式,請參見快速集成

使用iOS Xcode14打包提交到App Store審核時報錯

出現包含bitcode的錯誤

問題現象:使用iOS Xcode14打包APP并提交到App Store審核時出現包含bitcode的錯誤,報錯示例如下:

 ITMS-90482: Invalid Executable - The executable 'xxx.app/Frameworks/alivcffmpeg.framework/alivcffmpeg' contains bitcode.

處理方法:您可以通過xcrun bitcode_strip手動去除對應的framework的bitcode。如下示例中,${framework_path}是framework的二進制文件路徑。

xcrun bitcode_strip ${framework_path} -r -o ${framework_path}

出現使用curl的錯誤

問題現象:當使用iOS Xcode14打包APP并提交到App Store審核時出現使用curl的錯誤,報錯示例如下:

ITMS-90338: Non-public API usage - The app references non-public symbols in Frameworks/AliyunPlayer.framework/AliyunPlayer: _curl_multi_poll, _curl_multi_wakeup. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/

處理方法:

  • 如果您的項目中只集成了播放器SDK(AliPlayerSDK_iOS),則建議您升級到5.4.9.2以上版本。

  • 如果您的項目中既集成了播放器SDK(AliPlayerPartSDK_iOS),同時還集成了短視頻SDK,則建議播放器SDK升級到5.4.9.2以上版本,alivcffmpeg(QuCore-ThirdParty)升級到4.3.6版本,短視頻SDK升級到3.26以上版本。

出現非公開方法報錯

問題現象:當使用iOS Xcode14打包APP并提交到App Store審核時出現非公開方法的錯誤,報錯示例如下:xcode報錯

處理方法:上述報錯為Xcode14構建的警告,通常情況下,只要工程能構建出來,即便有警告也不影響正常發布;如果不能正常發布,則建議優先使用Xcode13系列進行發布。

出現引入mpf_filter.framework、vfi_filter.framework等插幀、銳化后處理插件相關報錯

問題現象:當使用iOS Xcode14打包APP并提交到App Store審核時出現引入mpf_filter.framework、vfi_filter.framework等插幀、銳化后處理插件相關的錯誤,報錯示例如下:xcode報錯2

處理方法:

  • 如果您的工程中沒有使用到報錯提及的插件,則建議您刪除報錯的插件,不僅不會影響播放器的能力,還可以減小包的體積。

  • 如果您的工程中必須使用報錯提及的插件,則可以暫時在該framework路徑下的Info.plist文件中的"Bundle identifier"鍵值對中,將值字符串中的"_"手動去掉,然后再進行編譯構建工程。

  • 可升級至5.5.2.0及以上版本,已修正命名。

在iOS系統上集成阿里云播放器SDK后,是否支持在Xcode模擬器上調試運行?

  • iOS播放器SDK

    建議您使用iPhone真機進行調試運行。目前僅5.4.7.1以上版本的iOS播放器SDK支持在iPhone模擬器上調試,且不支持在M1芯片的Mac模擬器上調試運行。

  • Flutter播放器SDK

    建議使用iPhone真機調試運行。如果使用Xcode14在iphone模擬器上編譯如下圖的報錯,您可以注釋掉AliPlayerFactory.m文件中的setFilterConfig:updateFilterConfig:setFilterInvalid:這三個接口方法,并一同注釋掉在Flutter播放器SDK中調用到這三個接口方法的代碼。ios常見問題3

播放HLS視頻流并配置本地緩存后,播放失敗報錯403

問題現象:當以VidAuth播放方式,播放HLS(M3U8)協議的視頻流時,開啟本地緩存后,出現播放失敗并報錯403。

問題原因:由于開啟本地緩存后,如果在沒有充分緩存的狀態下退出播放,當下一次起播時,未緩存的部分因仍然使用上一次過期的Vid鑒權信息請求,從而導致鑒權失敗報錯403。

處理方法:建議此場景下,先關閉本地緩存功能。

音頻搶占導致iOS播放器SDK無法正常播放

問題現象:如果您的代碼工程中既使用了阿里云iOS播放器SDK,同時還使用了其它音頻播放控件,使用阿里云iOS播放器SDK播放視頻時,視頻出現無聲、畫面卡住等無法正常播放的現象。

問題原因:iOS系統的音頻控件AVAudioSession是單例,多個音頻播放控件如果不統一設置,則可能造成音頻搶占的問題,從而造成無法使用阿里云iOS播放器SDK正常播放視頻。

處理方法:您可以在工程中適當的位置,進行統一設置AVAudioSession。例如:將應用的音頻會話配置為播放類別,并允許與其他應用混音。如果操作過程中有任何錯誤,錯誤信息將被存儲在err變量中。

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&err];

同時,在阿里云iOS播放器SDK側通過自定義設置AVAudioSession的代理,不使用SDK內部定義好的AVAudioSession邏輯,從而規避阿里云iOS播放器SDK側可能造成的音頻搶占風險。阿里云iOS播放器SDK側的配置示例如下:

  1. 設置代理。

    [AliPlayer setAudioSessionDelegate:self];
  2. 設置代理的監聽。

    #pragma mark CicadaAudioSessionDelegate
    - (BOOL)setActive:(BOOL)active error:(NSError **)outError
    {
        return YES;
    }
    
    - (BOOL)setCategory:(NSString *)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError
    {
          return YES;
    }
    
    - (BOOL)setCategory:(AVAudioSessionCategory)category mode:(AVAudioSessionMode)mode routeSharingPolicy:(AVAudioSessionRouteSharingPolicy)policy options:(AVAudioSessionCategoryOptions)options error:(NSError **)outError
    {
        return YES;
    }

iOS播放器SDK運行時出現指向SDK的堆棧崩潰

當您在使用iOS播放器SDK時出現指向SDK的堆棧崩潰,您可以通過如下方法解決:

  1. 若您使用的iOS播放器SDK不是最新版本,建議您升級至最新版本。iOS播放器SDK在不斷的推出新版本優化提升穩定性,最新版SDK的獲取,請參見播放器SDK

  2. 如果升級到最新版本后仍然出現相關崩潰,建議您將全量崩潰信息提供給阿里云技術支持。獲取技術支持,請參見獲取技術支持

iOS播放器SDK是否支持邊下載邊播放?

不支持。iOS播放器SDK支持在播放的過程中通過開啟本地緩存功能緩存下載視頻文件,下次再播放時,直接播放緩存好的視頻文件;目前不支持將放在文件目錄下的本地緩存視頻文件單獨拿出來進行播放。

iOS播放器SDK是否支持獲取播放視頻的緩沖進度?

支持。iOS播放器SDK支持獲取播放視頻的緩沖速度、實時渲染幀率、音視頻碼率、網絡下行碼率。詳細信息,請參見獲取播放信息

如何獲取當前播放進度

播放器SDK默認每500 ms回調一次播放進度。您可以修改回調間隔時間,通過將間隔時間縮短,以更高頻率地獲取當前播放進度,示例代碼如下:

AVPConfig *config = [self.player getConfig];
config.positionTimerIntervalMs = 100; // 修改回調間隔時間,單位:ms。
[self.player setConfig:config];

/**
 @brief:視頻當前播放位置回調。
 @param player:播放器player指針。
 @param position:視頻當前播放位置。
 */
- (void)onCurrentPositionUpdate:(AliPlayer*)player position:(int64_t)position {
    // 當前播放進度。
    long currentPosition = position;
}

如何獲取視頻的寬高

可通過如下三種方式進行獲取:

  • 方式一:通過iOS播放器AliPlayer實例執行完prepare方法,當處于準備完成狀態后(AVPEventPrepareDone),可以直接獲取AliPlayer實例的寬(width)和高(height)。

    -(void)onPlayerEvent:(AliPlayer*)player eventType:(AVPEventType)eventType {
        if (eventType == AVPEventPrepareDone) {
          NSLog(@"視頻的寬:%d,高:%d", player.width, player.height);
        }
    }
  • 方式二:通過監聽視頻大小變化回調的方法,直接返回視頻的寬(width)和高(height)。

    - (void)onVideoSizeChanged:(AliPlayer*)player width:(int)width height:(int)height rotation:(int)rotation {
        NSLog(@"視頻的寬:%d,高:%d", width, height);
    }
  • 方式三:通過監聽獲取track信息回調的方法,根據info數組返回的AVPTrackInfo,獲取視頻的寬(videoWidth)和高(videoHeight)。

    說明

    監聽獲取track信息回調,由于是從網絡請求,其成功獲取到視頻的寬高信息依賴網絡質量,建議使用方式一和方式二的方法獲取視頻的寬高信息更為可靠。

    - (void)onTrackReady:(AliPlayer*)player info:(NSArray<AVPTrackInfo*>*)info {
        for (int i=0; i<info.count; i++) {
          AVPTrackInfo *trackInfo = info[i];
          NSLog(@"視頻的寬:%d,高:%d", trackInfo.videoWidth, trackInfo.videoHeight);
      }
    }

播放器運行過程中發生crash

可通過以下步驟排查問題產生原因:

  1. 確認crash是否產生在播放器SDK。

    查看是否有帶AliyunPlayer前綴的崩潰堆棧,如果有,則說明問題產生在播放器SDK。

  2. 升級至最新版播放器SDK并驗證,確認問題是否已經修復。

  3. 如果問題依然存在,請準備相關的崩潰文件(包含全部線程)、崩潰日志、崩潰場景等信息,如何獲取問題日志

V5.4.6.0版本播放器SDK運行過程中發生程序初始化、調用預加載相關crash

建議升級到V5.4.7.1以上版本的播放器SDK。如果需要保持V5.4.6.0版本的穩定性,也可以使用修復版本pod 5.4.6.0-25587639

視頻播放相關問題

如何實現全屏播放

iOS播放器SDK不提供全屏播放的API,需要您根據系統自行實現。iOS播放器SDK Demo從5.5.0.0版本開始已經適配了iOS 16.0以上系統的全屏方法。

實現方法示例如下:

說明

執行系統全屏方法后,需要同時將Aliplayer實例設置的playerView的frame根據屏幕進行調整。

UIInterfaceOrientation orientation = UIInterfaceOrientationLandscapeLeft; // 要旋轉為全屏
......

// iOS 16.0以上的系統
if (@available(iOS 16.0, *)) {
    @try {
            NSArray *array = [[[UIApplication sharedApplication] connectedScenes] allObjects];
      UIWindowScene *ws = (UIWindowScene *)array[0];
        Class GeometryPreferences = NSClassFromString(@"UIWindowSceneGeometryPreferencesIOS");
      id geometryPreferences = [[GeometryPreferences alloc]init];
      UIInterfaceOrientationMask orientationMask = UIInterfaceOrientationMaskLandscapeRight;
      if (orientation == UIInterfaceOrientationPortrait) {
          orientationMask = UIInterfaceOrientationMaskPortrait;
      }
      [geometryPreferences setValue:@(orientationMask) forKey:@"interfaceOrientations"];
      SEL sel_method = NSSelectorFromString(@"requestGeometryUpdateWithPreferences:errorHandler:");
      void (^ErrorBlock)(NSError *err) = ^(NSError *err){
            NSLog(@"屏幕旋轉出錯:%@", [err debugDescription]);
      };
      if ([ws respondsToSelector:sel_method]) {
          (((void (*)(id, SEL,id,id))[ws methodForSelector:sel_method])(ws, sel_method,geometryPreferences,ErrorBlock));
      }
  } @catch (NSException *exception) {
      NSLog(@"屏幕旋轉出錯:%@", exception.reason);
  } @finally {
  }
} else { // iOS16.0以下的系統
  if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
      SEL selector = NSSelectorFromString(@"setOrientation:");
      NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
      [invocation setSelector:selector];
      [invocation setTarget:[UIDevice currentDevice]];
      [invocation setArgument:&Orientation atIndex:2];
      invocation invoke];
  }
  [[UIApplication sharedApplication]setStatusBarOrientation:orientation animated:YES];
}

視頻播放時畫面有黑邊

可通過以下步驟排查問題產生原因:

  1. 檢查視頻源本身是否存在黑邊問題。

  2. 可通過如下接口調節播放器的縮放模式。

    /*
    AVP_SCALINGMODE_SCALEASPECTFILL:按比例填充,畫面會有裁剪。
    AVP_SCALINGMODE_SCALEASPECTFIT:按比例縮放,會有黑邊。
    AVP_SCALINGMODE_SCALETOFILL:不按比例填充,畫面會變形。
    */
    self.player.scalingMode = AVP_SCALINGMODE_SCALETOFILL;
  3. 若縮放模式依然無法滿足需求,則可以調節設置self.player.playerView的自定義View的寬和高(通過修改self.player.playerViewframe實現)。

播放視頻時有聲音無畫面,日志報log[AFVTBDecoder] :IOS8VT: throw frame

可通過以下步驟排查問題產生原因:

  1. 使用其他播放器播放,檢查視頻是否是純音頻。

  2. 使用其他播放器播放時播放正常且出現視頻源長寬變化,則可以設置成軟解碼方式,設置方法如下:

    player.enableHardwareDecoder = NO

播放直播流時,日志報標準錯誤-5,IO錯誤(Input/Output (I/O))

播放直播流時,建議緩存和延遲控制設置(AVPConfig中的startBufferDurationhighBufferDurationmaxBufferDuration)都保持默認值,不進行自定義配置。請參見配置緩存和延遲控制排查是否自定義了配置緩存和延遲控制。

暫停后返回繼續播放,日志報聲音相關的錯誤Deactivating an audio session that has running I/O.All I/O should be stopped or paused prior to deactivating the audio session.

問題現象:在視頻播放頁面暫停播放并跳轉到其他有聲音的播放頁面,返回時無法繼續播放,日志報聲音相關的錯誤Deactivating an audio session that has running I/O.All I/O should be stopped or paused prior to deactivating the audio session.

解決方法:排查是否存在聲音設置(AudioSession屬性)的沖突,例如當從其他有聲頁面退出時未及時恢復對聲音的占用(未及時關閉相關的錄音或者聲音播放)。

使用列表播放器AliListPlayer播放HLS(m3u8)視頻報錯

V5.4.5.0及之前版本的播放器SDK不支持使用列表播放器AliListPlayer播放HLS(m3u8)格式的視頻。從V5.4.5.0之后版本開始支持播放HLS(m3u8)格式的視頻,但是需要開啟本地緩存,開啟本地緩存的方法請參見本地緩存

無法實現在后臺播放視頻

問題現象:iOS播放器SDK無法支持后臺播放視頻(即按home鍵以后還能繼續播放視頻),用Demo測試也無法實現后臺播放。

解決方法:

  1. 在Xcode中開啟后臺采集數據功能。示例如下:DuCXfvnsZJMUdeDiGjnX.png

  2. 如果實現了程序前后臺監聽方法,則需要注釋掉相關的暫停、重新播放方法。

    // 添加檢測APP進入后臺的觀察者
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationEnterBackground) name: UIApplicationWillResignActiveNotification object:nil];
    // APP從后臺進入前臺時會調用該方法
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive) name: UIApplicationDidBecomeActiveNotification object:nil];
    
    // 需注釋掉的暫停方法
    - (void)applicationEnterBackground {
       // [self.player pause];
    }
    // 需注釋掉的重新播放方法
    - (void)applicationDidBecomeActive {
       // [self.player start];
    }

seek相關問題

seek后,進度條異常回跳

問題原因:播放器默認使用不精準seek。seek后播放器會從seek點附近的關鍵幀開始播放。

解決方法:切換為精準seek模式。

如何切換精準seek和非精準seek模式

切換seek模式的示例代碼如下:

//切換為非精準seek。
[self.player seekToTime:1000 seekMode:AVP_SEEKMODE_INACCURATE];
//切換為精準seek。
[self.player seekToTime:1000 seekMode:AVP_SEEKMODE_ACCURATE];

使用精準seek模式后,進度條也會異常回跳

問題原因:由于精準seek耗時比非精準seek耗時更長,當seek點距離關鍵幀間隔過大,超過精準seek的最大間隔時,播放器SDK會自動切換成非精準seek,導致進度條回跳。

解決方法:可以通過接口設置精準seek的最大間隔,將精準seek的最大間隔調大,降低精準seek被切換成非精準seek的頻率,以提高seek精準度,但當seek的點距離關鍵幀間隔太長時,耗時也將更長,請根據業務特點合理設置精準seek的最大間隔。示例代碼如下:

//單位:ms。
[self.player setMaxAccurateSeekDelta:100];

使用邊播邊緩存(CacheConfig)時緩存失敗

可以在onPlayerEvent回調中,獲取緩存失敗的原因。onPlayerEvent回調的示例代碼如下:

/**
 @brief:播放器事件回調。
 @param player:播放器player指針。
 @param eventWithString:播放器事件類型。
 @param description:播放器事件說明。
 @see AVPEventType
 */
-(void)onPlayerEvent:(AliPlayer*)player eventWithString:(AVPEventWithString)eventWithString description:(NSString *)description {
    if (eventWithString == EVENT_PLAYER_CACHE_SUCCESS) { // 邊播邊緩存成功。

    } else if (eventWithString == EVENT_PLAYER_CACHE_ERROR) { // 邊播邊緩存失敗。
        NSString *errorMsg = description;
    }
}

常見的失敗原因如下:

  • CacheConfig中設置的大小和時長與視頻不匹配導致緩存失敗。

  • 在播放過程中,stop或者seek到buffer外導致緩存失敗。

說明

播放器SDK V5.4.4.0版本,新增支持的預加載和本地緩存能力,可以完全替代邊播邊緩存的使用場景。建議使用新增加的本地緩存能力,更多內容請參見進階功能

視頻緩存時報錯encrypt check fail

緩存即下載,如果設置了安全下載,請確認加密校驗文件與App信息是否匹配(即需要將下載設置中生成的加密校驗文件下載并保存到播放器SDK中,詳細內容請參見視頻下載),否則會導致緩存或下載失敗。

獲取音視頻源數據

獲取音視頻源數據的示例代碼如下:

// 設置渲染回調。
self.player.renderingDelegate = self;

// 監聽渲染回調。
- (BOOL)onRenderingFrame:(CicadaFrameInfo*) frameInfo {
    if (frameInfo.frameType == Cicada_FrameType_Video) { // 底層視頻數據。

    } else if (frameInfo.frameType == Cicada_FrameType_Audio) { // 底層音頻數據。

    }
    return NO;
}

自動碼率切換邏輯

當開啟自動碼率切換,即調用了[self.player selectTrack:SELECT_AVPTRACK_TYPE_VIDEO_AUTO];接口后,播放器SDK內部會統計當前網速,當10秒內網速達到下一個碼率時,就會切換到下一個碼率。若10秒內網速未達到下一個碼率,則不切換。

  • 從高碼率切換到低碼率的場景,當10秒內網速達到下一個碼率時,會將已緩存的高碼率內容播放完成后才切換。

  • 從低碼率切換到高碼率的場景,當10秒內網速達到下一個碼率時,會直接切換。

自定義重試邏輯

在網絡重試場景下,播放器SDK默認重試次數為2次,網絡超時時間為15秒,當重試失敗后會觸發Error回調。

可以自定義重試邏輯,當觸發重試時,將重試事件通知到外部,由外部決定具體的重試邏輯。示例代碼如下:

AVPConfig *config = [self.player getConfig];
config.networkRetryCount = 0; // 設置重試次數,此處以設置為0為例。
[self.player setConfig:config];

/**
 @brief:播放器事件回調。
 @param player:播放器player指針。
 @param eventWithString:播放器事件類型。
 @param description:播放器事件說明。
 @see AVPEventType
 */
-(void)onPlayerEvent:(AliPlayer*)player eventWithString:(AVPEventWithString)eventWithString description:(NSString *)description {
    if (eventWithString == EVENT_PLAYER_NETWORK_RETRY) { // 網絡失敗,需要重試。
        // TODO做相應的邏輯處理。
    }
}

播放RTS流時,報錯協議不支持

可通過以下步驟排查報錯原因:

  1. 檢查3個SDK(AliPlayerSDK_iOS、AliPlayerSDK_iOS_ARTC、RtsSDK)是否全部都已集成。

    使用阿里云播放器播放RTS流,需要集成3個SDK:AliPlayerSDK_iOS、AliPlayerSDK_iOS_ARTC、RtsSDK。集成操作可參見阿里云播放器SDK集成Native RTS SDK實現說明

  2. 檢查Native RTS SDK(RtsSDK)和阿里云播放器SDK(AliPlayerSDK_iOS)的版本是否配套。

    Native RTS SDK和阿里云播放器SDK有版本配套關系,需要集成對應的版本,版本配套關系請參見SDK下載

  3. 檢查AliPlayerSDK_iOS和AliPlayerSDK_iOS_ARTC的版本是否一致,需保持一致。

縮略圖使用

在播放器SDK中使用縮略圖前,請確保已為視頻配置縮略圖,即視頻已生成雪碧截圖(在視頻點播控制臺創建類型為雪碧圖的截圖模板,通過工作流將視頻用該雪碧圖的截圖模板處理后,生成雪碧圖數據),詳細內容請參見視頻截圖。播放器SDK中使用縮略圖的示例代碼如下:

/**
 當前Track是否有縮略圖,如果沒有,不展示縮略圖。
 */
@property (nonatomic,assign)BOOL trackHasThumbnai;

/**
 創建自定義顯示縮略圖的視圖。
 */
@property (nonatomic,strong)UIImageView *thumbnaiView;

/**
 @brief:獲取track信息回調。
 @param player:播放器player指針。
 @param info:track流信息數組,可參考AVPTrackInfo。
 */
- (void)onTrackReady:(AliPlayer*)player info:(NSArray<AVPTrackInfo*>*)info {
    AVPMediaInfo* mediaInfo = [player getMediaInfo];
    if ((nil != mediaInfo.thumbnails) && (0 < [mediaInfo.thumbnails count])) {
        [self.player setThumbnailUrl:[mediaInfo.thumbnails objectAtIndex:0].URL];
        self.trackHasThumbnai = YES;
    }else {
        self.trackHasThumbnai = NO;
    }
}

/**
 進度條改變進度回調。
 @param playerView playerView
 @param value:進度值。
 */
- (void)AVPPlayerView:(AVPPlayerView *)playerView progressSliderValueChanged:(CGFloat)value {
    if (self.trackHasThumbnai) {
        [self.player getThumbnail:self.player.duration*value];
    }
}

/**
 @brief:獲取縮略圖成功回調。
 @param positionMs:指定的縮略圖位置。
 @param fromPos:此縮略圖的開始位置。
 @param toPos:此縮略圖的結束位置。
 @param image:縮圖略圖像指針,對于mac是NSImage,iOS平臺是UIImage指針。
 */
- (void)onGetThumbnailSuc:(int64_t)positionMs fromPos:(int64_t)fromPos toPos:(int64_t)toPos image:(id)image {
    self.thumbnaiView.hidden = NO;
    [self.thumbnaiView setImage:(UIImage *)image];
}

/**
 @brief:獲取縮略圖失敗回調。
 @param positionMs:指定的縮略圖位置。
 */
- (void)onGetThumbnailFailed:(int64_t)positionMs {
    self.thumbnaiView.hidden = YES;
}

清晰度相關問題

視頻轉碼了多個清晰度,播放器SDK默認會播放視頻的哪個清晰度?

默認清晰度播放順序:FD、LD、SD、HD、2K、4K、OD,清晰度的定義請參見清晰度:Definition。播放器SDK會從左到右依次查找,找到哪個清晰度就播放哪個清晰度。

如何指定視頻播放默認清晰度?

示例代碼如下:

//以VidSts播放方式為例。
AVPVidStsSource *stsSource = [[AVPVidStsSource alloc] init];
stsSource.vid = @"<vid>";
stsSource.accessKeyId = @"<accessKeyId>";
stsSource.securityToken = @"<securityToken>";
stsSource.accessKeySecret = @"<accessKeySecret>";
stsSource.quality = @""; // 期望播放的清晰度,取值為FD、LD、SD、HD、2K、4K、OD。
stsSource.forceQuality = NO; // 是否強制使用期望播放的清晰度播放。NO:不強制使用期望的清晰度播放,按播放器SDK的默認清晰度播放順序查找播放;YES:強制使用設置的期望清晰度播放,如果找不到期望播放的清晰度就不播放。

如果同一個清晰度有多個碼流,播放器SDK會播放哪個碼流?

當同一個清晰度有多個碼流時,播放器SDK會播放最新的碼流。

如何設置同一個視頻,在播放時無水印,下載后帶水印?

將視頻轉碼多個清晰度,播放時播放無水印的清晰度,下載時下載有水印的清晰度。

橫屏無法生效

iOS播放器SDK本身不提供實現橫屏的方法,您需要根據iOS系統API實現,注意實現橫屏時合理設置aliplayer.playerViewframe

如何獲取問題日志

當您向阿里云獲取技術支持時,請將您的問題日志一并提交,以便更高效地為您解決問題。問題日志的獲取方法如下:

  1. 獲取問題日志。

    建議將日志級別設置為LOG_LEVEL_TRACE后再獲取問題日志。具體方法請參見獲取SDK日志

  2. 將生成的日志提供給阿里云技術支持。

    詳情請參見獲取技術支持