3D動画実験場

3Dメディア実験場

実験の動機

うごくメモ帳3Dでは、3D立体視を表現に組み込むことができます。

立体視対応デバイスはあまり普及しているとは思えず、このサイトのゆるいアニメページでも立体視表現は削除しています。

ここでは、Newニンテンドー3DSで閲覧するつもりで作った立体視入りの動画ファイルを試験的に公開しています。

ニンテンドー3DSカメラと、フジフイルムの3Dカメラで作った動画も置いてあります。

テストA うごメモ3DのAVI→H.264 3D

互換性を優先した変換設定です。H.264です。2Dデバイスでは動画が縦長で左右に並びます。(SBS方式)

New3DSなら3Dで再生できます。

テストB うごメモ3DのAVI→何もしない

うごメモ3DのAVIを直アップです。乱暴ですね。

旧3DSで再生する方法もあります。このファイルをダウンロードして、3DSのSDカードのDCIMフォルダーに「3桁の数字+5文字のアルファベット」を名付けたフォルダを作り、その中に入れれば3DSカメラで再生できます。

テストC ニンテンドー3DSカメラ→H.264 3D

ニンテンドー3DSカメラで撮影したものを、H.264の3D動画に変換しました。

撮影日 2013/6/4 10:50:44

撮影日 2013/5/6 18:06:30

撮影日 2013/6/15 17:44:30

テストD フジ FinePix REAL 3D W1→H.264 3D

フジフイルムの3Dカメラ「FinePix REAL 3D W1」で撮影した動画を、H.264の3D動画に変換しました。

AVIコンテナ内に左目用ビデオ、オーディオ、右目用ビデオが格納されています。これは3DSのAVIと同じような構成です。ビデオはMotion JPEGで、解像度がVGAです。それが2画面分あります。音声はLPCMのステレオで、サンプリングレートが11025Hzです。ビデオにビットレートを振ったせいか、音声の品質が犠牲になっています。

撮影日 2024/6/29 18:55

撮影日 2024/12/17 夕方

結果

New ニンテンドー3DSは、暗号化通信の検証に失敗した状態では動画の再生ができません。HTTP→HTTPSにリダイレクトを設定していると、知らず知らずのうちにこの問題にハマることがあります。

New ニンテンドー3DSなら、テストA~Dの動画が問題なく再生、立体視できました。

資料

テストAの作り方

ffmpegを用意して、CUIを立ち上げて、以下のコマンドを打ちます。フレームレートはメモ速度に応じて変えます(colorフィルターのrとgとrのオプション)。

ffmpeg -i HNI_0003.AVI -strict unofficial -movflags +faststart -filter_complex color=s=768x480:r=8[base];[0:0]setpts=PTS-STARTPTS,scale=384:480[left],[0:2]setpts=PTS-STARTPTS,scale=384:480[right];[base][left]overlay=0:0:shortest=1[wh2];[wh2][right]overlay=w:0:shortest=1 -pix_fmt yuv420p -g 32 -sc_threshold 0 -c:v libx264 -x264opts "frame-packing=3" -profile:v main -level 3.2 -c:a libfdk_aac -b:v 512k HNI_0003.MP4

テストBの作り方

ffmpegを用意せず、CUIも立ち上げず、3DSからAVIを抜き取ってサーバーに上げるだけです。

テストCの作り方

ffmpegを用意して、CUIを立ち上げて、以下のコマンドを打ちます。うごメモAVIと解像度が異なるため、動画の並べ方を変えてあります。

ffmpeg -i HNI_0057.AVI -strict unofficial -movflags +faststart -filter_complex color=s=864x480:r=20[base];[0:0]setpts=PTS-STARTPTS,scale=860:240[left],[0:2]setpts=PTS-STARTPTS,scale=860:240[right];[base][left]overlay=2:0:shortest=1[wh2];[wh2][right]overlay=2:h:shortest=1 -pix_fmt yuv420p -g 60 -sc_threshold 0 -c:v libx264 -x264opts "frame-packing=4" -profile:v main -level 3.2 -c:a libfdk_aac -b:v 512k HNI_0057.MP4

