[iOS] 播放影片時特定畫面橫向
我使用第三方套件XCDYouTubeKit,就可以透過內建的MPMoviePlayerViewController來播放影片,那麼想要在特定的畫面橫向怎麼實現?因為整個App專案設定只有Portrait,也就是直向,只有在播放影片時要變成可以Landscape,就是橫向。
先前寫了篇文章:在WebView播放Youtube影片旋轉,確實可以做到。不過iOS 9之後又有稍微變化,只好改寫它囉~
我使用第三方套件XCDYouTubeKit,就可以透過內建的MPMoviePlayerViewController來播放影片,那麼想要在特定的畫面橫向怎麼實現?因為整個App專案設定只有Portrait,也就是直向,只有在播放影片時要變成可以Landscape,就是橫向。
先前寫了篇文章:在WebView播放Youtube影片旋轉,確實可以做到。不過iOS 9之後又有稍微變化,只好改寫它囉~
承接[Ionic][AngularJS] 載入Youtube影片,想要離開畫面就停止播放,該怎麼做呢?因為進到下一頁,正在播放的影片還沒有被移除,就會持續播放下去。
在controllers.js中寫:
.controller('ResultCtrl', function($scope, $sce) { $scope.pauseVideo = function() { console.log('postMessage pauseVideo'); var iframe = document.getElementsByTagName("iframe")[0].contentWindow; iframe.postMessage('{"event":"command","func":"' + 'pauseVideo' + '","args":""}', '*'); } $scope.playVideo = function() { console.log('postMessage playVideo'); var iframe = document.getElementsByTagName("iframe")[0].contentWindow; iframe.postMessage('{"event":"command","func":"' + 'playVideo' + '","args":""}', '*'); } $scope.$on('$ionicView.beforeLeave', function(){ console.log('pauseVideo'); $scope.pauseVideo(); }); $scope.$on('$ionicView.enter', function(){ console.log('playVideo'); $scope.playVideo(); }); })
還要在Youtube影片網址後方連接參數⋯⋯
?enablejsapi=1
格式會像是:https://www.youtube.com/embed/uSmcLz2FAUI?enablejsapi=1
程式碼才會有作用喔~
參考:How to pause or stop an iframe youtube video when you leave a tab view or minimise your Ionic App。
有時候需要透過程式取得Youtube影片的標題,在網路上找了許久卻沒找到直接可用的API,方法是有很多種,比如使用Youtube的SDK,然而就要申請帳號來獲取API Key,明明是很簡單的任務,卻要大費周章來實現,最後我選擇較為簡潔的做法!
透過以下的Url Template,先取得該影片的所有資料,如下列網址帶入Video ID,我們將可取回一大串String。
字串截圖:
我們的目標字串為:
title=%E9%96%BB%E5%A5%95%E6%A0%BC+Janice+Yan+%5B+%E4%B9%9F%E5%8F%AF%E4%BB%A5+%5D+%28%E9%9B%BB%E5%BD%B1%E3%80%8C%E8%BF%BD%E5%A9%9A%E6%97%A5%E8%A8%98%E3%80%8D%E6%8F%92%E6%9B%B2%29+%E7%89%87%E8%8A%B1%E7%89%88Music+Video
我先找「title=」字眼,後面的字串到「&」之前,就是我要的標題。中文字被轉成百分比+字母(stringByRemovingPercentEncoding),所以要轉回去,最後還要取代掉「+」為「 (空白鍵)」。
Objective C可以這樣來剖析(Parse):
/** Theme: fetch Title of Video from Youtube IDE: Xcode 7 Language: C++ Date: 105/05/06 Author: HappyMan Blog: https://cg2010studio.wordpress.com/ */ NSString *title = [[[[[[string componentsSeparatedByString:@"title="] lastObject] componentsSeparatedByString:@"&"] firstObject] stringByRemovingPercentEncoding] stringByReplacingOccurrencesOfString:@"+" withString:@" "];
我找的Video ID是PZGwZwGQTlk,經過上述程式碼剖析、解碼、取代,就得到追婚日記的插曲標題:閻奕格 Janice Yan [ 也可以 ] (電影「追婚日記」插曲) 片花版Music Video。
這裡要注意的是,並不是所有影片資料字串都會有title=喔!若有title=會出現在不一樣的位置,我找到的這個例子剛好是在最前面!
.
先前提到可以用Web View來播放Youtube影片,現在我們可以更輕易地播放Youtube影片囉~只要使用第三方套件XCDYouTubeKit,就可以透過內建的MPMoviePlayerViewController來播放影片!
來用今年員工旅遊在韓國首爾空中滑翔到南怡島的影片做測試吧~
若在專案直接設定裝置面向(Device Orientation)為全部都勾選的話,就可以不用看這篇文章啦~就是因為我這專案除了播放影片之外,其它大多數的view都要固定為縱向(Portrait),所以我必須在特定播放影片的view中設定面向,使之能夠旋轉四個面向,如此來得省事!
在Youtube上聽歷年動漫神曲時,發現遺忘已久的一首片頭曲,它是棋靈王最振奮人心的Get Over。大三時我喜歡一個女孩,因為不曉得自己想要什麼而迷惘中,因為有她的陪伴讓我有所慰藉,恰好弟弟來我這借住,放這首歌給我聽,一聽我就愛上了……
HappyMan・迴響