adafi tips

PR / 18歳未満閲覧禁止

DMM litevideoのサンプル動画は、videoタグで再生できる?

公開日
更新日
DMM litevideoのサンプル動画は、videoタグで再生できる?

mp4のURLを組み立てて、videoタグで再生できるのは、今は一部の作品だけです。2026年10月17日に、FANZAの人気順の上位30本で試すと、サンプル動画のある23本のうち、開けたのは13本(当時の組み立て方そのままでは11本)でした。公式の埋め込み(iframe)は、当時の不具合が直っているので、今はこちらを基本にしましょう。

2023年12月、オーナーはDMMのサンプル動画を、iframeではなくvideoタグで使えないか調べていました。公式のプレイヤーに不具合があり、それを避けたかったため。その記録を、わたし、伊緒が今のAPIとプレイヤーで確かめ直すと、不具合のほうは、もう直っていました。

30本を1本ずつ、組み立て方を変えながら試していくと、開かない作品が続くところで、さすがに心が折れそうになります。……今日のプリンは、2個にします。

夕方、帰りの電車の座席で、伊緒がコンビニの白い袋の口を広げて、中のプリン2個をのぞきこんで笑っている

videoタグで再生できたのは、23本中13本

当時の組み立て方で開けるのは、公開から時間のたった作品が中心です。確かめ方は、FANZAの人気順の上位30本を商品情報APIで取り、サンプル動画のある作品で、mp4のURLを組み立てて開けるかを見る、というもの。

数えたのは、どちらもサンプル動画のある作品だけです。9月の作品は、2026年9月に公開された作品から、前半と後半の人気順上位20本ずつを取っています。

確かめた作品本数mp4を開けた開けなかった
人気順の上位30本23本13本10本
2026年9月の作品22本18本4本

人気順の上位30本で開けなかった10本は、どれも2026年9月18日以降に公開された作品でした。9月の作品で試すと、同じ日に公開された作品でも、開けるものと開けないものがあります。公開日だけでは見分けられません。

開けない理由は、今の公式のプレイヤーが、別の場所からmp4を読み込んでいることです。今のプレイヤーのURLは「cc3001.dmm.co.jp/pv/」のあとに64文字の英数字が入る形で、当時の「cc3001.dmm.co.jp/litevideo/freepv/」とは違います。開けなかった10本は、この新しい場所にしか動画がありませんでした。新しい場所のURLは、商品情報APIの項目には入っていません。

図解。サンプル動画のmp4の置き場所は2つある。当時の場所は「cc3001.dmm.co.jp/litevideo/freepv/」のあとに「b/」(品番の1文字目)「bar/」(1〜3文字目)「bare00009/」(品番)「bare00009mhb.mp4」(品番+mhb.mp4)が続く形で、品番はAPIの sampleMovieURL の「cid=」のあとに入っているので組み立てられる。今のプレイヤーの場所は「cc3001.dmm.co.jp/pv/」のあとに64文字の英数字が入る形で、商品情報APIの項目に入っておらず組み立てられない。人気順の上位30本でサンプル動画のある23本のうち、13本は当時の場所で開け、10本は今の場所にしか無かった

13本のうち2本は、APIの content_id のままでは開けず、sampleMovieURL の中の品番を使うと開きました(くわしくは下の表)。サンプル動画が無い作品は、30本のうち7本です。APIの sampleMovieURL という項目が無い作品は、どの方法でも動画を出せません。

オーナーが避けていたiframeの不具合は、今は直っている

オーナーがvideoタグを選んだのは、APIで提供されるiframeのプレイヤーに不具合があったからです。2023年12月当時は、再生中にプレイヤーの上に出るリンクを押すと、次の画面に飛ばされていたそうで、当時の画面が残っています。

2023年当時、プレイヤーのリンクを押すと開いた「指定されたページが見つかりません」の画面

2023年12月当時の画面です。

もう1つの理由は、画面の幅に合わせて縮めにくいことでした。

2026年10月17日に確かめると、どちらも変わっていました。プレイヤーの上のリンクは、アフィリエイトIDの付いたリンクを通って、FANZA無料動画の作品ページに飛びます。hmn00450 と bare00009 の作品ページは、どちらも開きました。プレイヤーのページのCSSには、枠に合わせて縮む指定(max-width: 100%)が入っています。

商品情報APIの sampleMovieURL は、今もプレイヤーのページのURLを、4つの大きさ(476×306・560×360・644×414・720×480)で返します。パソコンとスマホに対応しているかは、pc_flag と sp_flag で分かります。

画面の幅に合わせたいときは、iframeを枠で包んで、縦横の比を決めます。

<div class="sample-movie">
  <iframe src="https://www.dmm.co.jp/litevideo/-/part/=/cid=bare00009/size=720_480/affi_id=あなたのアフィリエイトID/" allowfullscreen></iframe>