テストDの作り方

テストCの変形です。縦横比をFinePixのファイルに合うように変えています。

1分を超えるものはHLSに変換しています。

ffmpeg -i DSCF9112.AVI -filter_complex color=s=640x480:r=30[base];[0:0]setpts=PTS-STARTPTS,scale=640:240[left],[0:2]setpts=PTS-STARTPTS,scale=640:240[right];[base][left]overlay=0:0:shortest=1[wh2];[wh2][right]overlay=0:h:shortest=1 -pix_fmt yuv420p -g 120 -sc_threshold 0 -c:v libx264 -x264opts "frame-packing=4" -profile:v main -level 3.2 -c:a libfdk_aac -b:v 860k -r 30 -f hls -hls_list_size 0 -master_pl_name freal3_2.m3u8 -master_pl_publish_rate 4 freal3_2_%v-movie.m3u8

Newニンテンドー3DSのインターネットブラウザーで再生できる動画

任天堂ホームページの主な仕様によると、

ビデオフォーマット
MP4 , M3U8+TS (HTTPLiveStreaming)
ビデオコーデック
H.264 - MPEG-4 AVC Video(max 854x480 level 3.2, 3D対応)
オーディオコーデック
AAC - ISO/IEC 14496-3 MPEG-4AAC,MP3

となっています。

H.264のレベルが3.2なのは、おもちゃにしては頑張っていると思います(同時期のiPhone 6はレベル4.2を公式サポート)。60fpsの再生もできなくはないです。

実はHLSに対応しています。New3DS発売当時YouTubeが見れただけのことはあります。複数の画質を内包しておくと、通信状況に応じて画質を動的に変える機能もあります。

私のNew3DSがへたっているだけかもしれませんが、ブラウザで動画を見るとすごい勢いで電池が減っていきます。

各変換元ファイルの詳細情報

各ファイルのMediaInfo出力を貼り付けておきます。

うごくメモ帳3D AVI 速度6

全般
形式 : AVI
形式/情報 : Audio Video Interleave
サイズ : 4.92 MiB
長さ : 32秒 750ミリ秒
総ビットレート : 1,261 Kbps

映像 #1
ID : 0
形式 : JPEG
コーデック ID : MJPG
長さ : 32秒 750ミリ秒
ビットレート : 496 Kbps
幅 : 384 ピクセル
高さ : 240 ピクセル
モニターのアスペクト比 : 16:10
フレームレート : 8.000 fps
色空間 : YUV
クロマサブサンプリング : 4:2:2
ビット深度 : 8 ビット
走査方式 : プログレシッブ (PPF)
圧縮方法 : 非可逆
ビット/(ピクセル*フレーム) : 0.673
ストリームのサイズ : 1.94 MiB (39%)

映像 #2
ID : 2
形式 : JPEG
コーデック ID : MJPG
長さ : 32秒 750ミリ秒
ビットレート : 498 Kbps
幅 : 384 ピクセル
高さ : 240 ピクセル
モニターのアスペクト比 : 16:10
フレームレート : 8.000 fps
色空間 : YUV
クロマサブサンプリング : 4:2:2
ビット深度 : 8 ビット
走査方式 : プログレシッブ (PPF)
圧縮方法 : 非可逆
ビット/(ピクセル*フレーム) : 0.675
ストリームのサイズ : 1.94 MiB (39%)

音声
ID : 1
形式 : PCM
形式の設定 : Little / Signed
コーデック ID : 1
長さ : 32秒 750ミリ秒
ビットレート種別 : 固定 (CBR)
ビットレート : 262 Kbps
チャンネル : 1 チャンネル
サンプルレート : 16.4 KHz
ビット深度 : 16 ビット
ストリームのサイズ : 1.02 MiB (21%)
アラインメント : インターリーブで整列
インターリーブの長さ : 125 ミリ秒 (1.00 個の映像フレーム)
インターリーブの事前時間 : 124 ミリ秒

ニンテンドー3DSカメラ 動画AVI

