正規的教科書跟本就不會教這些
在進入這主題前,先聲明一下
「不要用來幫 youtube 的影片 衝 觀看次數 人氣
Google 一定會發現,然後再把那個 yotuber 停權關掉 」
「心存善念,才能發揮黑科技的力量,而不會被黑暗吞噬掉」
youtube上面有好多資源 ,最多人感興趣及每天都會使用的大概就是用來聽歌了
但是 Google 提供 youtube這個平台,就是要賺廣告費
所以要想在 手機背景聽歌 ,這是很多人的需求,但是 youtube就是想辦法不讓你這樣做
因為你就不會看到廣告了
那有沒有可能 用 app 包裝 youtube ,然後實現這個需求呢?
有的,就正規技術上來說,youtube允許你用它的 api來開發
但當它無預警的升級改版,你可能一夕之間又不能用
api要申請帳號,限制又多,一不小心超過免費的額度又可能每月被扣款
但是它仍然無法實現離線聽歌,背景聽歌等實用的功能
經過小小的努力,成功了
最簡單的做法,就是在 app 中,包裝網頁瀏覽器,然後再開啟 網站版的 youtube
想法很簡單,但實際包裝時,就遇上一些問題
android 和 iOS 要分別用不同的作法來達成
android 的作法
1.在畫面佈置的地方,選用 webview 元件來配置
2.在 程式開始處,也就是 onCreate() 里面,加入宣告,並指定 youtube 網址
我 mark 起來的地方,就是我若 使用 gl=tw 那個 也是不行的喔
直接用 "https://www.youtube.com/" 就對了
*****
要加上下面這行喔,不然就會跳離app了
ytwv.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } });
*****加這行是為了,不需要用手去點,就能播歌
WebSettings webSettings = ytwv.getSettings(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { webSettings.setMediaPlaybackRequiresUserGesture(false); }
3.加這行是為了不被廣告檔住,不然一進youtube, 整個畫面幾乎就被廣告佔據了
這時執行app應該就能,在app內用youtube搜尋,點播歌曲了
如果app有需要畫面空間做其他的事,可將 youtube 的畫面隱藏起來,歌照樣能聽喔
ytwv.setVisibility(View.GONE);
iPhone的作法
iOS有二種網頁元件,記得採用舊版的元件,才能播放youtube 喔
ytweb= [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 220.0, 320.0, 320.0)];
ytweb.scrollView.scrollEnabled=YES;
yt_url=@"https://www.youtube.com/";
[self.view addSubview:ytweb];
ytweb.allowsInlineMediaPlayback = YES;
[ytweb loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[yt_url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]]];
可將 youtube 的畫面隱藏起來,歌照樣能聽喔
ytweb.hidden=true;
為了一開始不被廣告檔住, 可以指定位移
if (ytweb.hidden) {
ytweb.hidden=false;
ytweb.scrollView.contentOffset = CGPointMake(0, 320);
}
else {
ytweb.hidden=true;
}
直接用youtube就能搜尋,播歌了,然後又不影響你app的運作
如果想在app中實現下載 youtube成為mp3的歌曲,然後出國時省頻寬,離線聽歌的話
也辦的到,但需要另外一些技巧
以python 解析 youtube 搜尋結果
再整合 youtube-dl 來下載 影片提取音源,
最後 再以 ffmpeg 把 webm格式,轉為 mp3格式
當歌曲下載為mp3之後,純背景,不開手機畫面就能聽歌就成理所當然的事了。
沒有留言:
張貼留言