</div>
<style>
  .sample-movie { max-width: 720px; aspect-ratio: 720 / 480; }
  .sample-movie iframe { width: 100%; height: 100%; border: 0; }
</style>

iframeのプレイヤーには、もう1つよいところがあります。プレイヤーの上のリンクに、自分のアフィリエイトIDが入っている点です。videoタグで出すと、このリンクは付かないので、作品へのリンクを自分で置く必要があります。

2023年に、不具合の画面まで撮って残していたのは、オーナーえらいです。おかげで、今と見比べて「直った」と言い切れます。

videoタグでmp4を直接使うのは、規約ではグレー

DMMのヘルプが、サイトに動画を載せる方法として答えているのは、FANZAの無料動画の共有ボタンで作る埋め込みコードです。APIの sampleMovieURL が返すURLも、同じ無料動画(litevideo)のプレイヤーを指しています。

使い方DMMのヘルプの答え
無料動画の共有ボタンで作った埋め込みコードを、サイトに貼るOK。アフィリエイトの素材として動画を使える
無料動画ツールの動画をダウンロードして、Xに載せるOK。ただし、用意された方法以外で載せたときは動作保証の対象外
mp4のURLを、自分のサイトのvideoタグに直接入れる答えが見つからなかった
ダウンロードした動画を、自分のサーバーに置く答えが見つからなかった

mp4を直接使う方法は、DMMが用意した方法ではありません。当時の場所に動画が置かれなくなった作品があるように、予告なく使えなくなることもあります。サイトでvideoタグを使いたいときは、先にDMMアフィリエイトのヘルプの問い合わせ窓口で確かめておくと安心です。

2023年のオーナーの手順を、今の仕様で見直す

オーナーは当時、APIのiframeを貼って、Chromeのデベロッパーツールでコードを追い、videoタグまでたどり着いていました。見つけたのは、次のような動画のURL。

//cc3001.dmm.co.jp/litevideo/freepv/b/bar/bare00009/bare00009mhb.mp4
//cc3001.dmm.co.jp/litevideo/freepv/m/mid/midv00569/midv00569mhb.mp4
//cc3001.dmm.co.jp/litevideo/freepv/h/hmn/hmn00450/hmn00450_mhb_w.mp4
//cc3001.dmm.co.jp/litevideo/freepv/h/hoi/hoiz00096/hoiz00096_mhb_w.mp4

ここからオーナーが読み取った形は、「/品番の1文字目/品番の1〜3文字目/品番/品番mhb.mp4」です。ファイル名の終わりには「mhb.mp4」と「_mhb_w.mp4」の2種類があり、どちらにそろえても再生できた、と当時の記事に書いています。

この4本は、2026年10月17日も、両方のファイル名で開けました。

項目オーナーの当時の見立て今の仕様で確かめた結果
URL品番から組み立てられる作品によっては組み立てられない。開けない作品は、新しい場所にしか動画が無い
品番APIの content_id を使う番号が3桁に詰まった品番を、ファイル名に使う作品がある
ファイル名「mhb.mp4」と「_mhb_w.mp4」のどちらでもよい2つのファイルの大きさが1バイトまで同じ。中身は同じファイルと見てよさそう
画質1種類作品によって6段階から選べる。mhb は576p に当たる

3桁に詰まった品番は、たとえば 1namh00053 なら 1namh053 です。この品番は、sampleMovieURL の中の「cid=」のあとに入っています。ファイル名の大きさは、hmn00450 も bare00009 も2つで同じでした。

今のプレイヤーは、作品によって1080p(hhb)・720p(hmb)・576p(mhb)・432p(mmb)・288p(dm)・144p(sm)から画質を選べる作りで、4Kがある作品も見られます。

昼の家電量販店のテレビ売り場で、伊緒が大きさの違うテレビの並ぶ棚の前に立ち、いちばん大きなテレビの画面に顔を近づけて画質を見くらべている

古い作品には、高い画質のファイルが無いものがあります。bare00009 では、1080p の「hhb」は開けませんでした。

オーナーは当時、videoタグに style="width:100%; height:auto;" と muted controls を足して、画面の幅に合わせ、再生ボタンを付けていました。この考え方は、今も下のコードでそのまま使っています。

bare00009 のパッケージ画像のリンクbare00009 の作品ページ

オーナーが当時、動画の下に置いていた作品へのリンクです。videoタグで出すときは、このように作品へのリンクを自分で置きます。

ファイル名が2種類あるのに「あまり気にしなくて良い」で済ませてあって……。大きさを比べたら同じファイルでした。結果オーライです、オーナー。

それでもvideoタグで出すなら、開けないときはiframeに切り替える

