イレギュラーなCM移行に対する「ミュート」タイミング
「CM」移行の直前に「ABEMA TV」のロゴを表示するのが正常ですが、ロゴを表示しないイレギュラーなCM移行が増えています。 下は、このイレギュラーなCM移行に対応する「ミュート」機能のタイミングの模式図です。
現在は(A)のタイプのCM移行が多く、「動画タイトルの消失」と同時に「CM移行」します。 この場合は遅延時間「0」のタイミングで「ミュート」を適用する ❶ が最適です。
しかし、かなり手前で「動画タイトルの消失」が生じる(B)や(C)のタイプの「CM移行」が観測されていて、今後も無いとは言えません。
(B)のCM移行で ❶ のタイミングで「ミュート」を適用すると動画コンテンツの末尾もカットされるので、遅延を設けた ❷ のタイミングが最適です。 しかし、遅延時間の厳密な予測は不可能です。 更に手前から「動画タイトルの消失」が生じる(C)の場合を考慮すれば、遅延をより増やした ❸ のタイミングとなりますが、その設定では「CMの頭」が「ミュート」出来ない場合が増えます。
遅延の設定を選択可能にしました
最近は「ロゴ」表示をしないでCMに移行する場合が多く、このCMの入れ方は今後も続く様な気がします。 前バージョンは「8sec」(ツール設計上で 8200msec)の遅延を設定していましたが、遅延時間が不要なCM移行が多くなり、CMの先頭部がなかなかミュートされない場合が目立って来ました。
そこで、この遅延時間を「0sec」「3sec」「8sec」から選択できる様にしました。 今後の「CM移行」のタイミングの傾向が変化しても、適当なタイミングをそれに合わせて使用できるというわけです。
現在は、遅延時間が「0sec」でも良い場合が多いのですが、デフォルトは安全側に「3sec」としています。
イレギュラーなCM移行に対するミュートタイミングの設定方法
●「動画表示部分」を「Ctrl+左Click」すると「設定パネル」が表示されます。
▪「CM」の最初が流れる場合が多い場合は「0sec」の設定を試してください。
▪「動画コンテンツ」の再生中に「ミュート」が始まるのが気になる場合は「8sec」を選択してください。
▪ ただし、イレギュラーな「CM」移行のタイミングは、同じチャンネルでも変化するので、適当な設定を見つけてください。
また、「ABEMA TV」のロゴ表示を伴うCM移行(正常な移行)は、これとは別に正確なタイミングでの「ミュート」が適用されます。 イレギュラーなCM移行のみが調節の対象になるので、混同しない様にしてください。
「 AmbTV OnAir」
このツールは「 AmbTV Comfy」のサブツールで、両方を同時に併用できます。
「ミュート」機能の設定方法は、以下のページを参照ください。
「 AmbTV OnAir」を利用するには
このツールは Chrome / Edge / Firefox版の拡張機能「Tampermonkey」上で動作します。 以下に、このツールの導入手順を簡単に説明します。
❶「Tampermonkey」を導入します
◎ 使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。
既に「Tampermonkey」を導入している場合は、この手順 ❶ は不要です。
拡張機能の導入については、以下のページに簡単な説明があるので参照ください。
❷「Tampermonkey」にスクリプトを登録します
◎「Tampermonkey」の「+」マークの「新規スクリプト」タブを開きます。
◎「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。
〔コピー方法〕 軽量シンプルなツール「PreBox Button 」を使うと
コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」
の操作で、掲載コードのコピーが可能になります。
◎ 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。
〔 AmbTV OnAir 〕 ver. 0.8
// ==UserScript==
// @name AmbTV OnAir
// @namespace http://tampermonkey.net/
// @version 0.8
// @description AbemaTV ユーティリティ
// @author Ameba User
// @match https://abema.tv/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=abema.tv
// @grant none
// ==/UserScript==
let oa_mute;
let oa_size;
let oa_opac;
let oa_delay;
let m_filter;
let target=document.querySelector('head > title');
let monitor0=new MutationObserver(tv_player_env);
monitor0.observe(target, { childList: true });
tv_player_env();
function tv_player_env(){
let retry=0;
let interval=setInterval(wait_target, 20);
function wait_target(){
retry++;
if(retry>100){ // リトライ制限 100回 2secまで
clearInterval(interval); }
let TP=document.querySelector('.com-tv-TVScreen__player');
if(TP){
clearInterval(interval);
player_vol(TP); }}
} // tv_player_env()
function player_vol(TP){
m_filter=1;
setTimeout(()=>{
m_filter=0;
}, 400);
let monitor1=new MutationObserver(con_vol);
monitor1.observe( TP, { childList: true });
con_vol();
function con_vol(){ // ABEMAロゴによるミュート
let LF=document.querySelector('.com-tv-LinearFooter__feed-super');
if(TP.querySelector('.com-tv-TVScreen__eyecatch')){
if(LF.textContent){
v_vol(1); }}
else{
if(!LF.textContent){
v_vol(0); }}}
let LF=document.querySelector('.com-tv-LinearFooter__feed-super');
let monitor2=new MutationObserver(con_vol2);
monitor2.observe( LF, { childList: true });
function con_vol2(){ // 動画タイトルによるミュート
if(LF.textContent){
v_vol(1); }
else{
setTimeout(()=>{
if(m_filter==0){
setTimeout(()=>{
if(!TP.querySelector('.com-tv-TVScreen__eyecatch')){
v_vol(0);
}}, delay() ); }
}, 200); }}
setTimeout(()=>{
let LCLI=document.querySelector('.com-tv-LinearChannelListItem--active a');
if(LCLI){
let monitor3=new MutationObserver(con_vol3);
monitor3.observe( LCLI, { attributes: true });
con_vol3();
function con_vol3(){
v_vol(1); }}
}, 200 );
setTimeout(()=>{
let side=document.querySelector('.com-tv-FeedSidePanel__close-button');
if(side){
side.click(); }
}, 600);
setTimeout(()=>{
let HM=document.querySelector('.com-m-HeaderMenu');
let SNc=document.querySelector('.c-application-SideNavigation--collapsed');
if(HM && !SNc){
HM.click(); }
}, 700);
check_cookie();
cm_setting();
} // player_vol(TP)
function v_vol(n){ // 0: ミュート 1: 通常
oa_mute=get_cookie('oa_mute');
let button=document.querySelector('.com-playback-Volume__icon-button');
if(button){
let label=button.getAttribute('aria-label');
if(n==0 && label=='音声をオフにする'){
if(oa_mute==0){
button.click(); }}
else if(n==1 && label=='音声をオンにする'){
button.click(); }
setTimeout(()=>{
let label_=button.getAttribute('aria-label');
if(label_=='音声をオフにする'){ // 音声ON
view(1); }
else{
view(0); }
}, 20);
function view(n){ // 0: ミュート 1: 通常
oa_opac=get_cookie('oa_opac');
oa_size=get_cookie('oa_size');
let TVS=document.querySelector('.com-tv-TVScreen__player-container');
if(TVS){
if(n==0){
TVS.style.transition='all .5s';
if(oa_opac==0){
TVS.style.opacity='0.5'; }
else if(oa_opac==1){
TVS.style.opacity='0'; }
else{
TVS.style.opacity='1'; }
if(oa_size==0){
TVS.style.transform='scale(0.5)'; }
else{
TVS.style.transform='scale(1)'; }}
else{
TVS.style.transition='';
TVS.style.opacity='1';
TVS.style.transform='scale(1)'; }}}
} // button
} // v_vol()
function delay(){
oa_delay=get_cookie('oa_delay');
return oa_delay; }
function get_cookie(name){
let cookie_req=document.cookie.split('; ').find(row=>row.startsWith(name));
if(cookie_req){
if(cookie_req.split('=')[1]==null){
return 0; }
else{
return cookie_req.split('=')[1]; }}
if(!cookie_req){
return 0; }}
function check_cookie(){
oa_mute=get_cookie('oa_mute');
if(oa_mute!=1){
oa_mute=0; }
document.cookie='oa_mute='+oa_mute+'; path=/; Max-Age=2592000';
oa_size=get_cookie('oa_size');
if(oa_size!=1){
oa_size=0; }
document.cookie='oa_size='+oa_size+'; path=/; Max-Age=2592000';
oa_opac=get_cookie('oa_opac');
if(oa_opac!=0 && oa_opac!=1 && oa_opac!=2){
oa_opac=0; }
document.cookie='oa_opac='+oa_opac+'; path=/; Max-Age=2592000';
oa_delay=get_cookie('oa_delay');
if(oa_delay!=200 && oa_delay!=3200 && oa_delay!=8200){
oa_delay=3200; }
document.cookie='oa_delay='+oa_delay+'; path=/; Max-Age=2592000';
} // check_cookie()
function cm_setting(){
let TVS=document.querySelector('.com-tv-TVScreen__player-container');
if(TVS){
TVS.onclick=function(event){
if(event.ctrlKey){
let panel=
'<div id="amboa">'+
'<div id="oa_head">コマーシャルの表示設定 '+
'<input type="button" id="oa_close" value="×"></div>'+
'<div> 音声:'+
'<input name="mute" type="radio" id="m0">ミュート '+
'<input name="mute" type="radio" id="m1">通常'+
'</div>'+
'<div> 画面:'+
'<input name="size" type="radio" id="s0">縮小 '+
'<input name="size" type="radio" id="s1">通常'+
'</div>'+
'<div> 明度:'+
'<input name="opacity" type="radio" id="o0">0 '+
'<input name="opacity" type="radio" id="o1">50 '+
'<input name="opacity" type="radio" id="o2">100'+
'</div>'+
'<div> 遅延:'+
'<input name="delay" type="radio" id="d0">0sec '+
'<input name="delay" type="radio" id="d1">3sec '+
'<input name="delay" type="radio" id="d2">8sec'+
'</div>'+
'<div></div>'+
'<style>#amboa { position: fixed; z-index: 100; top: 60px; left: 40%; '+
'font: 16px/24px Meiryo; color: #000; padding: 8px 10px 6px; '+
'border: 1px solid #aaa; border-radius: 6px; background: #fff; } '+
'#oa_head { margin: 0 0 10px; padding: 5px 8px 3px 15px; '+
'font-weight: bold; color: #fff; background: #2196f3; text-align: center; } '+
'#oa_close { padding: 0 2px; height: 20px; line-height: 16px; } '+
'input[type="radio"]{ margin: 0 .2em; }'+
'</style>'+
'</div>';
if(!document.querySelector('#amboa')){
document.body.insertAdjacentHTML('beforeend', panel); }
set_radio();
function set_radio(){
oa_mute=get_cookie('oa_mute');
let m0=document.querySelector('#m0');
let m1=document.querySelector('#m1');
if(oa_mute==0){
m0.checked=true;
mute(0); }
else{
oa_mute=1;
m1.checked=true;
mute(1); }
document.cookie='oa_mute='+oa_mute+'; path=/; Max-Age=2592000';
m0.onchange=function(){
mute(0);
document.cookie='oa_mute=0; path=/; Max-Age=2592000'; }
m1.onchange=function(){
mute(1);
document.cookie='oa_mute=1; path=/; Max-Age=2592000'; }
oa_size=get_cookie('oa_size');
let s0=document.querySelector('#s0');
let s1=document.querySelector('#s1');
if(oa_size==0){
s0.checked=true; }
else{
oa_size=1;
s1.checked=true; }
document.cookie='oa_size='+oa_size+'; path=/; Max-Age=2592000';
s0.onchange=function(){
document.cookie='oa_size=0; path=/; Max-Age=2592000'; }
s1.onchange=function(){
document.cookie='oa_size=1; path=/; Max-Age=2592000'; }
oa_opac=get_cookie('oa_opac');
let o0=document.querySelector('#o0');
let o1=document.querySelector('#o1');
let o2=document.querySelector('#o2');
if(oa_opac==0){
o1.checked=true; }
else if(oa_opac==1){
o0.checked=true; }
else{
oa_opac=2;
o2.checked=true; }
document.cookie='oa_opac='+oa_opac+'; path=/; Max-Age=2592000';
o0.onchange=function(){
document.cookie='oa_opac=1; path=/; Max-Age=2592000'; }
o1.onchange=function(){
document.cookie='oa_opac=0; path=/; Max-Age=2592000'; }
o2.onchange=function(){
document.cookie='oa_opac=2; path=/; Max-Age=2592000'; }
oa_delay=get_cookie('oa_delay');
let d0=document.querySelector('#d0');
let d1=document.querySelector('#d1');
let d2=document.querySelector('#d2');
if(oa_delay==200){
d0.checked=true; }
else if(oa_delay==3200){
d1.checked=true; }
else if(oa_delay==8200){
d2.checked=true; }
document.cookie='oa_delay='+oa_delay+'; path=/; Max-Age=2592000';
d0.onchange=function(){
document.cookie='oa_delay=200; path=/; Max-Age=2592000'; }
d1.onchange=function(){
document.cookie='oa_delay=3200; path=/; Max-Age=2592000'; }
d2.onchange=function(){
document.cookie='oa_delay=8200; path=/; Max-Age=2592000'; }
function mute(n){
let s0=document.querySelector('#s0');
let s1=document.querySelector('#s1');
let o0=document.querySelector('#o0');
let o1=document.querySelector('#o1');
let o2=document.querySelector('#o2');
if(n==0){
s0.disabled=false;
s1.disabled=false;
o0.disabled=false;
o1.disabled=false;
o2.disabled=false; }
else{
s0.disabled=true;
s1.disabled=true;
o0.disabled=true;
o1.disabled=true;
o2.disabled=true; }}
} // set_radio()
let amboa=document.querySelector('#amboa');
let oa_close=document.querySelector('#oa_close');
if(amboa && oa_close){
oa_close.onclick=function(event){
event.preventDefault();
amboa.remove(); }}
}}}
} // cm_setting()
「AmbTV OnAir」最新版について
旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。
●「AmbTV OnAir 」の最新バージョンへのリンクは、以下のページのリンクリストから探せます。