全般
形式 : AVI
形式/情報 : Audio Video Interleave
サイズ : 55.4 MiB
長さ : 1分 35秒
総ビットレート : 4,891 Kbps

映像 #1
ID : 0
形式 : JPEG
コーデック ID : MJPG
長さ : 1分 35秒
ビットレート : 2,436 Kbps
幅 : 480 ピクセル
高さ : 240 ピクセル
モニターのアスペクト比 : 2.000
フレームレート : 20.000 fps
色空間 : YUV
クロマサブサンプリング : 4:2:0
ビット深度 : 8 ビット
走査方式 : プログレシッブ (PPF)
圧縮方法 : 非可逆
ビット/(ピクセル*フレーム) : 1.057
ストリームのサイズ : 27.6 MiB (50%)

映像 #2
ID : 2
形式 : JPEG
コーデック ID : MJPG
長さ : 1分 35秒
ビットレート : 2,381 Kbps
幅 : 480 ピクセル
高さ : 240 ピクセル
モニターのアスペクト比 : 2.000
フレームレート : 20.000 fps
色空間 : YUV
クロマサブサンプリング : 4:2:0
ビット深度 : 8 ビット
走査方式 : プログレシッブ (PPF)
圧縮方法 : 非可逆
ビット/(ピクセル*フレーム) : 1.033
ストリームのサイズ : 27.0 MiB (49%)

音声
ID : 1
形式 : ADPCM
コーデック ID : 11
コーデック ID/ヒント : Intel
長さ : 1分 35秒
ビットレート種別 : 固定 (CBR)
ビットレート : 64.0 Kbps
チャンネル : 1 チャンネル
サンプルレート : 16.0 KHz
ビット深度 : 4 ビット
ストリームのサイズ : 753 KiB (1%)
インターリーブの長さ : 50 ミリ秒 (1.00 個の映像フレーム)
インターリーブの事前時間 : 94 ミリ秒

FUJIFILM FinePix 3D Real W1

全般
形式 : AVI
形式/情報 : Audio Video Interleave
サイズ : 510 MiB
長さ : 3分 47秒
総ビットレート : 18.8 Mbps

映像 #1
ID : 0
形式 : JPEG
コーデック ID : MJPG
長さ : 3分 47秒
ビットレート : 8,479 Kbps
幅 : 640 ピクセル
高さ : 480 ピクセル
モニターのアスペクト比 : 4:3
フレームレート : 30.000 fps
色空間 : YUV
クロマサブサンプリング : 4:2:2
ビット深度 : 8 ビット
走査方式 : プログレシッブ (PPF)
圧縮方法 : 非可逆
ビット/(ピクセル*フレーム) : 0.920
ストリームのサイズ : 229 MiB (45%)
タイトル : FUJIFILM AVI STREAM 0200

映像 #2
ID : 2
形式 : JPEG
コーデック ID : MJPG
長さ : 3分 47秒
ビットレート : 9,984 Kbps
幅 : 640 ピクセル
高さ : 480 ピクセル
モニターのアスペクト比 : 4:3
フレームレート : 30.000 fps
色空間 : YUV
クロマサブサンプリング : 4:2:2
ビット深度 : 8 ビット
走査方式 : プログレシッブ (PPF)
圧縮方法 : 非可逆
ビット/(ピクセル*フレーム) : 1.083
ストリームのサイズ : 270 MiB (53%)
タイトル : FUJIFILM AVI STREAM 0200

音声
ID : 1
形式 : PCM
形式の設定 : Little / Signed
コーデック ID : 1
長さ : 3分 47秒
ビットレート種別 : 固定 (CBR)
ビットレート : 352.8 Kbps
チャンネル : 2 チャンネル
サンプルレート : 11.024 KHz
ビット深度 : 16 ビット
ストリームのサイズ : 9.55 MiB (2%)
アラインメント : インターリーブで整列
インターリーブの長さ : 1000 ミリ秒 (30.00 個の映像フレーム)
インターリーブの事前時間 : 1000 ミリ秒