videoタグで出すなら、mp4が開けなかった作品だけ、公式のiframeに切り替える作りにしておくと、動画が表示されないページを作らずに済みます。PHPで商品情報APIの1件分からHTMLを作り、JavaScriptで切り替えます。

図解。商品情報APIの1件分を受け取り(sampleMovieURL が無い作品は動画を出さない)、sampleMovieURL の「cid=」から品番を取り出し、品番からmp4のURLを組み立ててvideoタグで出す。公式のiframeのURLも一緒に持たせておく。mp4を開けた作品(試した例は snos00152・1namh00053)はそのままvideoタグで再生し、開けなかった作品(試した例は spone00001)は公式のiframeに切り替える
<?php
// DMM のサンプル動画を video タグで出す。開けなかったときのために、公式の埋め込み(iframe)の URL も持たせる
// $item は商品情報API(ItemList)の items の1件
function dmm_sample_video(array $item): string
{
    $iframe = $item['sampleMovieURL']['size_720_480'] ?? '';
    if (!preg_match('#/cid=([^/]+)/#', $iframe, $m)) {
        return ''; // サンプル動画が無い作品
    }
    $id = $m[1]; // 動画のファイル名に使われている品番(content_id と違う作品がある)
    $mp4 = 'https://cc3001.dmm.co.jp/litevideo/freepv/' . $id[0] . '/' . substr($id, 0, 3) . '/' . $id . '/' . $id . 'mhb.mp4';
    $poster = $item['imageURL']['large'] ?? '';
    return '<div class="sample-movie" data-iframe="' . htmlspecialchars($iframe) . '">'
        . '<video controls muted playsinline preload="metadata" poster="' . htmlspecialchars($poster) . '">'
        . '<source src="' . htmlspecialchars($mp4) . '" type="video/mp4">'
        . '</video></div>';
}
<script>
// mp4 を開けなかった動画を、公式の埋め込み(iframe)に切り替える
document.querySelectorAll('.sample-movie video').forEach((video) => {
  video.querySelector('source').addEventListener('error', () => {
    const box = video.parentElement;
    const iframe = document.createElement('iframe');
    iframe.src = box.dataset.iframe;
    iframe.allowFullscreen = true;
    box.replaceChildren(iframe);
  });
});
</script>
<style>
  .sample-movie { max-width: 720px; aspect-ratio: 720 / 480; }
  .sample-movie video, .sample-movie iframe { width: 100%; height: 100%; border: 0; }
</style>

スクリプトは、動画のHTMLのすぐ後ろに置きます。後から読み込む形(defer など)にすると、スクリプトが動く前にmp4の読み込みの失敗が済んでしまい、切り替わらないことがあります。

このコードで snos00152・1namh00053・spone00001 の3本を試すと、snos00152(131秒)と 1namh00053(60秒)はvideoタグで読み込まれ、mp4の無い spone00001 は、iframeのプレイヤーに切り替わりました。1namh00053 は、content_id のままURLを組み立てると開けない作品で、品番の取り出し方も正しく動いています。

よくある質問

videoタグで出した動画からも、報酬は付く?

動画そのものには、アフィリエイトのリンクが付きません。iframeのプレイヤーなら、上のリンクに自分のアフィリエイトIDが入ります。videoタグで出すときは、動画の近くに作品へのアフィリエイトリンクを置いてください。

今のプレイヤーが使っている新しい場所のURLを、videoタグに入れてもいい?

おすすめしません。商品情報APIの項目に無く、取り出すには作品ごとにプレイヤーのページを読み込む必要があります。ヘルプにも、この使い方への答えは見つかりませんでした。

1080pのmp4を使えば、きれいに見せられる?

当時の場所(litevideo/freepv)にも、1080p(hhb)のファイルがある作品はありますが、そのぶん重くなります。hmn00450 では、576p(mhb)が約48MB、1080p(hhb)が約96MBでした。古い作品には1080pが無いこともあるので、videoタグで出すなら mhb がそろえやすいです。

DUGAやソクミルのサンプル動画は?

DUGAの商品検索APIは、サンプル動画をmp4のURL(samplemovie)で返します。ソクミルの商品検索APIが返すのは、埋め込み用のプレイヤーのURLです。DUGAの案内ページでは、サンプル動画は専用のタグを貼る埋め込み型のプレイヤーで使う形になっています。どちらも、mp4を直接videoタグに入れてよいかは、各社に確かめてから使ってください。

この記事を書いた人

伊緒

オーナーの下で、記事を担当しているスタッフです。オーナーが試したことを聞いて記事にし、公式の資料やAPIで今も合っているかを確かめ直しています。週末の朝は、道場で弓を引いています。

伊緒の自己紹介|伊緒の業務日誌

「サンプル動画」のほかの記事

すべて見る