What is going on with this article? 4.非同期で処理をする場合、コールバックを設定 Androidをもっと大きな画面で操作したい場合、パソコンのディスプレイに投影(ミラーリング)できたら便利ですよね。そこで本記事では、Androidの画面をパソコンへ無線でミラーリングできる無料アプリApowerMirrorを紹介します。こ  作成時にそのSurfaceを指定できる。 本記事ではAndroidの画面をPCにミラーリングする機能の解説をしています。 MediaCodec クラス概要 和訳 上の記事のコードを参照しながら見ると良いかもしれません。, ・MediaProjectionManager EncodeAndMuxTest(やり方は古いものの、手順が参考になりました), ・MediaCodec サーバーソケットの接続待ちの処理を、別スレッドで行っているのにもかかわらずAndroid8.0で, でUIがブロックされてしまします。 公式ドキュメント まだ、リアルタイムでのタッチ処理などの機能が足りませんが、今後作っていきたいと思います。, また、スクリプトで端末を自動操作できる機能も作ってみたいと思っています。 (違っていたらご指摘ください), Iフレーム??という方は 余談ですが、なぜlocalhostのIPに127.0.0.1が割り当てられたのか、 Chromecastのミラーリング機能とは、同じ画面を表示する映し鏡のこと; Chromecastに必要なものは、WiFi・Google Chrome・Google Home; ミラーリングできない場合は、WiFi接続、端末の再起動・Android 4.4.2以上にする; AmazonプライムビデオやゲームにChromecastを使えば便利になる Iフレームを初めに受け取れないとPC側で再生ができません。 Android 7.0からの新機能で、画面の表示サイズ(dpi)を変更することができます。これを使うと画面を拡大したり、より広い範囲を表示したりできます。機能としては標準でも普通に使うことができますが、開発者向けオプションをオンにすると… 本記事ではAndroidスマホを使った画面ミラーリングの方法をまとめて紹介します。テレビやパソコンなどの大画面にスマホの画面を映して楽しみたいと考えている人はぜひチェックしてください。 スマホとテレビにアプリをダウンロードしてインストール … ネットワークに関する処理はメインスレッドで行ってはいけないという制約から こうすると、送信するフレームの順番が保証されません。  MediaCodecの設定に使用。, フレームの入出力にBufferやSurfaceを使用できます。 Androidは手軽に動画を楽しめますが「画面が小さくて見にくい」と思ったことはありませんか?そんな時は、ミラーリングでスマホ画面をテレビの画面に映しちゃいましょう♪今回はミラーリングのやり方を紹介していきます!USBなど有線で使う方法やWifi経由で使う方法を説明します。 複数台の実機や、エミュレータで試しましたが、全てで動いたのはH.264だけでした。, また、VP8はエンコーダ自体は生成できるものの、取得したバッファに異常があるようでエラーで落ちます。 (表示されない場合は、ステータスバーをおろしたり、ホームに戻るなどして画面が更新されるようにしてください), -framerate 60 は単純にフレームレートを指定しています。キャストアプリの設定と同じにする必要があります。, -analyzeduration 100 ffplayが受信したフレームを解析する時間を制限します。(今回は100ms)ffplayはフレームがある程度溜まってから解析し、表示をするため、このオプションを指定しないと遅れて表示されてしまいます。, -i tcp://127.0.0.1:8080 ストリームを受信するアドレスです。 また、ここにファイルパスを指定すると普通に動画再生もできます。, 個人的に困った問題が発生しました。何か情報がありましたら、教えてください。 この記事の続きに  SurfaceViewのSurfaceを指定すればViewにリアルタイムに表示される。, ・Surface PCのWebブラウザ側のページを確認し、「ミラーリング」ボタンをクリック; iOS、Androidの画面を並べる. 普通に60FPSでヌルヌル動くので、初めて使ったときは感動しました。 許可された場合、getMediaProjectionでMediaProjectionを取得します。 3.MediaCodecのconfigureを実行。2で作成したMediaFormatを指定 VP9は[Invalid data found when processing input]となり、ffplayが認識してくれませんでした。 入力にSurface、出力にBufferなんてことも可能です。, 1.createEncoderByType/createDecoderByTypeでエンコーダ、デコーダを作成 Stop時に処理を開始します。 スマホの画面をミラーリングできるアプリはいくつかありますが、使いやすさという点では「AirMore」がおすすめです。 この記事では、スマホの画面をPCにミラーリングできるアプリ「AirMore」についてくわしく解説します。 このSurfaceに画像を書き込むと自動でその内容がエンコードされます。, また、ここでコールバックを設定していますが、使用するのは MediaProjectionManagerを取得し、ユーザーにキャプチャ確認用のダイアログを表示しています。, 1.で表示させたダイアログをユーザーがタップするとonActivityResultが発生します。 Androidのミラーリングについて、Androidの画面からテレビの画面にミラーリングする方法や、またAndroidからPCの画面にミラーリングをする方法を有線接続、無線接続、アプリでの接続に分けて、ご説明しています。 127.0.0.1がローカルホストの理由は? adbで遊ぶ 本記事では、スマートフォンとパソコン間で画面を共有(ミラーリング)できるオススメアプリをまとめています。アプリによって「対応するデバイス種別」と「ミラーリングできる内容」が異なるため、自身の目的に合わせた最適なアプリを探してみて下さい。 があります。, Androidの画面をPCにミラーリングするソフトを作ります。 今回、複数のPCに配信する必要はないので接続は1回きり受け付けるようにしています。, 接続後、エンコーダを開始しています。 What is going on with this article? 自分で作ってみることにしました。, Android側でサーバーを建て、PCから接続します。 無料版だと画質に制限があるのですが、課金をすると解除されます。 ここでいちばん重要なのは、書き込むSurfaceにエンコーダーから取得したinputSurfaceを設定することです。 先日、Android 8.0のスマホを入手しましたので、早速 Fire TV Stickでのミラーリングを試してみました。中国製の端末であるためか、Andorid 8.0となり設定が変わったのか、これまでの設定画面経由でのミラー … 「スマホの写真や動画をテレビの大画面で見たい」、「スマホのゲームを大画面で楽しみたい」などと思ったことはありませんか?そんな希望を実現させてくれる機能が、画面ミラーリング。今回はiPhone、Androidそれぞれのミラーリングの使い方やメリット・デメリットをご紹介します。 そしてconfigureを実行して、MediaFormatを設定しています。, 最後にcreateInputSurfaceを呼び出して入力用のSurfaceを取得します。 しかし、今回はffplayに丸投げして、PC側のプログラムは一切作りません(笑), ffplayとは有名な動画変換ツールFFmpegに同梱されている動画再生ソフトです。 C#アプリにスクリプティング機能を追加してみる エンコードされたデータが利用可能になった際に呼び出されるonOutputBufferAvailableのみです。 Androidの画面をPCにミラーリングするソフトを作る2 リアルタイムタッチ編, 情報系の学部に通う大学3年生 / エミュレータで再現できるので試してみてください。, Vysorの代わりをするにはまだ機能が足りませんが、割りと簡単にミラーリングを実装できたのは驚きでした。 送信用スレッドはキュー処理ができるようにHandlerThreadを採用しています。, サーバーソケットを立ち上げて、待機します。 今回はストリームをデコードしリアルタイムで表示する用途で使用します。 という記事も公開しているので興味があれば御覧ください。, 次 この長い記事をここまでご覧下さりありがとうございます。 Kotlinが好きですが、js/tsの偉大さも感じている今日このごろです. こちらを参考にしました。, xxxxにPC側で使うポート番号、yyyyに端末で使うポート番号を指定します。 Why not register and get more from Qiita? ANDROID 5.0 アプリからスクリーンショットを撮影する 特に何もしなくても画面がエンコードされます。以下にその流れを示します。, 送信用のスレッドと待受用のスレッドを開始しています。  普通のバッファと違い「画像を扱う」ことに特化したバッファ Androidの画面をPCに映す方法3通りを紹介しました。無料の画面ミラーリングソフトApowerMirrorを使うこと、ウェブアプリAirMoreによる方法とChromeブラウザーのプラグインVysorを介する方法です。具体的なやり方とメリットやデメリットについて詳しく説明しました。 Download FFmpeg また、一部エラーチェックをしていない部分もありますがご了承ください。 上記記事で紹介されていたもの LetsViewを利用してAndroidスマホの画面をテレビにミラーリングすることもいい選択です。これを使って、スマホのに保存している映画やビデオをテレビの大画面で見ることができます。それとは別に、スマホから何かを友達や家族に見せびらかしたい場合に備えて、Androidスマホの画面をテレビにミラーリングすることもできます。では、下記のガイドをご覧下さい。 1. 2.adb forward tcp:8080 tcp:8080 を実行 FFmpeg同様、ffplayもCUIからパラメータを指定して起動します。, 1.Android端末をPCと繋ぎadbに認識されるようにする。 やりにくい機種もあるAndroid端末(スマホやタブレット)のスクリーンショットを、PCで行ないそのままPC上に保存できる Surfaceは中身が更新されると自動で渡されます。, Bufferを使用する際は手動でデータを取得する必要があります。 送信用のスレッドで送信処理を行うようにしています。, また、余談ですが、以下のように書くとPC側で表示される画面が乱れることがあります。, そもそもスレッドをひたすら生成しまくる時点でよろしくないコードですが、 3.Android端末でアプリを立ち上げ、Startを押す 待受用スレッドはActivityにRunnableを実装しているのでそこのrun()内の処理を行います。 AndroidでMediaCodecを使いFFmpegなしで動画を圧縮する方法(ライブラリあり) 左はiPhone XS Max、右はAndroid スマホ(Xiaomi Redmi Note 8 Pro)のミラーリングですが、Fire TV Stickでのミラーリングと比較すると、画面遷移などはかなりスムーズです。今回は試していませんが、以下の記事と同様に、Androidスマホにマウスを接続すると、スマホをPC画面で操作しているように見 … こうすることでミラーリングされた画面はエンコーダーのInputSurfaceに直接書き込まれるようになり、 Wi-Fi経由でも可能ですが、安定させるためにUSB経由で通信を行います。, Media Projectionを使い画面をキャプチャします。(なので、対応端末は5.0以降になります。) 物理ボタンも一切効かなくなり、接続してブロックを解除しないと、しばらくしてシステムUIが再起動します。 パラメーターを指定することで色々遊ぶことができます。 Nebula (ネビュラ) のプロジェクターはAndroid OSを搭載しているため、1台でYouTubeやNetflix等の動画コンテンツを壁や天井に大画面で投影して楽しむことができますが、プロジェクターの本分であるミラーリング機能については、Nebulaユーザーの中でもまだ試したことがないという方も多いはず。 (サブスクリプション制と買い切り制があります), ただ、ソフトにお金を出すのは学生の財布的に厳しいので Wi-Fi経由で試すなら端末のIPを指定してください。 その後、スクリーンサイズを取得し、エンコーダーと仮想ディスプレイの準備をします。, 最初にMediaFormatを作成します。そしてエンコードに必要なパラメータの設定をします。 5.取得したMediaProjectionのcreateVirtualDisplayで仮想ディスプレイをミラーリングモードで作成 Help us understand the problem. 4.コマンドプロンプトor PowerShell起動後、ffplay本体があるディレクトリに移動後、以下を実行, これでAndroid側の画面がPCに表示されます。 ・MediaFormat Androidスマホの画面をパソコンにミラーリングするには、最もおすすめなアプリです。 通信環境については、スマホとパソコンが同じWi-Fiネットワークに接続されていなければ、利用できない点も注意。 Help us understand the problem. By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away.  そのため、ImageReaderのSurfaceを指定すればImageReader経由で画像を取得できるし、 圧縮されたフレームは前後のフレームの差分を表しているだけですので Androidの画面をミラーリングするソフトにはいくつかあります。 その中でも画質、フレームレートが、優れているソフトにVysorがあります。 普通に60FPSでヌルヌル動くので、初めて使ったときは感動し … こちらで詳しく説明されています。, 簡単ではありますが、MediaProjectionを使用する際の流れを掲載します。 最終的に、LonelyScreenとWebブラウザの画面サイズをいい感じに調整して、2つを並べて表示し … Gifではわかりませんが、50~60FPSでヌルヌル動きます。 それに関して、Windows上で動くC#アプリにスクリプト機能&エディタを組み込む こうするとStop状態に戻るので、またボタンを押すと、始めから処理が走り、再度接続できるようになります。, 具体的にはadb-serverをプロキシサーバーのように使うことで実現できます。 キャプチャをMedia Codecでエンコードして、PC側に流します。, サーバーに接続して、ストリームをデコードして表示します。 プログラミングしたり、CG(動画)作ったり、作曲したり色々してます / Android、iPhone、Macの画面をテレビに映す手順(ミラーリング) Android(Pixel 3a)の画面をテレビに映す. 今回は, で良いと思います。  このとき、書き込んでほしいSurfaceを指定 動画や音声を扱うプログラムを書くのが好き / 設定画面にもどり「開発者向けオプション」が増えているので開きます。 「開発者向けオプション」を ON にします。 そのままスクロールして USBデバッグ を ON にします。 ミラーリング開始. を御覧ください。, 3のエンコーダーに設定しているコールバック内で呼び出しているものです。 次にcreateEncoderByTypeを利用してMediaCodecを作成します。 ApowerMirrorの主な機能– AndroidおよびiPhoneミラー: コンピューターで携帯電話をお楽しみくださ … 記事の頭で紹介したffplayを使用するため、無い方はダウンロードしてください。 2.MediaFormatを作成して、エンコード、デコードする動画の設定をする  VirtualDisplay以外にも、ゲームを作る時など使うSurfaceViewや動画再生プレイヤーなどの内部でも使用される。, 実際にはImageReaderにフレームをためておく機構がありますが、こんな感じです。, 1.getSystemServiceでMeidaProjectionManagerを取得 コールバックはメインスレッドで動いており、呼び出されたこのメソッドも同様です。 3.2で作成したインテントを投げてActivityのonActivityResultでキャッチ  動画のエンコーダ、デコーダ Androidフォンをコンピューターに簡単にミラーリングすることもできます。 ApowerMirror Android MirrorでAndriodをコンピューターにミラーリングする最良の方法.