(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-02
(45)【発行日】2024-12-10
(54)【発明の名称】リアルタイム動画特殊効果システム及び方法並びにコンピュータ読み取り可能記憶媒体
(51)【国際特許分類】
H04N 5/783 20060101AFI20241203BHJP
H04N 21/431 20110101ALI20241203BHJP
H04N 21/433 20110101ALI20241203BHJP
【FI】
H04N5/783
H04N21/431
H04N21/433
(21)【出願番号】P 2021548524
(86)(22)【出願日】2019-10-29
(86)【国際出願番号】 US2019058458
(87)【国際公開番号】W WO2020092301
(87)【国際公開日】2020-05-07
【審査請求日】2022-10-28
(32)【優先日】2018-10-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521181541
【氏名又は名称】ペナ, ヘンリー
(73)【特許権者】
【識別番号】521181552
【氏名又は名称】ブライアント ザ サード, トーマス
(74)【代理人】
【識別番号】110000408
【氏名又は名称】弁理士法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】ペナ, ヘンリー
(72)【発明者】
【氏名】ブライアント ザ サード, トーマス
【審査官】鈴木 順三
(56)【参考文献】
【文献】特開2018-098664(JP,A)
【文献】特開2015-122734(JP,A)
【文献】特開2011-028345(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 5/76 - 5/956
H04N 21/00 - 21/858
(57)【特許請求の範囲】
【請求項1】
動画を受信し、
グラフィカルユーザインターフェース上での指によるタッチアンドホールドに応じて前記動画の録画を開始し、
前記動画を録画している間に、受信した
前記動画を
前記グラフィカルユーザインターフェースに表示し、
前記動画を録画している間に、前記グラフィカルユーザインターフェースによって少なくとも一つの特殊効果コマンドを受信すること、
受信した少なくとも一つのユーザインターフェースモーションコマンド入力に従って、前記動画の録画に少なくとも一つのモーション特殊効果を追加すること、
を含み、
前記動画を録画している間に、前記グラフィカルユーザインターフェースによって少なくとも一つの特殊効果コマンドを受信することは、
前記受信した動画を前記グラフィカルユーザインターフェースに表示している間に、前記グラフィカルユーザインターフェースによって、リアルタイムで、前記動画の録画に少なくとも一つのモーション特殊効果を追加するための
前記少なくとも一つのユーザインターフェースモーションコマンド入力を受信
すること、
を含み、
前記少なくとも一つのユーザインターフェースモーションコマンド入力は、前記動画の録画にスローモーション特殊効果を追加するスローモーションコマンド入力、および/または前記動画の録画にファストモーション特殊効果を追加するファストモーションコマンド入力を含
み、
前記グラフィカルユーザインターフェースによって、前記受信した動画を前記グラフィカルユーザインターフェースに表示している間に、前記グラフィカルユーザインターフェースによって、リアルタイムで、前記動画の録画に少なくとも一つのモーション特殊効果を追加するために前記少なくとも一つのユーザインターフェースモーションコマンド入力を受信することは、前記指が前記録画を継続するためのタッチを維持している間に、前記グラフィカルユーザインターフェース上での前記指による動きに応じて、前記少なくとも1つのユーザインターフェースモーションコマンド入力を受信すること、を含む、方法。
【請求項2】
前記受信した少なくとも一つのユーザインターフェースモーションコマンド入力に従って、前記動画の録画に前記少なくとも一つのモーション特殊効果を加えることは、前記動画が録画されてポスト編集なしで長期メモリ記憶装置に書き込まれる前に、ライブまたはリアルタイムで前記動画の速度レートをデコードして変更することを含む、請求項1に記
載の方法。
【請求項3】
前記受信した少なくとも一つのユーザインターフェースモーションコマンド入力に従って、前記動画の録画に前記少なくとも一つのモーション特殊効果を追加することは、フレームを記録または保存する前に、前記受信したファストモーションコマンド入力に従って、前記動画の録画からフレームをドロップすることを含む、請求項1に記載の方法。
【請求項4】
前記受信した少なくとも一つのユーザインターフェースモーションコマンド入力に従って、前記動画の録画に前記少なくとも一つのモーション特殊効果を追加することは、フレームを記録または保存する前に、前記受信したスローモーションコマンド入力に従って、前記動画の録画にフレームを追加することを含む、請求項1に記載の方法。
【請求項5】
前記受信した少なくとも一つのユーザインターフェースモーションコマンド入力に従って、前記動画の録画に前記少なくとも一つのモーション特殊効果を追加することは、
前記受信したスローモーションコマンド入力に従って前記動画を録画する電子装置の録画速度をリアルタイムで減少させること、及び/又は
前記受信したファストモーションコマンド入力に従って前記動画を録画する前記電子装置の録画速度をリアルタイムで増加させること、
を含む、請求項1に記載の方法。
【請求項6】
前記動画を受信することは、ライブ動画を受信することを含む、請求項1に記載の方法。
【請求項7】
前記ライブ動画を受信することは、電子装置のカメラでライブで撮影された動画を受信することを含む、請求項6に記載の方法。
【請求項8】
前記受信した少なくとも一つのユーザインターフェースモーションコマンド入力に従って、前記動画の録画に前記少なくとも一つのモーション特殊効果を追加することは、前記ライブ動画を撮影するカメラのフレームレートをリアルタイムで制御することを含む、請求項7に記載の方法。
【請求項9】
前記カメラでライブで撮影された動画を受信することは、前記電子装置のカメラからライブで撮影されるワンショット動画を受信することを含む、請求項7に記載の方法。
【請求項10】
前記ライブ動画を受信することは、前記電子装置のカメラによって撮影される動画を前記電子装置において受信することをさらに含み、
前記受信した動画を前記グラフィカルユーザインターフェースに表示することは、前記電子装置のグラフィカルユーザインターフェースに前記受信した動画を表示することを含む、請求項7に記載の方法。
【請求項11】
前記ライブ動画を録画している間に、前記少なくとも一つのユーザインターフェースモーションコマンド入力の受信に応答して、前記グラフィカルユーザインターフェースに表示されるライブ動画の速度に差がない、請求項6に記載の方法。
【請求項12】
前記グラフィカルユーザインターフェース上での前記指によるタッチアンドホールドに応じて前記動画の録画を開始することは、前記グラフィカルユーザインターフェースの前記受信した動画を表示する領域上での前記指によるタッチアンドホールドに応じて前記動画の録画を開始すること、および/または
前記指が前記録画を継続するためのタッチを維持している間に、前記グラフィカルユーザインターフェース上での前記指による動きに応じて、前記少なくとも1つのユーザインターフェースモーションコマンド入力を受信することは、前記指が前記録画を継続するためのタッチを維持している間に、前記グラフィカルユーザインターフェースの前記受信した動画を表示する領域上の前記指による動きに応じて、前記少なくとも1つのユーザインターフェースモーションコマンド入力を受信すること、を含む、請求項1に記載の方法。
【請求項13】
前記指が前記録画を継続するためのタッチを維持している間に、前記グラフィカルユーザインターフェース上での前記指による動きは、前記グラフィカルユーザインターフェースの前記受信した動画を表示する部分上を上下左右にスライドすることを含む単一の動きであり、
前記方法は、前記動画の録画に前記少なくとも一つのモーション特殊効果を追加するのと同時に、前記単一の動きに応じて前記受信した動画のズーム係数を変更すること、をさらに含む、請求項12に記載の方法。
【請求項14】
前記グラフィカルユーザインターフェース上での前記指によるタッチアンドホールドに応じて前記動画の録画を開始することは、前記グラフィカルユーザインターフェース上に録画ボタンインジケータを表示すること、および前記録画ボタンインジケータ上での前記指によるタッチアンドホールドの受信に応じて、前記動画のビデオの録画を開始すること、を含み、
前記方法は、前記動画の録画中に、前記受信した動画を表示しながら、前記グラフィカルユーザインターフェース上に速度選択領域を表示すること、および
少なくとも1つのタッチスライド動作入力に応じて、前記グラフィカルユーザインターフェース上の前記録画ボタンインジケータを表示を変更し、表示される前記録画ボタンインジケータが前記グラフィカルユーザインターフェース上での前記指の動きにリアルタイムで直接追従するようにすること、
をさらに含み、
前記指が前記録画を継続するためのタッチを維持している間、前記グラフィカルユーザインターフェース上での前記指による動きに応じて、前記少なくとも1つのユーザインターフェースモーションコマンド入力を受信することは、前記グラフィカルユーザインターフェース上の前記速度選択領域に沿った前記少なくとも1つのタッチスライド動作入力を検出し、前記少なくとも1つのタッチスライド動作入力を前記少なくとも1つのユーザインターフェースモーションコマンド入力として解釈することを含む、請求項1に記載の方法。
【請求項15】
前記グラフィカルユーザインターフェース上に前記動画を表示している間に、前記グラフィカルユーザインターフェースによって、リアルタイムでユーザインターフェース録画入力を受信し、
前記動画の録画は、前記受信したユーザインターフェース録画入力に従って開始される、請求項1に記載の方法。
【請求項16】
前記動画を録画している間に、前記受信した動画を表示しながら、前記グラフィカルユーザインターフェース上に速度選択領域を表示することをさらに含み、
前記指が前記録画を継続するためのタッチを維持している間、前記グラフィカルユーザインターフェース上での前記指による動きに応じて、前記少なくとも1つのユーザインターフェースモーションコマンド入力を受信することは、前記グラフィカルユーザインターフェース上の前記速度選択領域に沿って少なくとも一つのタッチスライド動作入力を検出し、前記少なくとも一つのタッチスライド動作入力を前記少なくとも一つのユーザインターフェースモーションコマンド入力として解釈すること、を含む請求項1に記載の方法。
【請求項17】
カメラで現実世界のシーンの動画を撮影し、
撮影された動画をグラフィカルユーザインターフェース上で通常の速度で再生し、
前記グラフィカルユーザインターフェース上での指によるタッチアンドホールドに応じて前記動画の録画を開始し、
録画した動画の前記グラフィカルユーザインターフェース上での再生速度を、録画中にリアルタイムで
、前記指が前記録画を継続するためのタッチを維持している間、前記グラフィカルユーザインターフェース上での前記指による動きに応じて、ライブ録画中に前記グラフィカルユーザインターフェース上で表示される通常の再生速度から、前記録画の即時再生中に
前記グラフィカルユーザインターフェース上で表示される修正された再生速度に変更すること、
を含む、方法。
【請求項18】
前記再生速度を変更することは、前記動画が録画されてポスト編集なしで長期メモリ記憶装置に書き込まれる前に、ライブまたはリアルタイムで前記動画の速度レートをデコードして変更することを含む、請求項
17に記載の方法。
【請求項19】
少なくとも一つの処理ユニットによって、少なくとも一部がカメラによってリアルタイムで撮影された画像に対応する未処理の動画データをネイティブ速度レートで受信し、
前記少なくとも一つの処理ユニットに動作可能に関連付けられたグラフィカルユーザインターフェース上での指によるタッチアンドホールドに応じて、修正された速度レートで修正された動画データ、または前記未処理の動画データと前記修正された動画データとの組み合わせである出力動画録画データの録画を開始し、
前記処理ユニットによって、前記カメラからの前記未処理の動画データの受信とともにリアルタイムで、
前記指が前記録画を継続するためのタッチを維持している間、前記グラフィカルユーザインターフェース上での前記指による動きに応じて、少なくとも一つの入力を受信し、
前記処理ユニットによって、前記入力が前記未処理の動画データの前記ネイティブ速度レートを変更することに関連しているかどうかを判断し、そうであれば、前記未処理の動画データを変更して、前記カメラからの未処理の動画データの受信とリアルタイムで、
前記ネイティブ速度レートとは異なる一つ以上の修正された速度レートで
前記修正された動画データを作成し、
前記処理ユニットによって、出力動画録画データを少なくとも一つのメモリに書き込むこと、
を含
む、
方法。
【請求項20】
メモリと、
前記メモリに動作可能に接続された少なくとも一つの処理ユニットと、
を備え、
前記少なくとも一つの処理ユニットは、請求項1~
19のいずれか一項に記載の方法を実行するように構成される、システム。
【請求項21】
少なくとも一つの処理装置に、請求項1~
19のいずれか一項に記載の方法を実行させることによってリアルタイム特殊効果を提供させるように構成された命令を含む、コンピュータ読み取り可能記憶媒体。
【請求項22】
ソフトウェア命令を格納および実行するようにそれぞれ構成されたメモリおよびプロセッサを含み、
前記
ソフトウェア命令は、
カメラによって撮影された画像に少なくとも部分的に対応する未処理の動画データをリアルタイムでネイティブ速度レートで前記カメラから取得するリクエストを受信するように構成される、または構成可能な未処理データ受信コンポーネントと、
前記プロセッサに動作可能に関連付けられたグラフィカルユーザインターフェース上での指によるタッチアンドホールドに応じて、修正された速度レートで修正された動画データ、または前記未処理の動画データと前記修正された動画データとの組み合わせである出力動画録画データの録画を開始するように構成される、または構成可能な出力動画録画データ書き込みコンポーネントと、
前記カメラからの前記未処理の動画データのネイティブ速度レートを一つ以上の修正された速度レートに変更するよう、前記未処理
の動画データの取得とともに少なくとも一つのリクエストをリアルタイムで受信するように構成される、または構成可能な速度レート決定コンポーネントと、
前記ネイティブ速度レートを変更するリクエストを受信すると、変更される未処理の動画データ内の少なくとも一つのフレームまたはロケーションを識別し、前記カメラから前記未処理の動画データを受信しながらリアルタイムで前記ネイティブ速度レートとは異なった修正された速度レートで修正された動画データを作成するように前記フレームまたはロケーションを変更するように構成される、または構成可能なフレーム修正コンポーネントと、
で構成され、
前記出力動画録画データ書き込みコンポーネントは、さらに、前記カメラから前記未処理の動画データを受信しながらリアルタイムで前記メモリ及び二次メモリの一つに
前記出力動画録画データを書き込むように構成される、または構成可能
であり、
前記速度レート決定コンポーネントは、前記指が前記録画を継続するためのタッチを維持している間、前記グラフィカルユーザインターフェース上での前記指による動きに応じて、前記少なくとも1つのリクエストをリアルタイムで受信するように構成される、または構成可能である、
ライブ動画録画データの特殊効果操作をリアルタイムで制御するクライアント側電子システム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は米国特許商標庁において2018年10月29日に出願された米国特許出願第16173033号からの優先権を主張し、その継続出願であり、その全内容は、開示の継続性のために参照により本明細書に組み込まれる。
【0002】
本技術は、録画の進行中に動画録画における特殊効果の制御または作成に関連して使用する、リアルタイム動画特殊効果システムおよび方法に関する。より詳細には、本技術がポスト編集なしで長期メモリ記憶装置に記録され書き込まれる前に、デバイスからの動画ストリームの速度レートをライブまたはリアルタイムでデコードして変更するシステムおよび方法に関する。
【背景技術】
【0003】
最新の動画形式では、さまざまなフレームレートが使用される。ほとんどが毎秒24フレームで撮影されたフィルムは、その本来のフレームレートで表示することができず、プルダウン変換を必要とし、しばしば「ジャダー」につながる。例えば、24フレーム/秒を60フレーム/秒に変換するには、奇数フレームは2倍にし、偶数フレームは3倍になるため、動きにむらが生じる。他の変換でも、同様にフレームの倍化が不均一になる。より新しい動画規格は120、240、または300フレーム/秒をサポートしているため、フレームは、300fpsディスプレイにおける25および50fps動画と同様に、24フレーム/秒(fps)フィルムおよび30fps動画といった一般的なフレームレートに対して均等に掛け合わせることができる。これらの規格は、より高いフレームレートにネイティブに対応している動画、およびネイティブフレーム間に補間フレームを有する動画もサポートする。
【0004】
スマートフォンなどの電子デバイスで実行されるデバイスのネイティブなカメラアプリケーション(アプリ)は一定時間で録画し、次いで、動画データストリームを処理して、スローモーション、高速化またはタイムラプスを生成することができる。しかしながら、これらの既知のシステムまたは方法は、ユーザが録画中にリアルタイムで映像内の「時間特殊効果」を手動で制御できるユーザインターフェースを利用しない。例えば、Samsung Galaxy S9+(登録商標)のネイティブカメラアプリはこの場合、画面の中央にボックスアウトラインで示されるように、物体が画面の一部分の内側を横切ったことをアプリが検出したときに、カメラが1秒あたりのフレーム数を変更する特殊効果機能を有する。
【0005】
Instagram(登録商標)、Facebook(登録商標)、Snapchat(登録商標)などのサードパーティアプリではモバイル機器のカメラを使用しているが、これらのアプリには、アプリのユーザが録画中にリアルタイムで録画速度の低速化や高速化を変更できる機能はない。
【0006】
FILMiC Pro(登録商標)のような、より高度な機能に富むカメラアプリでは、ユーザは撮影時のフレームレート速度と再生時のフレームレート速度とを互いに独立してプリセットすることができるため、最終的に作成される動画においてスローモーションおよび高速化の効果を持たせることができる。
【0007】
オプティカルフローのタイムリマッピングはPremiere Pro CC 2015と同様に知られており、これにより、ユーザは、欠落したフレームを補間することによってスムーズな速度およびフレームレートの変更を達成することができる。オプティカルフロー補間は、動いている物体とは対照的な、ほとんど静止した背景の前で動いている、モーションブラーのない物体を含むクリップの速度を調整する。
【0008】
モーション補間またはモーション補償フレーム補間(MCFI:Motion Compensated Frame Interpolation)はアニメーションをより流動的にし、ディスプレイのモーションブラーを補償するために、補間によって既存のフレーム間に中間アニメーションフレームを生成する動画処理の形態の一つである。
【0009】
モーション補間を使用すると、カメラのパンやカメラの揺れによって生成されるモーションブラーを軽減し、画像をより鮮明にすることが理解できる。また、入力遅延が発生するという望ましくない副作用がある可能性はあるが、よりリアルな感覚を得るためにビデオゲームソフトウェアの見かけのフレームレートを上げるために使用することもできる。この「ビデオルック」は、VidFIRE(Video Field Interpolation Restoration Effect)技術によって意図的に作成されたものであり、フィルムのテレレコーディングとしてのみ存続するアーカイブテレビ番組を復元する。VidFIREは、現在ではテレレコーディングを基本とする形式でしか存在しないテレビカメラで撮影された映像を動画のような動きに復元することを目的とした復元技術である。人為的に高いフレームレートを実現する場合と自然に高いフレームレートを実現する場合と(補間による場合とカメラ内での場合と)の主な違いは、後者は前述のアーティファクトの影響を受けず、より正確な(または「実際に近い」)画像データを含み、フレームがリアルタイムで生成されないため、より多くのストレージスペースと帯域幅を必要とすることである。
【0010】
モーション補償は、カメラおよび/または映像内の物体の動きを考慮することによって、映像内のフレームを予測して前のフレームおよび/または将来のフレームを与えるために使用されるアルゴリズム技術である。これは、映像圧縮のための映像データのエンコードにおいて、例えばMPEG-2ファイルの生成において採用されている。モーション補償は、参照画像から現在の画像への変換の観点から画像を表す。参照画像は時間的に過去のもの前であってもよいし、未来のものであってもよい。過去に送信/蓄積された画像から画像を正確に合成することができれば、圧縮効率を向上させることができる。
【0011】
モーション補償は、動画の多くのフレームにおいて、あるフレームと別のフレームの唯一の相違は、カメラが動いたかまたはフレーム内の物体が動いたかのどちらかの結果であることが多いという事実を利用するものである。これは、動画ファイルを参照すると、1つのフレームを表す情報の大部分が次のフレームで使用される情報と同じになることを意味する。
【0012】
モーション補償を使用すると、動画ストリームには、いくつかの完全な(参照)フレームが含まれ、その間に記憶される情報は、前のフレームを次のフレームに変換するために必要な情報のみになる。
【0013】
フレームブレンドは、当業者に知られている別の技術とすることができる。一部の映像では、より滑らかな動きを生成するためにオプティカルフローを使用しても、望ましい結果が得られない場合がある。このような状況では、他の時間補間オプションの1つであるフレームサンプリングまたはフレームブレンドを使用できる。フレームサンプリングは、所望の速度に到達するまで必要に応じてフレームを繰り返したり削除したりする。フレームブレンドはフレームを繰り返し、また、必要に応じてフレーム間をブレンドして動きを滑らかにする。
【0014】
上述の装置はそれぞれの特定の目的および要件を満たすが、上述の特許は録画の進行中に録画において特殊効果を生成することを可能にするリアルタイム動画特殊効果システムおよび方法を記載していない。
【発明の概要】
【課題を解決するための手段】
【0015】
従来技術に現在存在する既知のタイプの動画速度レート変更システムおよび方法に固有の前述の欠点に鑑みて、本技術は新規のリアルタイム動画特殊効果システムおよび方法を提供し、従来技術の前述の欠点および難点のうちの1つまたは複数を克服する。このように、本技術の目的は以下により詳細に説明するように、上述の従来技術の全ての利点と、単独でまたはそれらの任意の組み合わせで、従来技術によって予想されず、明らかにされず、示唆されず、または暗示されさえしないリアルタイム動画特殊効果システム及び方法をもたらす多くの新規の特徴を有する新規で斬新なリアルタイム動画特殊効果システム及び方法を提供することである。
【0016】
本発明の一態様によれば、ライブ動画録画データの特殊効果操作をリアルタイムで制御する動画撮影および表示システムが提供される。このシステムは、実世界のシーンの動画を撮影するように構成されたカメラと、少なくとも一つのメモリと、カメラ、グラフィカルユーザインターフェース及び少なくとも一つのメモリに動作可能に接続された、または接続可能な少なくとも1つの処理ユニットと、を備え。少なくとも一つの処理ユニットは、グラフィカルユーザインターフェース上で、撮影されている動画を通常速度で再生する、及びグラフィカルユーザインターフェースにより受信したユーザ入力に応答して、撮影されている動画再生速度を通常再生速度から修正された再生速度に変更するように構成される。
【0017】
別の態様によれば、ライブ動画撮影データの特殊効果操作をリアルタイムで制御する方法が提供される。この方法は、実世界のシーンの動画をカメラで撮影し、グラフィカルユーザインターフェース上で撮影されている動画を通常速で再生し、録画中にリアルタイムでグラフィカルユーザインターフェースによって受信されたユーザインターフェース入力に応答して、撮影されている動画のグラフィカルユーザインターフェース上での再生速度を、ライブ録画中にグラフィカルユーザ装置に表示される通常再生速度から録音再生中にグラフィカルユーザ装置に表示される修正された再生速度に変更すること、を含む。
【0018】
本技術の別の態様によれば、本技術は、本質的に、ライブ動画録画データの特殊効果動作をリアルタイムで制御するための動画録画システムであることができる。動画録画システムは、未処理の動画データをネイティブ速度で提供するように構成される、または構成することができる少なくとも一つのカメラと、少なくとも一つのメモリと、カメラ及びメモリと動作可能に通信する少なくとも一つ処理ユニットと、を備える。未処理の動画データは、少なくとも一部がカメラによってリアルタイムで撮影された画像に対応することができる。処理ユニットは、カメラから未処理の動画データをリアルタイム受信するよう構成される、または構成することができる。その後、入力が未処理の動画データのネイティブ速度レートの変更に関連付けられているかどうかを判断し、関連付けられている場合は、カメラから未処理の動画データを受信しながら、リアルタイムで、未処理の動画データの少なくとも1つのフレームを修正して、ネイティブ速度レートとは異なる1つ以上の修正された速度レートの修正された動画データを作成する。そして、少なくとも一つの出力動画録画データをメモリに書き込む。ここで、出力動画録画データは、ネイティブ速度レートでの未処理の動画データ、修正された速度レートでの修正された動画データ、および未処理の動画データと修正された動画データとの組み合わせのうちの1つである。
【0019】
本技術の別の態様によれば、本技術は、ライブ動画録画データの特殊効果操作をリアルタイムで制御するクライアント側電子システムであることができる。このシステムは、ソフトウェア命令を格納および実行するようにそれぞれ構成されたメモリおよびプロセッサを含むことができる。命令は、リアルタイムでカメラによって撮影された画像に少なくとも部分的に対応することができる未処理の動画データをネイティブ速度レートでカメラから取得するリクエストを受信するように構成される、または構成可能な未処理データ受信コンポーネントと、カメラからの未処理の動画データのネイティブ速度レートを少なくとも1つの修正された速度レートに変更するように少なくとも一つのリクエストを受信するように構成される、または構成可能な速度レート決定コンポーネントと、ネイティブ速度レートを変更するリクエストを受信すると、変更される未処理の動画データ内の少なくとも1つのフレームまたはロケーションを識別し、カメラから未処理の動画データを受信しながらリアルタイムでネイティブ速度レートとは異なった修正された速度レートで修正された動画データを作成するようにフレームまたはロケーションを変更するように構成される、または構成可能なフレーム修正コンポーネントと、カメラから未処理の動画データを受信しながらリアルタイムでメモリの一つ及び二次メモリに出力動画録画データを書き込むように構成される、または構成可能な出力動画録画データ書き込みコンポーネントと、で構成され、出力動画録画データは、ネイティブ速度レートでの未処理の動画データ、修正された速度レートでの修正された動画データ、および未処理の動画データと修正された動画データとの組み合わせのうちの1つから選択される。
【0020】
本技術の別の態様によれば、本技術は、ライブ動画録画データの特殊効果操作をリアルタイムで制御する方法であることができる。本方法は、少なくとも一つの処理ユニットによって、カメラによってリアルタイムで撮影された映像に少なくとも部分的に対応する未処理の動画データをネイティブ速度レートで受信し、処理ユニットによって、該処理ユニットに動作可能に関連付けられた少なくとも一つのインターフェースから少なくとも1つの入力を受信することを含む。本方法は、処理ユニットによって、入力が未処理の動画データのネイティブ速度を変更することに関連付けられているかどうかを判定し、関連する場合は、カメラから未処理の動画データを受信しながらリアルタイムで未処理の動画データを修正して、ネイティブ速度レートとは異なる1つまたは複数の修正された速度レートで修正された動画データを作成することを含むことができる。本方法はさらに、処理ユニットによって、出力動画録画データを少なくとも一つのメモリに書き込むことを含むことができ、出力動画録画データは、ネイティブ速度レートでの未処理の動画データ、修正された速度レートでの修正された動画データ、および未処理の動画データと修正された動画データとの組み合わせのうちの1つである。
【0021】
本技術別の態様によれば、本技術は、ライブ動画録画データの特殊効果操作をリアルタイムで制御するシステムであることができる。本システムは、少なくとも一部がカメラによってリアルタイムで撮影された画像に対応する未処理の動画データをネイティブ速度レートで提供するように構成される、または構成することができる少なくとも一つのカメラと、少なくとの一つのメモリユニットと、カメラ及びメモリユニットと動作可能に通信する少なくとも一つの処理ユニットと、を備える。処理ユニットは、カメラから未処理の動画データをリアルタイムで受信し、処理ユニットと動作可能に関連付けられた少なくとも一つのインターフェースから入力を受信するように構成される、又は構成することができる。処理ユニットはさらに、入力が未処理の動画データのネイティブ速度を変更することに関連付けられているかどうかを判定し、関連する場合は、カメラから未処理の動画データを受信しながらリアルタイムで未処理の動画データの少なくとも一つのフレームを修正して、ネイティブ速度レートとは異なる1つまたは複数の修正された速度レートで修正された動画データを作成するように構成される、又は構成することができる。そして、処理ユニットは、出力動画録画データを少なくとも一つのメモリに書き込むように構成される、又は構成することができ、出力動画録画データは、ネイティブ速度レートでの未処理の動画データ、修正された速度レートでの修正された動画データ、および未処理の動画データと修正された動画データとの組み合わせのうちの1つである。
【0022】
本技術のさらに別の態様によれば、本技術はネイティブ速度レートで未処理の動画データを提供するように構成された、または構成可能な少なくとも1つのカメラ、少なくとも1つのメモリユニット、および少なくとも1つのディスプレイと動作可能に通信する処理ユニットと動作可能に通信するインターフェースを含むインターフェースシステムを含むことができ、未処理の動画データは少なくとも一部がカメラによって撮影された画像に対応する。インターフェースは、処理ユニットと通信する少なくとも1つのコンピュータ読み取り可能な記憶媒体、または少なくとも1つのプロセッサを含むコンピュータシステムに関連付けることができる。インターフェースは、カメラから受信した未処理の動画データの所望の速度レートに関連する入力を生成するように構成される、または構成可能な部分を含むグラフィカルユーザインターフェースとすることができる。処理ユニットは、カメラから未処理の動画データを受信しながらリアルタイムで未処理の動画データが修正して未処理の動画データのネイティブ速度とは異なった速度を有する修正された動画データを生成するかどうかを判定するために、入力を使用するように構成される、または構成することができる。インターフェースは、カメラから未処理の動画データを受信しながら、出力動画録画データをリアルタイムで表示するように構成される、または構成することができる。出力動画録画データは、未処理の動画データと修正された動画データとの組み合せを含むように構成される、または構成することができ、未処理の動画データと修正された動画データとの間の遷移が入力に依存する。
【0023】
本技術の他の態様によれば、本技術は、ライブ動画録画データのリアルタイム特殊効果操作を制御するためのコンピュータで実装された方法とすることができる。本方法は、少なくとも1つの処理ユニットによって、処理ユニットに動作可能に関連付けられた少なくとも1つのインターフェースからのユーザ入力によるリクエストで、カメラからネイティブ速度レートで未処理の動画データを受信するステップを含むことができ、未処理の動画データは少なくとも部分的に、リアルタイムでカメラによって撮影された画像に対応する。本方法は、入力が未処理の動画データのネイティブ速度レートを変更することに関連するかどうかを判定することを含むことができ、その場合、カメラから未処理の動画データを受信しながらリアルタイムで未処理の動画データを修正して、ネイティブ速度レートとは異なる1つまたは複数の修正された速度レートを有する修正された動画データを作成することを含むことができる。本方法は、少なくとも1つの出力動画録画データをメモリに書き込むことをさらに含むことができ、出力動画録画データは、ネイティブ速度レートでの未処理の動画データ、修正された速度レートでの修正された動画データ、および未処理の動画データと修正された動画データとの組み合わせのうちの1つである。
【0024】
本技術のいくつかの実施形態では、本方法は、未処理の動画データがカメラからメモリに書き込まれるのを防ぐことを含むことができる。
【0025】
本技術のいくつかの実施形態では、入力はネイティブ速度レートの変更に関連付けられず、未処理の動画データがメモリに書き込まれる。
【0026】
本技術のいくつかの実施形態では、本方法は、修正された速度レートがネイティブ速度レートよりも小さいかどうかを判定することを含むことができ、そうであれば、未処理の動画データを修正することは、未処理の動画データに少なくとも1つの新しいフレームを追加して、修正された動画データを作成することを含む。
【0027】
本技術のいくつかの実施形態では、本方法は、新しいフレームを追加することは、少なくとも1つの未処理フレームをコピーして新しいフレームを作成し、未処理のフレームに隣接する未処理の動画データに新しいフレームを追加すること、を含むことができる。
【0028】
本技術のいくつかの実施形態では、新しいフレームは、それぞれが未処理の動画データからの少なくとも1つの未処理のフレームのコピーである、複数の新しいフレームであることができる。
【0029】
本技術のいくつかの実施形態では、新しいフレームのそれぞれは、未処理のフレームに隣接して、または未処理の動画データの第2の未処理のフレームに隣接して、未処理の動画データに追加されることができる。
【0030】
本技術のいくつかの実施形態では、本方法は、修正された速度レートがネイティブ速度レートよりも大きいかどうかを判定することを含むことができ、そうであれば、未処理の動画データを修正することは、未処理の動画データから少なくとも1つの第1の未処理のフレームを削除して修正された動画データを作成することを含む。
【0031】
本技術のいくつかの実施形態では、本方法は、第1の未処理のフレームを削除することは、除去する第1の未処理のフレームを選択し、未処理の動画データから第1の未処理のフレームを除去して修正された動画データを作成すること、を含むことができる。
【0032】
本技術のいくつかの実施形態では、インターフェースは、ネイティブ速度レートまたは修正された速度レートに関連付けられた入力を生成するように構成する、または構成することができる部分を含むグラフィカルユーザインターフェースであることができ、該インターフェースは、出力動画録画データを表示するように構成またはまたは構成することができる。
【0033】
本技術のいくつかの実施形態では、出力動画録画データは、未処理の動画データと修正された動画データとの組み合わせであり、修正された動画データは、未処理の動画データとサブセットのいずれか一つとの間、またはサブセット間の遷移を伴い、それぞれが入力に依存する速度レートを有する複数のサブセットを含むように構成される、または構成可能である。カメラから未処理の動画データを受信しながら、リアルタイムで出力動画録画データがグラフィカルユーザインターフェースに表示される。
【0034】
もちろん、本技術には、以下に記載され、添付の特許請求の範囲の主題事項を形成する追加の特徴がある。
【図面の簡単な説明】
【0035】
【
図1】本技術の原理に従って構成されたリアルタイム動画特殊効果システムの一実施形態のブロック図である。
【
図2】本技術のリアルタイム録画速度制御方法のブロック図である。
【
図3A】本技術の教示によるネイティブフレームレートの一例を示す一連の動画フレームの描写である。
【
図3B】ネイティブフレームレートの2倍のファストモーション速度に従ったフレームドロップの例を示す一連の動画フレームの描写である。
【
図3C】ネイティブフレームレートの3倍のファストモーション速度に従ったフレームドロップの例を示す一連の動画フレームの描写である。
【
図3D】ネイティブフレームレートの-2倍のスローモーション速度に従ってフレームコピーを使用してフレームを追加する例を示す一連の動画フレームの描写である。
【
図3E】ネイティブフレームレートの-3倍のスローモーション速度に従ってフレームコピーを使用してフレームを追加する例を示す一連の動画フレームの描写である。
【
図3F】ネイティブフレームレートの-2倍のスローモーション速度に従ってフレームブレンドを使用してフレームを追加する例を示す一連の動画フレームの描写である。
【
図3G】ネイティブフレームレートの-3倍のスローモーション速度によるフレームブレンドを使用してフレームを追加する例を示す一連の動画フレームの描写である。
【
図4】本技術の実施形態を実施するために使用され得る電子計算装置に組み込まれた例示的な集積回路チップを示す図である。
【
図5】本発明の実施形態を実施するために使用され得る例示的な電子計算装置を示す図である。
【
図6】利用可能なサブルーチンを含むプロセス全体の一例を示すフローチャートである。
【
図7】高速化および/または低速化の特殊効果をリアルタイムで利用するべきかどうかを最初に判定するメインプロセスの一例を示すフローチャートである。
【
図8】本技術に関連する書き込み動画ストリームサブルーチンの一例を示すフローチャートである。
【
図9】本技術に係る特殊効果適用サブルーチンの一例を示すフローチャートである。
【
図10】本技術に係る高速化サブルーチンの一例を示すフローチャートである。
【
図11】本技術に関連するファストモーションをシミュレートするためのフレームドロップサブルーチンの一例を示すフローチャートである。
【
図12】本技術に関連する高度なスローモーションサブルーチンの一例を示すフローチャートである。
【
図13】本技術に係るスローモーションをシミュレーションするためのフレーム追加サブルーチンの一例を示すフローチャートである。
【
図14】本技術に関連するスローモーションをシミュレートするための可変高録画fpsサブルーチン(120fps)の一例を示すフローチャートである。
【
図15】本技術に関連する一定のフレームレートのスローモーションサブルーチンの一例を示すフローチャートである。
【
図16】本技術に関連するスローモーションをシミュレートするための一定の高録画fpsサブルーチン(60fps)の一例を示すフローチャートである。
【
図17A】
本技術に関連するスローモーションをシミュレートするための一定の高
録画fpsサブルーチン(120fps)の一例を示すフローチャートである。
【
図17B】
本技術に関連するスローモーションをシミュレートするための一定の高
録画fpsサブルーチン(120fps)の一例を示すフローチャートである。
【
図18A】
本技術に関連するスローモーションをシミュレートするための一定の高
録画fpsサブルーチン(240fps)の一例を示すフローチャートである。
【
図18B】
本技術に関連するスローモーションをシミュレートするための一定の高
録画fpsサブルーチン(240fps)の一例を示すフローチャートである。
【
図19A】
本技術に関連するエクストリームスローモーションサブルーチンの一例
を示すフローチャートである。
【
図19B】
本技術に関連するエクストリームスローモーションサブルーチンの一例
を示すフローチャートである。
【
図20】本技術に関連するスローモーションおよびファストモーションをシミュレートするための時間伸長および圧縮サブルーチンの一例のフローチャートである。
【
図21】
図20の時間圧縮の例を示す、秒単位の時間あたりの一連の関連する録画および再生動画セグメントの描写である。
【
図22】本技術に関連するスローモーション及びファストモーションをシミュレートするための可変再生レートを用いた録画の一例のフローチャートである。
【
図23】本技術に関連するスローモーションおよびファストモーションをシミュレートするために、
図22のアルゴリズムを使用するアプリケーションによって作成された動画ファイルを再生する再生装置の一例のフローチャートである。
【
図24】本技術に関連するユーザインターフェースを利用するユーザによる可能な処理の一例を示すフローチャートである。
【
図25】本技術のインターフェースシステムのサンプルグラフィカルユーザインターフェース(GUI)スクリーンショットである。
【発明を実施するための形態】
【0036】
本技術は以下に記載される詳細な説明を考慮することによってより良く理解され、上記以外の目的が明らかになるであろう。そのような説明は、添付の図面を参照しており、ここで、二点鎖線は、環境構造体を示す、請求された本技術の一部を形成しない。
【0037】
同一の参照番号は、さまざまな図全体で同じ部分を指す。
【0038】
以下の説明では、本技術の完全な理解を提供するために、限定ではなく説明を目的として、特定の実施形態、手順、技術などの具体的な詳細が記載される。しかしながら、本技術がこれらの特定の詳細から逸脱した他の実施形態において実施されてもよいことは、当業者には明らかである。
【0039】
動画録画は、動きを生み出すための速度レートで表示される一連のフレームまたは画像のグループから構成されることが知られている。これらの画像または動画のフレームは、デジタルフレームデータとして特徴付けることができ、デジタルフレームデータは、動画の再生時にバッファすることができる。フレームレート(フレーム/秒またはfpsで表される)は、これらの連続するフレームがディスプレイ上に表示される頻度(レート)である。これは、フィルム及びビデオカメラ、コンピュータグラフィックス、及びモーションキャプチャシステムに等しく適用される。フレームレートは、フレーム周波数とも呼ばれ、ヘルツで表される。
【0040】
動画のリアルタイム録画および/または再生は、通常30fpsのレートで実行される。いくつかの状況では、動画の再生を高速化または低速化することが望まれる。これは通常、表示装置等の既存のコンポーネントとの互換性を維持するために、録画及び再生のフレーム/秒を毎秒30fpsに維持しながら行われる。例えば、視聴者が、30fpsを保ったまま、標準のリアルタイム再生速度から一定の割合で動画の再生を高速化したい場合、特定のフレーム数の情報またはデータを、30フレームに分割された時間で再生する必要がある。これを実現するためのスキームは、録画された動画から、所定のフレーム数毎に1フレームをスキップして、動画の適切なフレーム数を30fpsで表示するようにすることである。これらの既知のシステムおよび方法は、30fpsの録画からフレームをスキップする録画後処理として提供されることに留意されたい。録音は最初は、30fpsでリアルタイムにメモリに書き込まれ、特殊効果はない。
【0041】
本技術は、特にアマチュア映画制作者にとって、時間および資源コストがかかる可能性がある時間変更の特殊効果を挿入するために「ポストプロダクション編集(post production editing)」を必要とするという問題を解決する。
【0042】
さらに、本技術は、モーション録画速度をファストモーションまたはスローモーションのどちらかにプリセットしておくと、ユーザが録画処理中にリアルタイムでモーション録画速度を調整できないという問題を解決する。
【0043】
さらに、本技術は、モーション録画速度をプリセットした場合、ユーザが録画中にリアルタイムで連続的にモーション録画速度を調整することができず、ファストモーションからスローモーションに変化させることができないという問題を解決する。
【0044】
本技術は、すべての装置のハードウェアサポートを必要とする問題を軽減し、解決する。ソフトウェアアルゴリズムを使用してスローモーションをシミュレートすることにより、装置に依存せず、結果として得られるファイルは、ハードウェアでサポートされているスローモーション動画よりもはるかに小さい。
【0045】
上述の装置は、それぞれの特定の目的および要件を満たすが、上述の装置またはシステムは、録画中の動画録画に特殊効果を生成することを可能にするリアルタイム動画特殊効果システムおよび方法を記載していない。本技術はさらに、カメラによって提供されるフレームストリップにリアルタイムでフレームを追加または削除することによって、従来技術に関連する1つまたは複数の欠点を克服する。
【0046】
さらに、録画中に、ユーザが録画速度や特殊効果の適用時間をリアルタイムに変更できる既知のインターフェースはない。さらに、シーンは比較的固定されていなければならず、カメラがパンしたり、アクションを追跡したりしない。この既知のシステムに関連するアルゴリズムは、カメラがシーンに着実に固定されている間、モーションセンサーを使用し、シーンの残りの部分が固定されたまま、被写体がシーンを横断しなければならない。
【0047】
本技術は、録画または保存の前に、リアルタイムでカメラからのフレームを修正する電子装置に関連付けられたユーザインターフェースを利用することができる。
【0048】
録画中に動画録画に特殊効果を生み出すために使用することができる、新規で斬新なリアルタイム動画特殊効果システムおよび方法が必要とされている。この点に関して、本技術は、この必要性を実質的に満たすものである。この点において、本技術によるリアルタイム動画特殊効果システム及び方法は、従来技術の従来の概念及び設計から実質的に逸脱しており、そうすることで、録画中の動画録画において特殊効果を生み出すことを主な目的として開発された装置が提供される。
【0049】
本技術のユーザは、サポートされているオペレーティングシステム上で実行される装置のアプリにプログラムされたユーザインターフェース、および他の組み込み装置を使用することによって、ユーザが制御可能なの可変時間変更、いわゆるファストモーションまたはスローモーションの特殊効果を含む動画を「リアルタイム」で作成することができる。作成された動画はワンショットで撮影され、録画中に全ての時間変更コマンドがリアルタイムで入力される。
【0050】
例示的な目的のために、本技術は30fpsに設定された動画フレームレートを利用することができ、その結果、録画中は30フレーム/秒となる。
【0051】
本技術のいくつかの実施形態では、ユーザが本技術の早送りオプションを利用することができ、その結果、設定された早送りレート(1倍、2倍、3倍など)に従ってフレームがドロップされる。ユーザが2倍速の早送り動画を設定した場合、本技術ではライターで第1フレームを追加し、第2フレームをスキップし、次いで第3フレームを書き込み、次いで第4フレームをスキップするといったことができる。その結果、録画された動画は30fpsを維持しながら、リアルタイムで予め設定された早送り速度になる。
【0052】
いくつかの実施形態では、ユーザは本技術のスローモーションオプションを利用することができる。その結果、同じフレームを2回追加し、このフレームを繰り返すことにより、録画される動画が最終的にスローモーションになる。例えば、ユーザが2倍のスロー動画を設定した場合、本技術はライターで第1フレームを追加し、同じフレームを次の時間/フレームスロットに追加することができる。その結果、録画された動画は30fpsを維持しながら、リアルタイムで予め設定されたスローモーション速度になる。
【0053】
本技術では、ユーザはカスタムユーザインターフェースを使用して録画中に録画装置(および任意の他の録画装置)の録画速度および他のカメラ設定を制御することができ、本技術アルゴリズムがコマンドを処理した直後にユーザが動画を再生する場合に、シーンの再生速度が、録画中のコマンドに対応する。本技術は、録画装置のフレームレートを上げることなく、ソフトウェアシミュレーションによりこれを達成し、装置に依存せずあらゆるプラットフォームで動作する。
【0054】
本技術のさらなる態様は、録画中に録画装置のフレームレートを上げることが可能性である。これには、サポートされているハードウェアの数が限られているアプリケーションプログラミングインターフェース(API)へのアクセスが必要であり、サポートされているデバイスの数を制限する業界標準APIは存在しない。ディスプレイには、現在の時間録画速度が、通常速度から3倍の速度、または-3倍の速度(4倍、5倍、またはそれ以上)で表示される。ユーザは、インターフェースを利用して録画速度を制御することができる。
【0055】
本技術には、使いやすいカスタムユーザインターフェースなど、多くの利点があり、録画中にユーザがリアルタイムで時間変更の特殊効果を動画に追加することができる。これは、既存の技術と比較して、ユーザが、特殊効果(可変のファストモーションおよびスローモーション録画速度)を有する動画をその動画の録画中に作成することができるという利点がある。これにより、このような特殊効果を有する動画を制作するための別途の動画編集ソフトが要求されることがなく、または動画編集者に同等の動画を編集・制作してもらう必要がないため、同時間とコストが削減される。ユーザは録画が完了した後すぐに特殊効果を加えて作成された動画を見ることができ、また、装置が特殊効果を追加する処理を行い、短い処理時間で特殊効果が実装された新しい動画を自動的に生成することができる。
【0056】
ユーザが手動で特殊効果をリアルタイムで制御するもう一つの利点は、ユーザがシーンの動きに合わせてパンすることができ、アクションのピークの瞬間を捉え、適切なタイミングで必要なだけ連続的に変化するスロー/ファストモーションを使用し、ユーザが録画している間に通常速度に戻すことができることである。
【0057】
さらに別の利点は、本技術が、スローモーションまたはファストモーションの特殊効果を実現するためにハードウェアに依存しないことである。ソフトウェアのアルゴリズムは、スローモーションまたはファストモーションの動きをシミュレートする。
【0058】
さらに別の利点は、手動のユーザインターフェースでは、AIソフトウェアが特殊効果を適用するための「アクション」を判定するために、静止シーンを指している間、カメラを静止したままにする必要がないことである。
【0059】
別の利点は、本技術が、リモートカメラフィード、ジョイスティック、網膜スキャナ、ボディスーツコントローラ、ディスプレイ上の被写体ジェスチャ、および触覚ユーザインターフェースからの入力を受け入れることができることであるが、これらに限定されない。
【0060】
いくつかの実施形態では、本技術を適用して、既存の動画に時間修正の特殊効果を追加することもできる。ユーザはスマートフォンやタブレットのような互換性のあるデバイスでおなじみの使い慣れた使いやすいものを使用して、再生中の時間変数を制御し、再生時間値の値を、この場合には-3倍から4倍に制御し、修正することができる。デジタル処理技術が十分に進歩して、動画で撮影されたフレーム間のデータおよび画像を補間できるようになれば、時間修正の要素に追加の機能があることが理解できる。
【0061】
ユーザが4倍側にスライドすると、録画速度は、通常よりも速く、最大で4倍速く再生される。ユーザが-3倍側にスライドすると、録画速度は、通常よりも遅く、最大で3倍遅く再生される。
【0062】
いくつかの実施形態では、未処理の動画データは、ストリーミング動画データ、動画、音声、深度、オブジェクト識別、ヒストグラム、およびそれらの組み合わせなどのデータを含むことができるが、これらに限定されない。
【0063】
いくつかの態様では、処理ユニットは、本技術が未処理の動画データを傍受することができるように、未処理の動画データがカメラからメモリユニットに書き込まれることを防ぐように構成される、または構成することができる。
【0064】
いくつかの実施形態では、入力は、修正された速度レートが基づく1つまたは複数の所望の速度レート値であることができる。ここで、修正された速度レートは、ネイティブ速度レートよりも小さい速度レートまたはネイティブ速度レートよりも大きい速度レートのうちの1つであることができる。
【0065】
修正された速度レートがネイティブ速度レート未満である場合、処理ユニットは、未処理の動画データに少なくとも1つのフレームを追加して修正された動画データを作成するように構成される、または構成することができる。
【0066】
修正された速度レートがネイティブ速度レートよりも大きい場合、処理ユニットは、未処理の動画データから少なくとも1つのフレームを削除して修正された動画データを作成するように構成される、または構成することができる。
【0067】
入力がネイティブスピードを変更するリクエストではない場合、処理ユニットは、未処理の動画データからすべてのフレームを保持し、未処理の動画データをメモリに書き込むように構成される、または構成することができる。
【0068】
いくつかの実施形態では、インターフェースは、ネイティブ速度レートまたは修正された速度レートに関連する入力を生成するように構成される、または構成可能な部分を含むグラフィカルユーザインターフェースであることができる。グラフィカルユーザインターフェースは、カメラから未処理の動画データを受信しながら、出力動画録画データをリアルタイムで表示するように構成される、または構成可能とすることができる。出力動画録画データは、未処理の動画データと修正された動画データとの組み合わせを含み、未処理の動画データと修正された動画データとの間の遷移は入力に依存するように構成される、または構成することができる。インターフェースは、ジョイスティックであってもよく、またはジョイスティックを利用してもよいことが理解することができる。
【0069】
さらに別の態様では、インターフェースは、コンピュータシステムの処理ユニットまたはプロセッサによって実行されたときに、カメラから未処理の動画データを受信しながら、カメラからの未処理の動画データを処理ユニットおよびメモリユニットにリアルタイムで送り、処理ユニットからメモリユニットに未処理の動画データを書き込むか、または少なくとも1つのアルゴリズムを未処理の動画データに適用させて、修正された動画データを作成し、処理ユニットから修正された動画データをメモリユニットに書き込む命令を記憶した少なくとも1つのコンピュータ読み取り可能な記憶媒体に動作可能に関連付けることができる。
【0070】
本技術のさらに別の態様によれば、本技術はカメラから未処理の動画データを受信しながら、1つまたは複数の速度レートでリアルタイムに動画を録画する方法とすることができる。本方法は、少なくとも1つの処理ユニットによって、カメラからの未処理の動画データに少なくとも部分的に対応する画像をキャプチャしながら、リアルタイムでカメラから未処理の動画データをネイティブ速度で受信し、処理ユニットに動作可能に関連付けられた少なくとも1つのインターフェースから入力を受信することを含むことができる。本方法は、処理ユニットによって、入力が未処理の動画データのネイティブ速度レートを変更することに関連付けられているかどうかを判定することを含むことができ、そうであれば、カメラから未処理の動画データを受信しながら、リアルタイムで未処理の動画データを修正して、ネイティブ速度レートとは異なった1つまたは複数の修正された速度レートで修正された動画データを作成することを含むことができる。本方法は、処理ユニットによって、出力動画録画データを少なくとも1つのメモリに書き込むことをさらに含むことができ、出力動画録画データは、ネイティブ速度レートでの未処理の動画データ、修正された速度レートでの修正された動画データ、および未処理の動画データと修正された動画データとの組み合わせのうちの1つである。
【0071】
本技術のいくつかの実施形態は、修正された速度レートがネイティブ速度レート未満であるかどうかを判定することを含むことができ、そうであれば、未処理の動画データを修正することは、少なくとも1つの新しいフレームを未処理の動画データに追加して修正された動画データを作成することを含むことができる。
【0072】
いくつかの実施形態では、本方法は、少なくとも1つの未処理のフレームをコピーすることによって新しいフレームを追加して新しいフレームを作成することと、未処理のフレームに隣接する未処理の動画データに新しいフレームを追加することと、を含むことができる。
【0073】
いくつかの実施形態では、追加される新しいフレームは、それぞれが未処理の動画データからの少なくとも1つの未処理のフレームのコピーである複数の新しいフレームとすることができ、新しいフレームは、コピーされた未処理のフレームに隣接する未処理の動画データに追加される。
【0074】
いくつかの実施形態では、本方法は、新しいフレームを作成するために少なくとも2つの未処理のフレームをフレームブレンドすることによって新しいフレームを追加することと、2つの未処理のフレーム間の未処理の動画データに新しいフレームを追加することと、を含むことができる。
【0075】
いくつかの実施形態では、追加される新しいフレームは、それぞれが未処理の動画データからの少なくとも2つの未処理のフレームのブレンドである複数の新しいフレームとすることができ、新しいフレームはブレンドされた未処理のフレーム間の未処理の動画データに追加される。
【0076】
いくつかの実施形態では、新しいフレームの各々は、未処理のフレームに隣接する、または未処理の動画データの第2の未処理のフレームに隣接する未処理の動画データに追加することができる。
【0077】
いくつかの実施形態は、修正された速度レートがネイティブ速度レートより大きいかどうかを判定するステップを含むことができ、大きい場合、未処理の動画データを修正することは、未処理の動画データから少なくとも1つの第1の未処理のフレームを削除して、修正された動画データを作成することを含むことができる。
【0078】
いくつかの実施形態では、第1の未処理のフレームを削除することは、削除されるべき第1の未処理のフレームを選択することと、次いで未処理の動画データから第1の未処理のフレームを削除して、修正されたフレームを作成することと、を含むことができる。
【0079】
いくつかの実施形態では、インターフェースは、ネイティブ速度レートまたは修正された速度レートに関連する入力を生成するように構成される、または構成可能な部分を含むグラフィカルユーザインターフェースであってもよく、インターフェースは出力動画録画データを表示するように構成される、または構成することができる。
【0080】
いくつかの実施形態は、出力動画録画データが未処理の動画データと修正された動画データとの組み合わせであることを含むことができる。修正された動画データは、それぞれが入力に依存する速度レートを有する複数のサブセットを含むように構成される、または構成可能である。未処理の動画データとサブセットのいずれか一つとの間、またはサブセット間の遷移が入力に依存する場合、カメラから未処理の動画データを受信しながら、出力動画録画データがグラフィカルユーザインターフェースにリアルタイムで表示される。
【0081】
いくつかの実施形態では、本技術は、一定の高録画fpsでのエクストリームスローモーションサブルーチンを含むことができる。このサブルーチンは、変更されていない動画ストリームを通過させることにより、または各フレームのコピーを所定の回数だけ作成することによって、-8倍以上のスローモーション速度範囲に利用することができる。
【0082】
いくつかの実施形態では、本技術は、録画停止後の動画処理中に再生時間を高速化または低速化することによってスローモーションおよびファストモーションのためのアルゴリズムを提供するセグメント時間圧縮および伸長サブルーチンを含むことができる。このサブルーチンは、デバイスの録画および/または再生fpsを設定し、セグメント再生fpsおよび録画fpsを部分的に利用するアルゴリズムを利用して、動画セグメント再生fpsを録画fpsと等しく設定することができる。
【0083】
いくつかの実施形態では、本技術は、録画中に再生フレームレートを高速化または低速化することによって、スローモーションおよびファストモーションのためのアルゴリズムを提供する可変再生速度録画サブルーチンを含むことができる。このアルゴリズムは、動画のメタデータにファスト/スローモーションコマンドが埋め込まれた通常の動画を生成することができる。
【0084】
いくつかの実施形態では、本技術は、動画再生中に再生フレームレートを高速化または低速化することによって、スローモーションおよびファストモーションの特殊効果を有する動画ファイルを再生するためのアルゴリズムを提供する可変再生速度再生サブルーチンを含むことができる。
【0085】
したがって、以下の本発明の詳細な説明をより良く理解するため、当技術分野への本貢献をより良く理解するため、本技術の特徴をかなり広く概説した。
【0086】
本技術の多数の目的、特徴、および利点は、本技術の以下の詳細な説明を読めば当業者には容易に明らかになるが、それにもかかわらず、添付の図面と併せて解釈された場合の本技術の実施形態は例示的である。
【0087】
このように、当業者は、本技術のいくつかの目的を実行するための他の構造体、方法、およびシステムを設計するための基礎として、本発明の基礎をなす概念が容易に利用することができることを理解するであろう。したがって、特許請求の範囲は、本技術の精神および範囲から逸脱しない限り、そのような同等の構成を含むものとみなされる。
【0088】
本技術のさらに別の目的は、録画中の動画録画に特殊効果を生成するためのリアルタイム動画特殊効果システムおよび方法を提供することである。これにより、ユーザは、カメラから動画を取得しながら、録画がリアルタイムで進行する前及び進行している間に、動画の速度レートを制御することができる。
【0089】
これらは、本技術の他の目的と共に、本技術を特徴付ける新規性のあるさまざまな特徴と共に、本開示に添付され、その一部を形成する特許請求の範囲において特に指摘される。本技術、その操作上の利点、およびその使用によって達成される特定の目的をより良く理解するために、本技術の実施形態が例示されている添付の図面および説明事項を参照されたい。本明細書では、本技術の複数の目的が特定されているが、特許請求される本技術は、特定された目的のほとんどまたはすべてを満たすことに限定されず、本技術のいくつかの実施形態はそのような目的を1つのみを満たすか、または全く満たしていない可能性があることが理解される。
【0090】
ここで、図面、特に
図1~
図25を参照すると、本技術のリアルタイム動画特殊効果システム及び方法のいくつかの実施形態が示され、全体的に参照番号10で示されている。一般的な概要として、本システムは、実世界のシーンまたはビデオゲームを含む任意の動画リモートビデオフィードの動画を撮影するように構成されたカメラと、グラフィカルユーザインターフェースと、少なくとも1つのメモリと、カメラ、グラフィカルユーザインターフェース及び少なくとも1つのメモリに動作可能に接続または接続可能な少なくとも1つの処理ユニットと、を含む。少なくとも1つの処理ユニットは、グラフィカルユーザインターフェース上で、撮影されている動画を通常速度で再生する、およびグラフィカルユーザインターフェースによって受信されたユーザ入力に応じて、撮影されている動画のグラフィカルインターフェース上での動画再生速度を通常再生速度から修正された再生速度に変更するように構成される。
【0091】
ここでいくつかの実施形態をより詳細に参照すると、録画中に動画録画に特殊効果を生成するための本技術の新規で斬新なリアルタイム動画特殊効果システムおよび方法10が示され、
図1を参照して説明される。より詳細には、リアルタイム動画特殊効果システムおよび方法10は、カメラ12と、画像プロセッサまたは処理ユニット14と、処理ユニットに関連付けられたユーザインターフェース30と、記憶装置またはメモリユニット18と、表示ユニット20とを含むことができる。少なくとも1つのRAMメモリおよび/または少なくとも1つの不揮発性長期メモリが、処理ユニット14に動作可能に接続される、または接続可能である。カメラ12は、画像および/または動画を撮影することができる任意の装置とすることができ、マイク16と関連付けられるか、または一体化することができることを理解されたい。画像処理ユニット14は、カメラ12、マイク16、メモリユニット18および/または表示ユニット20と動作可能に通信する。画像処理ユニット14は、カメラ12および/またはマイク16からの未処理の動画データを傍受し、少なくとも1つのアルゴリズムに従って未処理の動画データを可能な限りリアルタイムで処理し、次いで、出力/最終的な動画録画データをメモリユニット18に記録し、および/または出力/最終動画録画データを表示ユニット20に表示する。
【0092】
システム10は、1つまたは複数のビデオカメラ12、1つまたは複数の表示装置20、および1つまたは複数の集積回路またはプロセッサを有する電子装置の完全な動画システムとして構成される、または構成可能であることができることを理解されたい。代替的に、画像処理ユニット14は、電子装置に組み込まれたモジュールまたは集積回路チップとして、または電子装置の構成要素と共に構成される、または構成可能であることができることを理解することができる。さらに代替として、システム10は、グラフィック処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、アクティブサーバページ(ASP)、中央処理ユニット(CPU)、加速処理ユニット(APU)、特定用途向け集積回路(ASIC)などの動画データ処理装置として構成される、または構成することができるが、これらに限定されない。さらに、代替として、システム10は、電子装置またはカメラ上で実行される、または制御するオペレーティングシステムまたはアプリケーションの一部として、ソフトウェアまたはプログラミングコードとして構成される、または構成可能であることができる。
【0093】
カメラ12、マイク16及び表示ユニット20を含む電子装置は、スマートフォン、スマートウォッチ、タブレット、ノートパソコン、デスクトップコンピュータ、ラップトップ、DVDプレーヤ、テレビデジタルカメラ(ポイント及びシュート、一眼レフ、ビデオカメラ、ハイエンドオーディオ/ビジュアルギア)、アイウェア、ドローン、ジンバル及び他のスタビライザ、セルフィースティック、閉回路動画モニタリングシステム、車用ダッシュカム、内視鏡、顕微鏡、望遠鏡、カメラおよび/またはディスプレイ埋め込み回路、装着物、モノのインターネット(IoT)等であってもよいが、これらに限定されない。
【0094】
図2を参照すると、処理ユニット14は、要求された録画速度のユーザ選択の入力を受信するように構成される、または構成することができる。カメラ12からの未処理の動画データは、画像処理ユニット14に転送することができ、そこで、プログラムおよび/またはアルゴリズムは、カメラ12からの未処理の動画データに含まれる未処理のフレームを修正または保持する。データストリーム内の未処理のフレームは、画像処理ユニット14によってリアルタイムで修正または保持され、その後、メモリユニット18および/または表示ユニット20に渡される。
【0095】
フレーム追加、フレームブレンド、フレームドロップ14を用いた画像処理ユニットの動作例を
図3A~
図3Gに示す。作動時または作動中に、画像処理ユニット14は、表示ユニット20による適切な提示のためにネイティブフレームレートで一連のフレーム#1~#nを含む、カメラ12からの未処理の動画データ22を傍受する。例示的な目的のために、
図3Aに示されるフレームレートは、30fpsであることができる。画像処理ユニット14は、未処理のフレーム22を受信し、次いで、画像処理ユニット14によって受信された1つまたは複数の入力信号に依存して未処理のフレームを修正または保持することができる。画像処理ユニット14が、フレーム速度レートの調節を要求する入力信号を受信しない場合、
図3Aに最も良く示されるように、未処理の動画データ22に含まれる全ての未処理のフレームは、電子装置のメモリユニットのような他のコンポーネントに渡される。
【0096】
いくつかの実施形態では、画像処理ユニット14が、ネイティブフレームレートの2倍の高速化または早送り表示を表すファストモーション録画操作に関連付けられた特殊効果入力信号を受信する場合、画像処理ユニット14は、未処理の動画データ22を適切に修正する。これを受けて、未処理のフレーム22は
図3Bに最も良く示されるように、2番目のフレームごとにドロップされるアルゴリズムを用いて処理される。未処理のフレーム#1はライターに追加することができ、未処理のフレーム#2はスキップ/ドロップすることができ、次に、未処理のフレーム#3は書き込むことができ、次に、未処理のフレーム#4はスキップ/ドロップされるというように、修正または出力動画録画データ24が2倍のファストモーション速度で生成されるまで、同様に処理される。この処理はリアルタイムで行われ、ファストモーション出力動画は、未処理の動画データ22の代わりに録画され、および/またはリアルタイムで表示される。
【0097】
いくつかの実施形態では、画像処理ユニット14が、ネイティブフレームレートの3倍の高速化または早送り表示を表すファストモーション録画操作に関連付けられた特殊効果入力信号を受信する場合、画像処理ユニット14は、未処理の動画データ22を適切に修正する。これを受けて、未処理のフレーム22は、
図3Cに最も良く示されるように、2番目及び3番目のフレームごとにドロップされるアルゴリズムを用いて処理される。未処理のフレーム#1はライターに追加することができ、未処理のフレーム#2および#3はスキップ/ドロップすることができ、次に未処理のフレーム#4は書き込むことができ、次に未処理のフレーム#5および#6はスキップ/ドロップすることができ、次に未処理のフレーム#7は書き込むことができというように、修正または出力録画データ24が3倍のファストモーション速度で生成されるまで、同様に処理される。この処理はリアルタイムで行われ、ファストモーション出力動画は、未処理の動画データ22の代わりに録画され、および/またはリアルタイムで表示される。
【0098】
例えば、画像処理ユニット14が、スローモーション録画操作に関連付けられた特殊効果入力信号を受信する場合、これはネイティブフレームレートの-2倍での低速化またはスローモーションを表す。これを受けて、
図3Dに最もよく示されるように、未処理のフレーム22は、すべてのフレームが複製/反復されるアルゴリズムを用いて処理される。未処理のフレーム#1はライターに追加することができ、次に未処理のフレーム#1が複製されて書き込まれ、次に未処理のフレーム#2が書き込まれ、次に未処理のフレーム#2が複製されて書き込まれ、次に未処理のフレーム#3が書き込まれ、次に未処理のフレーム#3が複製されて書き込まれるというように、修正または出力録画データ24が-2倍のスローモーション速度で生成されるまで、同様に処理される。この処理はリアルタイムで行われ、スローモーション出力動画は、未処理の動画データ22の代わりに録画され、および/またはリアルタイムで、あるいは録画が停止されて録画後アルゴリズムがその間に入力されたコマンドの処理を完了した直後に表示される。
【0099】
いくつかの実施形態では、画像処理ユニット14が、ネイティブフレームレートの-3倍での低速化またはスローモーションを表す、スローモーション録画操作に関連付けられた特殊効果入力信号を受信する場合、画像処理ユニット14は未処理の動画データ22を適切に修正する。その際、
図3Eに最も良く示されるように、未処理のフレームは、各フレームが少なくとも2回複製/反復されるアルゴリズムを用いて処理される。未処理のフレーム#1はライターに追加することができ、次に未処理のフレーム#1が2回複製されてそれぞれが書き込まれ、次に未処理のフレーム#2が書き込まれ、次に未処理のフレーム#2が2回複製されてそれぞれが書き込まれ、次に未処理のフレーム#3が書き込まれ、次に未処理のフレーム#3が2回複製されてそれぞれ書き込まれるというように、修正または出力録画データ24が-3倍のスローモーション速度で生成されるまで、同様に処理される。この処理はリアルタイムで行われ、スローモーションの出力動画が録画される。
【0100】
いくつかの実施形態では、画像処理ユニット14が、スローモーション録画操作に関連付けられた特殊効果入力信号を受信する場合、これはネイティブフレームレートの-2倍での低速化またはスローモーションを表す。これを受けて、
図3Fに最も良く示されるように、未処理のフレーム22は、2個の隣接するフレームの「ブレンド」の結果として新しいフレームが生成されるアルゴリズムを用いて処理される。未処理のフレーム#1がライターに追加され、次に未処理のフレーム#1が未処理のフレーム#2と「ブレンド」されて1つの新しいフレーム#1aが生成されて#1aが書き込まれ、次に未処理のフレーム#2が書き込まれ、次に未処理のフレーム#2が未処理のフレーム#3と「ブレンド」されて1つの新しいフレーム#2aが生成されて#2aが書き込まれ、次に未処理のフレーム#3が書き込まれ、次に未処理のフレーム#3が未処理のフレーム#4と「ブレンド」されて1つの新しいフレーム#3aが生成されて#3aが書き込まれるというように、修正または出力録画データ24が-2倍のスローモーション速度で生成されるまで、同様に処理される。この処理はリアルタイムで行われ、スローモーション出力動画は、未処理の動画データ22の代わりに録画され、および/またはリアルタイムで、あるいは録画が停止されて録画後アルゴリズムがその間に入力されたコマンドの処理を完了した直後に表示される。
【0101】
いくつかの実施形態では、画像処理ユニット14が、スローモーション録画動作に関連付けられた特殊効果入力信号を受信する場合、これはネイティブフレームレートの-3倍での低速化またはスローモーションを表す。これを受けて、
図3Gに最もよく示されるように、未処理のフレーム22は、2個の隣接するフレームの「ブレンド」の結果として新しいフレームが生成されるアルゴリズムを用いて処理される。未処理のフレーム#1をライターに追加することができ、次に未処理のフレーム#1を未処理のフレーム#2と「ブレンド」して2個の新しいフレーム#1aおよび#1bが生成されて#1aおよび#1bが書き込まれ、次に未処理のフレーム#2が書き込まれ、次に未処理のフレーム#2を未処理のフレーム#3と「ブレンド」して2個の新しいフレーム#2aおよび#2bが生成されて#2aおよび#2bが書き込まれ、次に未処理のフレーム#3が書き込まれ、次に未処理のフレーム#3を未処理のフレーム#4と「ブレンド」して2個の新しいフレーム#3aおよび#3bが作成されて#3aおよび#3bが書き込まれるというように、修正または出力録画データ24が-3倍のスローモーション速度で生成されるまで、同様に処理される。この処理はリアルタイムで行われ、スローモーション出力動画は、未処理の動画データ22の代わりに録画され、および/またはリアルタイムで、あるいは録画が停止されて録画後アルゴリズムがその間に入力されたコマンドの処理を完了した直後に表示される。
【0102】
追加のファストモーションおよび/またはスローモーション操作は、上述したものよりも大きなファストモーション速度またはスローモーション速度で実行できることを理解されたい。さらに、ファストモーション速度とスローモーション速度との組み合わせを、単一の未処理の動画データにリアルタイムで実施できることを理解されたい。このようにして、ネイティブ速度レート、ファストモーション速度、スローモーション速度、またはそれらの任意の組み合わせの部分を含む出力/最終動画録画データが作成される。
【0103】
図4および
図5を参照すると、コンパニオンソフトウェアアプリケーションは、画像処理ユニット14、または画像処理ユニット14に動作可能に関連付けられた電子計装置、マシン、またはシステム2に関連付けられ、および/またはそれらによって実行されることができる。
図4は集積回路チップ26に組み込まれた画像処理ユニット14の概略図であり、これは、電子装置2の形成において、カメラ12などの例示的なマシンまたはその構成要素に組み込むことができ、その中で、構成要素または電子装置に、本明細書で説明する方法のうちの任意の1つまたは複数を実行させるための一連の命令を実行させることができる。画像処理ユニット14を含む集積回路チップ26は、その動作のためのファームウェアを含むように構成される、または構成することができる。集積回路チップ26は、カメラ12、表示ユニット20、または電子装置2の他の構成要素と共に埋め込まれることができることを理解されたい。Bluetooth(登録商標)または他のプロトコルを介して電子装置またはカメラに接続されたリモートコントロールを利用することができることを理解されたい。
【0104】
集積回路チップ26は、本明細書に記載された方法または機能のうちの任意の1つまたは複数を実施または利用する1つまたは複数の一連の命令およびデータ構造(たとえば、命令)が記憶されるコンピュータまたは機械可読媒体を含むことができる。命令は、インターフェースまたはGUIから操作指示を受け取ることができる画像処理ユニット14の動作のために構成される、または構成することができる。
【0105】
装置2は、タッチスクリーンおよびGUI、ソナーまたは亜音速送信機、受信機および/またはトランシーバ、音声コマンド、Bluetooth(登録商標)、リモートコントローラ、ディスプレイ上のジェスチャコマンド、または赤外線など、多数の異なる入力(複数のフィードからの同時入力を含む)および/または出力(I/O)システムをさらに含むことができるが、これらに限定されない。装置2は、動画録画装置から、内部メモリ、外部メモリ、外部ソリッドステートドライブ(SSD)またはクラウドなどのメモリ/ストレージシステムに、動画または画像をさらに記録することができる。
【0106】
図5は電子装置2に組み込まれた画像処理ユニット14の概略図であり、本明細書で説明する方法のうちの任意の1つまたは複数を電子装置に実行させるための一連の命令を実行することができる。
【0107】
さまざまな例示的な実施形態では、電子装置2は、スタンドアロンデバイスとして動作するか、または他の装置に接続(例えば、ネットワーク接続)されてもよい。ネットワーク接続された展開では、電子装置がサーバ-クライアントネットワーク環境におけるサーバまたはクライアントマシンの能力で動作してもよく、またはピアツーピア(または分散)ネットワーク環境におけるピアマシンとして動作してもよい。電子装置は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、携帯音楽プレーヤ(例えば、Moving Picture Experts Group Audio Layer 3(MP3)プレーヤなどの携帯用ハードドライブオーディオデバイス)、ウェブアプライアンス、ネットワークルータ、スイッチ、ブリッジ、またはその装置によって実行されるべき動作を指定する一連の(シーケンシャルなまたはその他)命令を実行することができる任意の装置であってもよい。さらに、ここでは単一の電子装置のみが示されているが、「装置」という用語は、本明細書で説明される方法のうちの任意の1つまたは複数を実行するために、一連の(または複数の)命令を個別にまたは共同で実行する装置の任意の集合を含むものと解釈されるべきである。
【0108】
例示の電子装置2は、プロセッサまたは複数のプロセッサ(例えば、CPU、GPU、またはその両方)と、メインメモリおよび/またはスタティックメモリとを含み、これらはバスを介して互いに通信する。他の実施形態では、電子装置2は、動画ディスプレイ(例えば、液晶ディスプレイ(LCD))をさらに含んでもよい。また、電子装置2は、英数字入力装置(例えば、キーボード)、カーソル制御装置(例えば、マウス)、音声認識または生体認証ユニット(図示せず)、駆動ユニット(ディスク駆動ユニットともいう)、信号生成装置(例えば、スピーカ)、ユニバーサルシリアルバス(USB)および/または他の周辺接続、ならびにネットワークインターフェース装置を含んでもよい。他の実施形態では、電子装置2は、データを暗号化するためのデータ暗号化モジュール(図示せず)をさらに含むことができる。
【0109】
画像処理ユニット14は、駆動ユニットと動作可能に関連付けられたモジュールとすることができ、駆動ユニットは、本明細書に記載の方法または機能のうちの任意の1つまたは複数を実施するまたは利用する1つまたは複数の一連の命令およびデータ構造(たとえば、命令)が記憶されるコンピュータまたは機械読み取り可能媒体を含む。また、命令は、電子装置2による実行中に、メモリ内および/またはプロセッサ内に、完全にまたは少なくとも部分的に存在してもよい。また、メモリおよびプロセッサは、機械読み取り可能媒体を構成してもよい。
【0110】
命令はさらに、多くの周知の転送プロトコル(例えば、拡張マークアップ言語(XML))のうちのいずれか1つを利用するネットワークインターフェース装置を介して、ネットワークを通じて送受信されてもよい。機械読み取り可能媒体は、例示的な実施形態では単一の媒体であることが示されているが、「コンピュータ読み取り可能媒体」という用語は、1つまたは複数の一連の命令を記憶する単一の媒体または複数の媒体(例えば、集中型または分散型のデータベースおよび/または関連するキャッシュおよびサーバ)を含むものと解釈されるべきである。「コンピュータ読み取り可能媒体」という用語は、装置による実行のための一連の命令を記憶、符号化、または搬送することが可能であり、装置に本願の方法論のうちのいずれか1つまたは複数を実行させる媒体、またはそのような一連の命令によって利用されるか、またはそれに関連付けられたデータ構造を記憶、符号化、または搬送することが可能である媒体を含むものと解釈されるべきである。したがって、「コンピュータ読み取り可能媒体」という用語は、ソリッドステートメモリ、光学媒体および磁気媒体、ならびに搬送波信号を含むが、これらに限定されないものと解釈されるべきである。このような媒体はまた、限定されるものではないが、ハードディスク、フロッピーディスク、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)等を含むことができる。本明細書に記載する例示的な実施形態は、コンピュータにインストールされたソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせを含む動作環境で実施することができる。
【0111】
ソフトウェアアプリケーションは、電子デ装置2の任意のメモリ、または電子装置2と通信するリモートコンピュータに記憶されるように構成される、または構成可能であることが理解される。ソフトウェアアプリケーションは、カメラ12によるデフォルトフレーム速度レートを変更することなく、ユーザが録画される動画のカスタムフレーム速度レートを定義することができるインターフェースを含むように構成される、または構成可能である。
【0112】
ここで、ライブ動画キャプチャデータの特殊効果操作をリアルタイムで制御する方法についてさらに説明する。概要として、いくつかの実施形態では、本方法は、カメラを用いて実世界のシーンの動画を撮影すること、撮影された動画をグラフィカルユーザインターフェース上で通常速度で再生すること、グラフィカルユーザインターフェースによって受信されたユーザインターフェース入力に応答して、録画されている動画のグラフィカルユーザインターフェース上の再生速度を通常の再生速度から修正された再生速度に変更することを含む。ここで、ライブ動画キャプチャデータの特殊効果操作をリアルタイムで制御するための、いくつかの実施形態による具体的な処理について、より詳細に言及する。
【0113】
ソフトウェアアプリケーションまたはインターフェースの可能な処理を
図6、
図7および
図24に示す。インターフェースおよび/またはソフトウェアアプリケーションは、カメラによって提供される未処理の速度レートを変更することなく、ユーザがリアルタイムで所定の動画録画速度レートを選択することを可能にする。これにより、本技術は、カメラや装置に依存しないものとなっている。
図6は、ユーザインターフェース、装置、および全体的なプロセスに関連付けられたサブルーチンを含む、本技術の全体的な処理を示す。
【0114】
図7を参照すると、本技術の処理は、カメラからの未処理の動画データストリームに対して何らかの特殊効果オプションが要求されたかどうかを判定する。例示的な目的のために、特殊効果は、未処理の動画データ内のフレームを修正することによる動画速度レートの変更であることができる。この処理は、処理全体を支援するサブルーチンおよび/またはサブプロセスを開始するように構成される、または構成可能である。
【0115】
本発明のソフトウェアアプリケーションが開始され、ユーザインターフェースがユーザに提供される。最初のステップは、ユーザがApp50を開くことである。その後、ステップ51では、ユーザがカメラ設定に入ることを可能にし、電子装置のカメラを使用するかまたはリモートビデオフィードを使用するかのいずれかを選択する。次に、処理はステップ52に進み、ユーザは録画処理を開始する。カメラまたは電子装置は、音声/動画の録画を開始するために「スタート」コマンド53を受信する。カメラの「スタート」コマンドは、本発明のソフトウェアアプリケーション、カメラアプリケーション、電子装置に関連付けられた任意の他のアプリケーション、または電子装置またはカメラと通信するリモート装置によって開始されることができることを理解されたい。
【0116】
処理のステップ54では、ユーザが処理を進めるための適切な許可を有するかどうかを判定することができる。ステップ56では、別個のユーザ設定、プロファイル、データベース、キー、アカウントなどから許可属性を取得することができる。許可属性は、ユーザデータベース58から取得することができる。
【0117】
ステップ60では、ユーザが適切な許可を有しているかどうかを判定し、ユーザが適切な許可を有していない場合、処理を停止または終了する(ステップ94)。ユーザが適切な許可を有していれば、処理はステップ62に進み、最大録画フレームレート(フレーム/秒(fps))を含む装置でサポートされている設定を取得する。次に、処理はステップ64におけるユーザ許可および装置サポートに基づいて、ローカルまたはリモート装置の録画fpsを設定し、次いで、ステップ66で、装置からの入力ストリームを開く。
【0118】
カメラからの未処理のデータ入力ストリームが画像処理ユニットに伝達されると、次に処理は、ステップ62から情報を受信しながら、ステップ68においてカメラからの動画データストリームが開かれているかどうかを判定する。このリクエストは、画像処理ユニットがカメラから未処理の動画データを受信しているかどうかを確認するために利用されることができる。未処理の動画データストリームは、一体型または周辺型のマイクを含むことができ、メモリユニットまたは録画装置ではなく、画像処理ユニットに渡すことができる。入力ストリームが開かれていないと処理が判断した場合、処理は停止または終了する(ステップ94)。
【0119】
入力ストリームが開いている場合、処理はステップ70に進み、未処理の動画データを保存/録画すべきか否かを判定する。未処理の動画データを保存する場合、処理はステップ72に進み、
図8の例1に示すように、動画ストリームの書き込みサブルーチンを利用して新たな並列処理を開始する。録画装置からの追加の入力データ(ステップ74)は、未処理の動画データと共に保存することができる。
【0120】
ステップ70で未処理の動画データを保存しないと判断された場合、ステップ76に進み、動画入力ストリームが開いている状態であるか否かを判定し、開いている場合には処理はステップ76に移行して、ユーザによる特殊効果コマンドが入力されたか否かを判定する(ステップ82)。この処理では、インターフェースを介して特殊効果コマンドが入力されることができる。ユーザが特殊効果コマンドを入力した場合、ステップ84が開始され、
図9に最も良く示されているように、特殊効果サブルーチンが適用される。録画装置からの追加の入力データ(ステップ86)は、ステップ84での特殊効果の適用に含めることができる。
【0121】
ユーザがステップ82において、動画速度レートの変更などの特殊効果の要求を入力していない場合、録画装置からのデータの入力(ステップ90)および/または特殊効果を有する処理された動画および音声データの入力(ステップ92)などの他のコマンドを適用するステップ88が初期化される。ステップ88は、ステップ84からの他の情報を含むことができる。
【0122】
ステップ76で動画入力ストリームが閉じられていると判定された場合、処理は、停止または終了する(ステップ94)。
【0123】
必要に応じて、ステップ78は、
図8の例2に示すように、動画ストリームの書き込みサブルーチンを利用した、新しい並列処理を開始することができる。追加処理された動画および音声データ(ステップ80)は、ステップ78からの動画データと共に保存することができる。ステップ78の新しい並列処理は、ステップ84および/または88とは別個に独立して開始することができる。ステップ78の後、処理はステップ76に戻る。
【0124】
この処理は、未処理の動画データストリームが特殊効果適用サブルーチンを使用して処理された後、または未処理の動画データストリームが保持された後に、動画ストリームの書き込みサブルーチンを使用して、未処理の動画ストリームを書き込むことができる。
【0125】
図8を参照して、動画データストリームを1つまたは複数の内部メモリ、電子装置と通信する1つまたは複数のリムーバブルメモリ、1つまたは複数の外部装置、および/または1つまたは複数のクラウド装置またはアカウントに書き込む/保存/録画する処理を提供する動画ストリームの書き込みサブルーチンについて説明する。
【0126】
本技術の処理は、どの装置が動画データストリームの書き込み先であるかを順番に判定し、ユーザが動画ストリームの書き込みサブルーチンに関連する各ステップに対して適切な許可を有しているかどうかを判定する。ユーザが特定の装置に書き込むための適切な許可を有している場合、処理は、ユーザの好みに応じて、特定の装置に動画データストリームを書き込む。
【0127】
このサブルーチンは、
図7の処理からのコマンドによる開始に応じて開始する(ステップ104)。次に、このサブルーチンは、
図7の処理またはデータベース(ステップ104および106)から、ユーザの好みおよび許可の取得に進む(ステップ102)。ステップ102の後、このサブルーチンは、カメラから未処理の動画データストリームを入力として取得する(ステップ108)。未処理の動画データストリームは、ステップ110による、電子装置、カメラおよび/またはマイクからの音声/動画ストリーム、および/またはステップ112による、装置のRAMメモリおよび/または不揮発性長期メモリからの音声/動画ストリームであることができる。
【0128】
未処理の動画データストリームの取得後、このサブルーチンのステップ114が開始され、これにより、ユーザが内部メモリへの書き込み許可を有するか否かが判定される。ユーザが適切な許可を有していて、ユーザ設定が内部メモリへの書き込み/コピー動作を許可している場合(ステップ116)、ステップ118で、動画データストリームを内部メモリに書き込む新しい処理が開始される。
【0129】
ステップ114からユーザが内部メモリへの書き込み許可を有していない場合、またはステップ116のユーザ設定がステップ116での書き込み/コピー動作を許可していない場合、またはステップ118の処理を開始した後に、このサブルーチンは、ユーザがリムーバブルメモリへの書き込み許可を有しているかどうかの判定を続ける(ステップ120)。ユーザが適切な許可を有しており、ユーザ設定がリムーバブルメモリへの書き込み/コピー動作を許可している場合(ステップ122)、ステップ124で、動画データストリームをリムーバブルメモリに書き込む新しい処理が開始される。
【0130】
ステップ120からユーザがリムーバブルメモリへの書き込み許可を有していない場合、またはステップ122のユーザ設定がそのようなアクションを許可していない場合、またはステップ124の処理を開始した後に、このサブルーチンは、ユーザが外部装置への書き込み許可を持っているかどうかの判定を続ける(ステップ126)。ユーザが適切な許可を有していて、ユーザ設定が外部装置への書き込み/コピー動作を許可している場合(ステップ128)、ステップ130で、動画データストリームを外部装置に書き込む新しい処理が開始される。
【0131】
ステップ126からユーザが外部装置への書き込み許可を有していない場合、またはステップ128のユーザ設定がステップ128の書き込み/コピー動作を許可していない場合、またはステップ130の処理の開始が完了した後、このサブルーチンは、ユーザがクラウドへの書き込み許可を有しているかどうかの判定を続ける(ステップ132)。ユーザが適切な許可を有していて、ユーザ設定がクラウドへの書き込み/コピー動作を許可している場合(ステップ134)、ステップ136で、動画データストリームをクラウドに書き込む新しい処理が開始される。
【0132】
ステップ132からユーザがクラウドに書き込む許可を有していない場合、またはステップ134からのユーザ設定がそのような動作を許可していない場合、またはステップ136で処理を開始した後、このサブルーチンは停止または終了する(ステップ138)。
【0133】
図9を参照して、特殊効果オプションがリクエストされたかどうか判定する、および特殊効果リクエストの特定の操作を決定する特殊効果適用サブルーチンを説明する。このサブルーチンは、
図7の処理からのコマンドによる開始に応じて開始する(ステップ140)。開始後、このサブルーチンは、入力としてカメラから未処理の動画データストリームを取得する(ステップ142)。未処理の動画データストリームは、ステップ146のように、電子装置、カメラおよび/またはマイクからの音声/動画ストリームであってもよい。
【0134】
未処理の動画データストリームの取得後、ステップ148が開始され、例えば、Recording_fpsがPlayback_fpsよりも大きいかどうかなど、現在の速度が通常速度またはネイティブ速度に等しいかどうかを判定する。ユーザが速度変更リクエストを行った場合、ステップ150は、
図12に最も良く示すように、高度なスローモーションサブルーチンを開始する。ステップ150の完了後、このサブルーチンは停止または終了する(ステップ168)。
【0135】
例えば、Recording_fpsがPlayback_fpsより大きくない場合や、Recording_fpsがPlayback_fpsと等しい場合のように、ユーザが速度変更リクエストを行っておらず、新しい速度が通常に設定されていない場合、このサブルーチンはステップ152に進み、現在の速度が通常またはネイティブ速度と等しいかどうかを判定する。ユーザが速度変更リクエストを行った場合、またはユーザが以前に修正された速度設定から速度を通常に戻した場合、このサブルーチンは
図3Aに示すように、ステップ154に進み、動画ストリームをRAMメモリおよび/または不揮発性長期メモリバッファに書き込む。ステップ154が完了した後、サブルーチンはステップ164に進み、動画バッファ(RAMメモリおよび/または不揮発性長期メモリ)を呼び出し関数に戻し、これは、動画ストリームが開いているかどうかを判定するステップであってもよく、またはこのサブルーチンが停止または終了するかを判定するステップであってもよい(ステップ168)。
【0136】
新しい速度が通常に設定されないようにユーザが速度変更リクエストを行っていない場合、このサブルーチンはステップ156に進み、速度変更リクエストが未処理の動画データストリームの通常速度よりも速いか遅いかを判定する。これは、現在の速度が通常よりも速いかどうかを判定することによって達成することができる。現在の速度が通常速度よりも速い場合、このサブルーチンは、
図10に最も良く示されるように、高速化サブルーチンを開始する(ステップ158)。高速化サブルーチンが完了した後、このサブルーチンは、ステップ164を開始して、動画バッファ(RAMメモリおよび/または不揮発性長期メモリ)を呼び出し関数に戻す。
【0137】
リクエストされた現在の速度が通常速度よりも速くない場合、このサブルーチンはステップ160に進み、現在の速度を通常よりも遅くするかどうかを判定する。現在の速度が通常速度よりも遅い場合、このサブルーチンは、
図13に最も良く示されているように、低速化サブルーチンを開始する(ステップ162)。低速化サブルーチンが完了した後、または現在の速度が通常よりも遅くない場合、このサブルーチンは、ステップ164を開始して、動画バッファ(RAMメモリおよび/または不揮発性長期メモリ)を呼び出し関数に戻す。
【0138】
図10を参照して、フレームドロップオプションおよび/または他のプラグインが必要であるかどうかを判定する高速化サブルーチンを説明する。このサブルーチンは、特殊効果適用サブルーチン(
図9、ステップ158)からのコマンドによる開始に応じて開始する(ステップ170)。開始後、このサブルーチンは、カメラからおよび/またはリモートビデオフィードからストリーミングされた入力からのの未処理の動画データストリームを入力として取得する(ステップ172)。未処理の動画データストリームはステップ174のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0139】
未処理の動画データストリームの取得後、このサブルーチンのステップ176が開始され、カメラからの動画データ入力ストリームが開いているかどうかが判定される。開いていない場合、このサブルーチンは、ステップ189に進み、このサブルーチンを停止または終了する。
【0140】
入力ストリームが開いている場合、このサブルーチンは、フレームドロップが要求されているかどうかを判定し(ステップ178)、要求されている場合、
図11に最も良く示されるように、フレームドロップサブルーチンを開始するステップ180に進む。
【0141】
ステップ178からフレームドロップが要求されていない場合、またはステップ180のフレームドロップサブルーチンが完了した後、このサブルーチンはステップ181に進み、時間圧縮または伸長の使用がリクエストされているかどうかを判定し、必要であれば、ステップ182に進み、
図20に最もよく示されているように、時間圧縮および伸長のサブプロセスを開始する。
【0142】
ステップ181からフレーム時間圧縮および/または伸長が要求されていない場合、またはステップ182の時間圧縮および/または伸長のサブプロセスが完了した後、このサブルーチンはステップ183に進み、可変FPS再生の使用がリクエストされているかどうかを判定し、必要であれば、ステップ184に進み、
図21に最もよく示されるように、可変FPS再生サブプロセスを開始する。
【0143】
ステップ183からフレーム変数FPS再生が要求されていない場合、またはステップ184の変数FPS再生サブプロセスが完了した後、このサブルーチンはステップ185に進み、他のプラグインまたはアプリケーションが要求されているかどうかを判定する。
【0144】
他のプラグインまたはアプリケーションがリクエストされている場合、このサブルーチンはステップ186に進み、他のプラグインまたはアプリケーションを実行し、ステップ178からの未処理の動画ストリームまたはステップ180、182および/または184からの修正された動画ストリームに対して、その機能を適用する。例えば、他のプラグインまたはアプリケーションはスムージング技術などであってもよいが、これらに限定されない。これらの他のプラグインまたはアプリケーションは、本技術のソフトウェアアプリケーションと統合することができ、あるいは本技術から離れていても、本技術のソフトウェアアプリケーションでアクセス可能かつ操作可能であることができる。
【0145】
ステップ185からユーザが他のプラグインまたはアプリケーションの使用をリクエストしない場合、またはステップ186の他のプラグイン処理が完了した後、このサブルーチンはステップ188に進み、動画入力ストリームが開いているかどうかを判定するために、ステップ176にループバックする呼び出し関数にデータを戻す。ステップ188は、RAMメモリおよび/または不揮発性長期メモリから動画/音声ストリームを受信することができる(ステップ187)。
【0146】
この特殊効果適用サブルーチンは、ステップ176で入力ストリームが開いていないと判定されるまで、ステップ178、180、185、186、および188を含むループされたサブプロセスを含むことが理解できる。
【0147】
図11を参照して、リクエストされたファストモーション動画をシミュレートするために、どのフレームをドロップするかを決定するフレームドロップサブルーチンを説明する。このサブルーチンの例示的なケースは、Record_fpsがPlayback_fpsと等しい場合であってもよい。このサブルーチンは、高速化サブルーチンからのコマンドによる開始に応じて開始する(ステップ190)。開始後、このサブルーチンは、カメラからの未処理の動画データストリームを入力として取得する(ステップ192)。未処理の動画データストリームは、ステップ194のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0148】
未処理の動画データストリームの取得後、このサブルーチンのステップ196が開始され、カメラからの動画データ入力ストリームが開いているかどうかが判定される。ステップ196で、入力ストリームが開いていないと判定した場合、このサブルーチンはステップ198に進み、データを
図10のステップ180の呼び出し関数に戻す。ステップ198は、RAMメモリおよび/または不揮発性長期メモリから動画/音声フレームのデータを受信することができる(ステップ200)。ステップ198が完了した後、このサブルーチンは停止または終了する(ステップ202)。
【0149】
ステップ196から入力ストリームが開いている間、このサブルーチンは、速度が通常より2倍速いかどうかを判定する(ステップ204)。速い場合、ステップ206が初期化され、
図3Bのように、次のフレームをドロップする。その後、このサブルーチンはステップ220に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ220の後、このサブルーチンはステップ196に戻る。
【0150】
速度が通常の2倍の速さに相当しない場合(ステップ204)、このサブルーチンは、速度が通常よりも3倍速いかどうかを判定する(ステップ208)。速い場合、ステップ210が初期化され、
図3Cのように、次の2つのフレームをドロップする。その後、このサブルーチンはステップ220に進み、その後ステップ196に戻る。
【0151】
速度が通常の3倍の速さに相当しない場合(ステップ208)、このサブルーチンは、速度が通常よりも4倍速いかどうかを判定する(ステップ212)。速い場合、ステップ214が初期化され、次の3つのフレームがドロップされる。その後、このサブルーチンはステップ220に進み、その後ステップ196に戻る。
【0152】
速度が通常の4倍の速さに相当しない場合(ステップ212)、このサブルーチンは、速度が通常よりも「n」倍速いかどうかを連続的に判定し続け(ステップ216)、速い場合、各「n番目」のステップは次の(n-1)フレームをドロップする動作を初期化する(ステップ218)。その後、このサブルーチンはステップ220に進み、その後ステップ196に戻る。
【0153】
このフレームドロップサブルーチンは、フレーム毎にフレームをドロップすべきか否かを決定することが理解できる。その結果、特定のフレームが削除された修正されて動画ストリームが得られ、所定の速度のファストモーション動画をシミュレートすることができる。この修正された動画ストリームは、リアルタイムでメモリに書き込まれ/保存される。
【0154】
このフレームドロップサブルーチンは、ステップ196で入力ストリームが開いていないと判定されるまで、ステップ204~220を含むループされたサブプロセスを含むことが理解できる。
【0155】
図12を参照して、フレーム追加オプションまたは他のプラグインが要求されているかどうかを判定する高度なスローモーションサブルーチンについて説明する。このサブルーチンは、特殊効果適用サブルーチンからのコマンドによる開始(ステップ222)に応じて開始する。開始後、このサブルーチンは、入力としてカメラから未処理の動画データストリームを取得する(ステップ224)。未処理の動画データストリームはステップ246のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0156】
未処理の動画データストリームの取得後、このサブルーチンのステップ248が開始され、カメラからの動画データ入力ストリームが開いているかどうかが判定される。ステップ248で、入力ストリームが開いていないと判定された場合、このサブルーチンはステップ270に進み、このサブルーチンは停止する。
【0157】
ステップ248から入力ストリームが開いている間、このサブルーチンはフレーム追加が要求されているかどうかを判定し(ステップ250)、要求されていれば、
図13に最も良く示されるように、フレーム追加サブルーチンを開始するステップ252に進む。
【0158】
ステップ250からフレーム追加が要求されていない場合、またはステップ252からのフレーム追加サブルーチンが完了した後、このサブルーチンはステップ254に進み、フレームレート録画速度の増加が要求されているかどうかを判定する。要求されている場合、このサブルーチンはステップ256に進み、
図14に最も良く示されているように、可変フレームレートサブルーチンまたはフレームレート増加サブルーチンを開始する。
【0159】
ステップ254からフレームレート録画速度の増加が要求されていない場合、またはステップ256からの可変フレームレートサブルーチンが完了した後、このサブルーチンはステップ258に進み、一定の高フレームレートの録画速度が使用されるべきかどうかを判定する。使用される場合、このサブルーチンはステップ260に進み、
図15に最も良く示されているように、一定の高フレームレートサブルーチンを開始する。
【0160】
ステップ258から一定の高フレームレート録画速度が要求されていない場合、またはステップ260の一定の高フレームレート録画速度サブルーチンが完了した後、このサブルーチンはステップ261に進み、時間圧縮または伸長の使用が要求されているかどうかを判定し、要求されていれば、
図20に最もよく示されるように、時間圧縮および伸長サブプロセスを開始するステップ262に進む。
【0161】
ステップ261からフレーム時間圧縮および/または伸長が要求されていない場合、またはステップ262の時間圧縮および/または伸長サブプロセスが完了した後、このサブルーチンはステップ263に進み、可変FPS再生の使用がリクエストされているかどうかを判定し、要求されていれば、ステップ264に進み、
図22に最もよく示されるように、可変FPS再生サブプロセスを開始する。ステップ263からフレーム可変FPS再生が要求されていない場合、またはステップ264の可変FPS再生サブプロセスが完了した後、このサブルーチンはステップ265に進み、他の特殊効果の強化がリクエストされているかどうかを判定する。他の特殊効果の強化がリクエストされている場合、このサブルーチンはステップ267に進み、このサブルーチンは他の特殊効果サブルーチンを実行し、それらの機能を生成された修正された動画ストリームに適用することができる。この他の特殊効果サブルーチンは、本技術のソフトウェアアプリケーションと統合することができ、あるいは本技術から離れていても、本技術のソフトウェアアプリケーションでアクセス可能で操作可能である。
【0162】
ユーザがステップ265からの他の特殊効果の強化の使用をリクエストしていない場合、またはステップ267からの他の特殊効果サブルーチンが完了した後、このサブルーチンはステップ266に進み、動画入力ストリームが開いているかどうかを判定するためにステップ248にループバックする呼び出し関数にデータを戻す。ステップ268に従って、他の処理された音声/動画データは、呼び出し関数に返されるデータの一部であり得ることが理解することができる。
【0163】
この高度なスローモーションサブルーチンは、ステップ248で入力ストリームが開いていないと判定されるまで、ステップ250~266を含むループされたサブプロセスを含むことが理解できる。
【0164】
図13を参照して、リクエストされたスローモーション動画をシミュレートするためにフレームが追加されるかどうか、およびどのフレームが追加されるかを判定する、
図12の低速化サブルーチンに関連するフレーム追加サブルーチンを説明する。このサブルーチンは、録画fps=再生fpsであることを前提としている。このサブルーチンは、低速化サブルーチンからのコマンドによる開始(ステップ272)に応じて開始する。開始後、このサブルーチンは、カメラから未処理の動画データストリームを入力として取得する(ステップ274)。未処理の動画データストリームは、ステップ276のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0165】
未処理の動画データストリームの取得後、このサブルーチンのステップ274が開始され、カメラからの動画データ入力ストリームが開いているかどうかが判定される。ステップ278が、入力ストリームが開いていないと判定した場合、このサブルーチンはステップ298に進み、データを、
図12のステップ252の呼び出し関数に戻す。ステップ298は、RAMメモリおよび/または不揮発性長期メモリから動画/音声フレームのデータを受信することができる(ステップ300)。ステップ298が完了した後、このサブルーチンは停止または終了する(ステップ302)。
【0166】
ステップ278から入力ストリームが開かれている間に、このサブルーチンは、単純なフレームコピー(ステップ281)またはよりCPU負荷の高いフレームブレンド(ステップ282)のいずれかにより、ステップ280で利用するフレーム追加のタイプを決定する。ユーザがフレームコピーを選択した場合、処理はステップ281に進み、アルゴリズムおよびその説明は変更されない。しかしながら、ユーザが「フレームブレンド」を選択し、それらのハードウェアがそれをサポートしている場合、プロセスはステップ282に進み、アルゴリズムは新規または追加のステップを含むことができる。
【0167】
ステップ280でフレームコピーが選択された場合、速度「チェック」の各々について、論理的には、処理は左のアルゴリズムパスに沿って進むことが理解される。ステップ280でフレームブレンドが選択された場合、速度「チェック」の各々について、論理的には、処理は右のアルゴリズムパスに沿って進むことがさらに理解できる。
【0168】
サブルーチンは続けて、速度が通常より2倍遅いかどうかを判定する(ステップ283)。遅い場合、フレームコピーパスでは、ステップ284が初期化されて、
図3Dのように、フレームを1回コピーして合計2個の同一フレームを得る。その後、このサブルーチンはステップ296に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ296の後、このサブルーチンはステップ278に戻る。フレームブレンドパスでは、ステップ285が初期化され、
図3Fに示すように、現在のフレームを次のフレームとブレンドして合計1つの新しい「ブレンドされた」フレームを作成する。その後、このサブルーチンはステップ296に進む。
【0169】
速度が通常より2倍遅くない場合(ステップ283)、このサブルーチンは、速度が通常より3倍遅いかどうかを判定する(ステップ286)。遅い場合、フレームコピーパスでは、ステップ287が初期化され、
図3Eのように、フレームが2回コピーされて、合計3個の同一フレームを得る。その後、このサブルーチンはステップ296に進み、ステップ278に戻る。フレームブレンドパスでは、ステップ288が初期化され、
図3Gに示すように、現在のフレームを次のフレームとブレンドして、合計2個の新しい「ブレンドされた」フレームを作成する。その後、このサブルーチンはステップ296に進む。
【0170】
速度が通常より3倍遅くない場合(ステップ286)、このサブルーチンは、速度が通常より4倍遅いかどうかを判定する(ステップ289)。遅い場合、フレームコピーパスでは、ステップ290が初期化され、フレームが3回コピーされて、合計4個の同一フレームを得る。その後、このサブルーチンはステップ296に進み、ステップ278に戻る。フレームブレンドパスでは、ステップ291が初期化され、現在のフレームを次のフレームとブレンドし、合計3個の新しい「ブレンドされた」フレームを得る。その後、このサブルーチンはステップ296に進む。
【0171】
速度が通常よりも4倍遅くない(ステップ289)、このサブルーチンは引き続き、速度が通常よりも「n」倍遅いかどうかを判定する(ステップ292)。遅い場合、フレームコピーパスでは、各「n番目」ステップは、フレームを(n-1)回コピーして、同一フレームを合計「n」個得る。その後、このサブルーチンはステップ296に進み、次にステップ278に戻る。フレームブレンドでは、ステップ295が初期化され、現在のフレームを次のフレームとブレンドし、合計(n-1)個の新しい「ブレンド」フレームを得る。その後、このサブルーチンはステップ296に進む。
【0172】
このフレーム追加サブルーチンは、ステップ278で入力ストリームが開いていないと判定されるまで、ステップ280~296を含むループされたサブプロセスを含むことが理解できる。
【0173】
図14を参照して、
図12の可変フレームレートサブルーチンに関連する可変高録画fpsサブルーチン(120FPS)の一例を説明する。この可変フレームレートサブルーチンは、スローモーションをシミュレートするために利用することができるが、例えば、スローモーション範囲=録画速度/再生fps=120fps/30fps=4に限定される。
【0174】
このサブルーチンは、低速化サブルーチンからのコマンドによる開始に応じて開始する(ステップ304)。開始後、このサブルーチンは、入力としてカメラから未処理の動画データストリームを取得する(ステップ306)。未処理の動画データストリームは、ステップ308のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0175】
未処理の動画データストリームの取得後、このサブルーチンのステップ310が開始されて、デバイスの録画フレームレートが、例えば、Recording_Frame_Rate=120fpsに設定される。その後、ステップ312は、デバイスの再生フレームレートを、例えば、Playback_Frame_Rate=30fpsに設定する。
【0176】
このサブルーチンのステップ314が開始され、カメラからの動画データ入力ストリームが開いているかどうかを判定する。ステップ314が、入力ストリームが開いていないと判定した場合、このサブルーチンはステップ332に進み、データを、
図12のステップ256である呼び出し関数に戻す。ステップ332は、RAMメモリおよび/または不揮発性長期メモリから動画/音声フレームのデータを受信することができる(ステップ334)。ステップ332が完了した後、このサブルーチンは停止または終了する(ステップ336)。
【0177】
ステップ314から入力ストリームが開いている間、このサブルーチンは、録画速度が「-4倍」に等しいかどうかを判定し(ステップ316)、これは4のスローモーション範囲とすることができる。等しい場合、ステップ318が初期化され、録画フレームレートが120fpsに設定される。その後、このサブルーチンはステップ330に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ330の後、このサブルーチンはステップ314に戻る。
【0178】
録画速度が「-4倍」に等しくない場合(ステップ316)、このサブルーチンは、録画速度が「-3倍」に等しいかどうかを判定する(ステップ320)。等しい場合、ステップ322が初期化され、録画フレームレートが90fpsに設定される。その後、このサブルーチンはステップ330に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ330の後、このサブルーチンはステップ314に戻る。
【0179】
録画速度が「-3倍」に等しくない場合(ステップ320)、このサブルーチンは、録画速度が「-2倍」に等しいかどうかを判定する(ステップ324)。等しい場合、ステップ326が初期化され、録画フレームレートが60fpsに設定される。その後、このサブルーチンはステップ330に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ330の後、このサブルーチンはステップ314に戻る。
【0180】
録画速度が「-2倍」に等しくない場合(ステップ324)、このサブルーチンは録画フレームレートを30fpsに設定する(ステップ328)。これは「通常」以下の録画速度とすることができる。その後、このサブルーチンはステップ330に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ330の後、このサブルーチンはステップ314に戻る。
【0181】
この可変高録画fpsサブルーチンは、ステップ314で入力ストリームが開いていないと判定されるまで、ステップ316~330を含むループされたサブプロセスを含むことが理解できる。
【0182】
図15を参照して、
図12の一定の高フレームレートサブルーチンに関連する一定のフレームレートスローモーションサブルーチンの例を説明する。この一定のフレームレートスローモーションサブルーチンは、スローモーションのシミュレーションに利用することができる。
【0183】
このサブルーチンは、低速化サブルーチンからのコマンドによる開始に応じて開始する(ステップ340)。開始後、このサブルーチンは、入力としてカメラから未処理の動画データストリームを取得する(ステップ342)。未処理の動画データストリームは、ステップ346のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0184】
未処理の動画データストリームの取得後、このサブルーチンのステップ348が開始され、動画ストリームの録画フレームレート(録画fps)を取得し、その後、動画ストリームの再生フレームレート(再生fps)を取得するステップ350に進む。
【0185】
録画フレームレートおよび再生フレームレートを取得した後、このサブルーチンは、recording_fps=playback_fps*2であるかどうかを判定する(ステップ352)。そうであれば、ステップ354に進み、
図16に最も良く示されているように、60fpsで一定の高フレームレートサブルーチンを開始する。その後、このサブルーチンは停止または終了する(ステップ368)。
【0186】
recording_fps=playback_fps*2でない場合、このサブルーチンはステップ356に進み、recording_fps=playback_fps*4であるかどうかを判定する。そうであれば、ステップ358に進み、
図17A及び図17Bに最も良く示されているように、120fpsで一定の高フレームレートサブルーチンを開始する。その後、このサブルーチンは停止または終了する(ステップ368)。
【0187】
recording_fps=playback_fps*4でない場合、このサブルーチンはステップ360に進み、recording_fps=playback_fps*8であるかどうかを判定する。そうであれば、ステップ362に進み、
図18A及び図18Bに最も良く示されているように、240fpsで一定の高フレームレートサブルーチンを開始する。その後、このサブルーチンは停止または終了する(ステップ368)。
【0188】
recording_fps=playback_fps*8でない場合、このサブルーチンは、他のすべての場合に共通してステップ364に進み、より高いfpsで一定の高フレームレートサブルーチンを開始する。その後、このサブルーチンは停止または終了する(ステップ368)。
【0189】
図16を参照して、
図15の一定の高フレームレートサブルーチンに関連する一定の高録画fpsサブルーチン(60FPS)の例を説明する。この一定の高フレームレートサブルーチンは、スローモーションをシミュレートするために利用することができ、例えば、スローモーション範囲=録画速度/再生fps=60fps/30fps=2に限定される。「スローモーション範囲」とは、アルゴリズムが任意のタイプの「フレーム追加」を使用する必要がないように、録画および再生fps設定でスローモーション効果を生み出すことができる複数のファクターとして定義される。
【0190】
このサブルーチンは、低速化サブルーチンからのコマンドによる開始応じて開始する(ステップ370)。開始後、このサブルーチンは、入力としてカメラから未処理の動画データストリームを取得する(ステップ372)。未処理の動画データストリームは、ステップ374のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0191】
未処理の動画データストリームの取得後、このサブルーチンのステップ376が開始され、装置の録画フレームレートを、例えば、Recording_Frame_Rate=60fpsに設定する。その後、ステップ378は、Playback_Frame_Rate=30fpsに装置の再生フレームレートを、例えば、Playback_Frame_Rate=30fpsに設定する。
【0192】
このサブルーチンのステップ380が開始され、カメラからの動画データ入力ストリームが開いているかどうかを判定する。ステップ380が、入力ストリームが開いていないと判定した場合、このサブルーチンはステップ398に進み、データを、
図15のステップ354の呼び出し関数に戻す。ステップ398は、RAMメモリおよび/または不揮発性長期メモリから動画/音声フレームのデータを受信することができる(ステップ400)。ステップ398が完了した後、このサブルーチンは停止または終了する(ステップ402)。
【0193】
ステップ380から入力ストリームが開いている間、このサブルーチンは、録画速度が「-4倍」に等しいかどうかを判定する(ステップ382)。等しい場合、ステップ384が初期化され、
図3Eのように、ストリームの各フレームを2回コピーして合計3つの同一のフレームを得るか、または
図3Gのようにブレンドされたフレームを得る。その後、このサブルーチンはステップ396に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ396の後、このサブルーチンはステップ380に戻る。
【0194】
録画速度が「-4倍」に等しくない場合(ステップ382)、このサブルーチンは、録画速度が「-3倍」に等しいかどうかを判定する(ステップ386)。等しい場合、ステップ388が初期化され、
図3Dのように、ストリームの各フレームを1回コピーして合計2つの同一フレームを得るか、または
図3Fのようにブレンドされたフレームを得る。その後、このサブルーチンはステップ396に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ396の後、このサブルーチンはステップ380に戻る。
【0195】
録画速度が「-3倍」に等しくない場合(ステップ386)、このサブルーチンは、録画速度が「-2倍」に等しいかどうかを判定する(ステップ390)。等しい場合、ステップ392が初期化され、変更されていない動画ストリームを通過させる。その後、このサブルーチンはステップ396に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ396の後、このサブルーチンはステップ380に戻る。
【0196】
録画速度が「-2倍」に等しくない場合(ステップ390)、このサブルーチンは、「通常」に等しい録画速度のために、2フレームのうちの1フレーム(1/2)をドロップする(ステップ394)。その後、このサブルーチンはステップ396に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ396の後、このサブルーチンはステップ380に戻る。
【0197】
この一定の高録画fpsサブルーチン(60FPS)は、ステップ380で入力ストリームが開いていないと判定されるまで、ステップ382~396を含むループされたサブプロセスを含むことが理解できる。
【0198】
図17A及び図17Bを参照して、
図15の一定の高フレームレートサブルーチンに関連する一定の高録画fpsサブルーチン(120FPS)の例を説明する。この一定の高フレームレートサブルーチンは、スローモーションをシミュレートするために利用することができ、例えば、スローモーション範囲=録画速度/再生fps=120fps/30fps=4に限定される。
【0199】
このサブルーチンは、低速化サブルーチンからのコマンドによる開始に応じて開始する(ステップ404)。開始後、このサブルーチンは、入力としてカメラからの未処理の動画データストリームを取得する(ステップ406)。未処理の動画データストリームは、ステップ408のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0200】
未処理の動画データストリームの取得後、このサブルーチンのステップ410が開始され、デバイスの録画フレームレートを、例えば、Recording_Frame_Rate=120fpsに設定する。その後、ステップ412は、デバイスの再生フレームレートを、例えば、Playback_Frame_Rate=30fpsに設定する。
【0201】
このサブルーチンのステップ414が開始され、カメラからの動画データ入力ストリームが開いているかどうかを判定する。ステップ414で入力ストリームが開いていないと判定された場合、このサブルーチンはステップ448に進み、データを、
図15のステップ358である呼び出し関数に戻す。ステップ448は、RAMメモリおよび/または不揮発性長期メモリから動画/音声フレームのデータを受信することができる(ステップ450)。ステップ448が完了した後、このサブルーチンは停止または終了する(ステップ452)。
【0202】
ステップ414から入力ストリームが開いている間、このサブルーチンは録画速度が「-8倍」に等しいかどうかを判定する(ステップ416)。等しい場合、ステップ418が初期化され、フレームを4回コピーして合計5つの同一フレームを得るか、またはブレンドされたフレームを得る。その後、このサブルーチンはステップ446に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ446の後、このサブルーチンはステップ414に戻る。
【0203】
録画速度が「-8倍」に等しくない場合(ステップ416)、このサブルーチンは、録画速度が「-7倍」に等しいかどうかを判定する(ステップ420)。等しい場合、ステップ422が初期化され、フレームを3回コピーして合計4つの同一フレームを得るか、またはブレンドされたフレームを得る。その後、このサブルーチンはステップ446に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ446の後、このサブルーチンはステップ414に戻る。
【0204】
録画速度が「-7倍」に等しくない場合(ステップ420)、このサブルーチンは、録画速度が「-6倍」に等しいかどうかを判定する(ステップ424)。等しい場合、ステップ426が初期化され、
図3Eのように、フレームを2回コピーして合計3つの同一のフレームを得るか、または
図3Gのようにブレンドされたフレームを得る。その後、このサブルーチンはステップ446に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ446の後、このサブルーチンはステップ414に戻る。
【0205】
録画速度が「-6倍」に等しくない場合(ステップ424)、このサブルーチンは、録画速度が「-5倍」に等しいかどうかを判定する(ステップ428)。等しい場合、ステップ430が初期化され、
図3Dのように、フレームを1回コピーして合計2つの同一フレームを得るか、または
図3Fのようにブレンドされたフレームを得る。その後、このサブルーチンはステップ446に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ446の後、このサブルーチンはステップ414に戻る。
【0206】
録画速度が「-5倍」に等しくない場合(ステップ428)、このサブルーチンは、録画速度が「-4倍」に等しいかどうかを判定する(ステップ432)。等しい場合、ステップ434が初期化され、変更されていない動画ストリームを通過させる。その後、このサブルーチンはステップ446に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ446の後、このサブルーチンはステップ414に戻る。
【0207】
録画速度が「-4倍」に等しくない場合(ステップ432)、このサブルーチンは、録画速度が「-3倍」に等しいかどうかを判定する(ステップ436)。等しい場合、ステップ438が初期化され、4フレームの1つ(1/4)をドロップする(ステップ438)。その後、このサブルーチンはステップ446に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ446の後、このサブルーチンはステップ414に戻る。
【0208】
録画速度が「-3倍」に等しくない場合(ステップ436)、このサブルーチンは、録画速度が「-2倍」に等しいかどうかを判定する(ステップ440)。等しい場合、ステップ442が初期化され、4フレームのうちの2フレーム(2/4)をドロップする(ステップ442)。その後、このサブルーチンはステップ446に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ446の後、このサブルーチンはステップ414に戻る。
【0209】
録画速度が「-2倍」に等しくない場合(ステップ440)、このサブルーチンは、「通常」に等しい録画速度のために、4フレームのうちの3フレーム(3/4)をドロップする(ステップ444)。その後、このサブルーチンはステップ446に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ446の後、このサブルーチンはステップ414に戻る。
【0210】
この一定の高録画fpsサブルーチン(120FPS)は、ステップ414で入力ストリームが開いていないと判定されるまで、ステップ416~446を含むループされたサブプロセスを含むことが理解できる。
【0211】
図18A及び図18Bを参照して、
図15の一定の高フレームレートサブルーチンに関連する一定の高録画fpsサブルーチン(240FPS)の例を説明する。この一定の高フレームレートサブルーチンは、スローモーションをシミュレートするために利用することができ、例えば、スローモーション範囲=録画速度/再生fps=240fps/30fps=8に限定される。
【0212】
このサブルーチンは、低速化サブルーチンからのコマンドによる開始応じて開始する(ステップ454)。開始後、このサブルーチンは、入力としてカメラから未処理の動画データストリームを取得する(ステップ456)。未処理の動画データストリームは、ステップ458のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0213】
未処理の動画データストリームの取得後、このサブルーチンのステップ460が開始され、このサブルーチンは、デバイスの録画フレームレートを、例えば、Recording_Frame_Rate=240fpsに設定する。その後、ステップ462は、デバイスの再生フレームレートを、例えば、Playback_Frame_Rate=30fpsに設定する。
【0214】
このサブルーチンのステップ464が開始され、カメラからの動画データ入力ストリームが開いているかどうかを判定する。ステップ464が、入力ストリームが開いていないと判定した場合、このサブルーチンはステップ498に進み、データを、
図15のステップ362の呼び出し関数に戻す。ステップ498は、RAMメモリおよび/または不揮発性長期メモリから動画/音声フレームのデータを受信することができる(ステップ500)。ステップ498が完了した後、このサブルーチンは停止または終了する(ステップ502)。
【0215】
ステップ464から入力ストリームが開いている間、このサブルーチンは録画速度が「-8倍」に等しいかどうかを判定する(ステップ466)。等しい場合、ステップ468が初期化され、変更されていない動画ストリームを通過させる。その後、このサブルーチンはステップ496に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ496の後、このサブルーチンはステップ464に戻る。
【0216】
録画速度が「-8倍」に等しくない場合(ステップ466)、このサブルーチンは、録画速度が「-7倍」に等しいかどうかを判定する(ステップ470)。等しい場合、ステップ472が初期化され、8フレーム毎に1フレーム(1/8)をドロップする。その後、このサブルーチンはステップ496に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ496の後、このサブルーチンはステップ464に戻る。
【0217】
録画速度が「-7倍」に等しくない場合(ステップ470)、このサブルーチンは、録画速度が「-6倍」に等しいかどうかを判定する(ステップ474)。等しい場合、ステップ476が初期化され、4フレーム毎に1フレーム(2/8)をドロップする。その後、このサブルーチンはステップ496に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ496の後、このサブルーチンはステップ464に戻る。
【0218】
録画速度が「-6倍」に等しくない場合(ステップ474)、このサブルーチンは、録画速度が「-5倍」に等しいかどうかを判定する(ステップ478)。等しい場合、ステップ480が初期化され、8フレーム毎に3フレーム(3/8)をドロップする。その後、このサブルーチンはステップ496に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ496の後、このサブルーチンはステップ464に戻る。
【0219】
録画速度が「-5倍」に等しくない場合(ステップ478)、このサブルーチンは、録画速度が「-4倍」に等しいかどうかを判定する(ステップ482)。等しい場合、ステップ484が初期化され、2フレーム毎に1フレーム(4/8)をドロップする。その後、このサブルーチンはステップ496に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ496の後、このサブルーチンはステップ464に戻る。
【0220】
録画速度が「-4倍」に等しくない場合(ステップ482)、このサブルーチンは、録画速度が「-3倍」に等しいかどうかを判定する(ステップ486)。等しい場合、ステップ488が初期化され、8フレーム毎に5フレーム(5/8)をドロップする。その後、このサブルーチンはステップ496に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ496の後、このサブルーチンはステップ464に戻る。
【0221】
録画速度が「-3倍」に等しくない場合(ステップ486)、このサブルーチンは、録画速度が「-2倍」に等しいかどうかを判定する(ステップ490)。等しい場合、ステップ492が初期化され、4フレーム毎に3フレーム(6/8)をドロップする。その後、このサブルーチンはステップ496に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ496の後、このサブルーチンはステップ464に戻る。
【0222】
録画速度が「-2倍」に等しくない場合(ステップ490)、このサブルーチンは8フレーム毎に7フレーム(7/8)をドロップする(ステップ494)。その後、このサブルーチンはステップ496に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ496の後、このサブルーチンはステップ464に戻る。
【0223】
この一定の高録画fpsサブルーチン(240FPS)は、ステップ464で入力ストリームが開いていないと判定されるまで、ステップ466~496を含むループされたサブプロセスを含むことが理解できる。
【0224】
図19A及び図19Bを参照して、
図15の一定の高フレームレートサブルーチンに関連する一定の高録画fpsサブルーチン(240FPS)におけるエクストリームスローモーションの例を説明する。この一定の高フレームレートサブルーチンは、極端なスローモーションをシミュレートするために利用することができ、例えば、-8倍から-128倍速のスローモーション範囲に限定される。
図19A及び図19Bのフレーム追加サブルーチンを有する一定の高録画FPSは、1秒あたりの高フレーム録画レート、「通常の」毎秒の再生フレーム、およびスローモーション特殊効果を高めるためのフレーム追加の組み合わせのための例示的なフローチャートアルゴリズムを示す。このサブルーチンは速度が≧-8倍と2の完全な倍数である場合を例示しており、-8倍よりも遅い速度は、
図18A及び図18Bに最も良く示されている。
【0225】
このサブルーチンは、低速化サブルーチンからのコマンドによる開始に応じて開始する(ステップ510)。開始後、このサブルーチンは、入力としてカメラから未処理の動画データストリームを取得する(ステップ512)。未処理の動画データストリームは、ステップ514のように、電子装置、カメラおよび/またはマイクからの音声/動画ストリームであってもよい。
【0226】
未処理の動画データストリームの取得後、このサブルーチンのステップ516が開始され、デバイスの録画フレームレートを、例えば、Recording Frame Rate=240fpsに設定する。その後、ステップ518は、デバイスの再生フレームレートを、例えば、Playback Frame Rate=30fpsに設定する。
【0227】
このサブルーチンのステップ520が開始され、カメラからの動画データ入力ストリームが開いているかどうかを判定する。ステップ520で入力ストリームが開いていないと判定された場合、このサブルーチンはステップ544に進み、データを、
図15のステップ358である呼び出し関数に戻す。ステップ544は、RAMメモリおよび/または不揮発性長期メモリから動画/音声フレームのデータを受信することができる(ステップ546)。ステップ544が完了した後、このサブルーチンは停止または終了する(ステップ548)。
【0228】
ステップ520から入力ストリームが開いている間に、このサブルーチンは、録画速度が「-8倍」に等しいかどうかを判定する(ステップ522)。等しい場合、ステップ524が初期化され、変更されていない動画ストリームを通過させる。その後、このサブルーチンはステップ542に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ542の後、このサブルーチンはステップ520に戻る。
【0229】
録画速度が「-8倍」に等しくない場合(ステップ522)、このサブルーチンは、録画速度が「-16倍」に等しいかどうかを判定する(ステップ526)。等しい場合、ステップ528が初期化され、
図3Dのように、各フレームを1回コピーして合計2つの同一フレームを得るか、または
図3Fのようにブレンドされたフレームを得る。その後、このサブルーチンはステップ542に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ542の後、このサブルーチンはステップ520に戻る。
【0230】
録画速度が「-16倍」に等しくない場合(ステップ526)、このサブルーチンは、録画速度が「-32倍」に等しいかどうかを判定する(ステップ530)。等しい場合、ステップ532が初期化され、
図3Eのように、各フレームを2回コピーして合計3つの同一のフレームを得るか、
図3Gのように、ブレンドされたフレームを得る。その後、このサブルーチンはステップ542に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ542の後、このサブルーチンはステップ520に戻る。
【0231】
録画速度が「-32倍」に等しくない場合(ステップ530)、このサブルーチンは、録画速度が「-64倍」に等しいかどうかを判定する(ステップ534)。等しい場合、ステップ536が初期化され、各フレームを4回コピーして合計5つの同一フレームを得るか、またはブレンドされたフレームを得る。その後、このサブルーチンはステップ542に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ542の後、このサブルーチンはステップ520に戻る。
【0232】
録画速度が「-64倍」に等しくない場合(ステップ534)、このサブルーチンは、録画速度が「-128倍」に等しいかどうかを判定する(ステップ538)。等しい場合、ステップ540が初期化され、各フレームが8回コピーされて合計9つの同一フレームを得るか、またはブレンドされたフレームを得る。その後、このサブルーチンはステップ542に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ542の後、このサブルーチンはステップ520に戻る。
【0233】
この一定の高録画fpsサブルーチン(240FPS)は、ステップ520で入力ストリームが開いていないと判定されるまで、ステップ520~542を含むループされたサブプロセスを含むことが理解できる。
【0234】
図20を参照して、セグメント時間圧縮および伸長サブルーチンの一例を説明される。このサブルーチンは、録画が停止した後の動画処理中に再生時間を高速化または低速化することによって、スローモーションおよびファストモーションのためのフローチャートアルゴリズムを提供するフレーム追加/ドロップは、スローモーションの特殊効果をシミュレートするために、時間圧縮/伸長アルゴリズムにおいて実行することができる。
【0235】
このアルゴリズム/サブルーチンで作成された動画ファイルは、すべての動画プレーヤで通常どおり再生でき、メタデータは必要ない。これは、本技術で作成された他の動画ファイルに代わるものである。
【0236】
このサブルーチンは、低速化サブルーチンからのコマンドによる開始に応じて開始する(ステップ550)。開始後、このサブルーチンは、入力としてカメラからの未処理の動画データストリームを取得する(ステップ552)。未処理の動画データストリームは、ステップ554のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0237】
未処理の動画データストリームの取得後、このサブルーチンのステップ556が開始され、デバイスの録画FPSが設定される。その後、ステップ558は、再生FPSを録画FPS以下(≦)に設定する。
【0238】
このサブルーチンのステップ560が開始され、カメラからの動画データ入力ストリームが開いているかどうかを判定する。ステップ560で、入力ストリームが開いていないと判定された場合、このサブルーチンはステップ576に進む。ステップ576は、RAMメモリおよび/または不揮発性長期メモリから動画/音声フレームのデータを受信することができる(ステップ578)。ステップ576が完了した後、このサブルーチンは停止または終了する(ステップ580)。
【0239】
ステップ560から入力ストリームが開いている間、このサブルーチンは速度が「通常」より遅いかどうかを判定する(ステップ562)。遅い場合、ステップ564が初期化され、動画セグメントfpsを、録画fpsを速度で割ったものに等しくなるように設定する(Segment FPS=Record_FPS/Speed)。その後、このサブルーチンはステップ574に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ574の後、このサブルーチンはステップ560に戻る。
【0240】
速度が「通常」よりも遅くない場合(ステップ562)、このサブルーチンは速度が「通常」と等しいかどうかを判定する(ステップ566)。等しい場合、ステップ568が初期化され、動画セグメントfpsが録画fpsに等しくなるように設定する(Segment FPS=Record_FPS)。その後、このサブルーチンはステップ574に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ574の後、このサブルーチンはステップ560に戻る。
【0241】
録画速度が「通常」と等しくない場合(ステップ566)、このサブルーチンは、速度が「通常」より速いかどうかを判定する(ステップ570)。速い場合、ステップ572が初期化され、動画セグメントfpsを、録画fpsに速度を掛けたものに等しくなるように設定する(Segment FPS=Record_FPS*Speed)。その後、このサブルーチンはステップ574に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ574の後、このサブルーチンはステップ560に戻る。
【0242】
このセグメント時間圧縮および伸長サブルーチンは、ステップ560で入力ストリームが開いていないと判定されるまで、ステップ560~574を含むループされたサブプロセスを含むことが理解できる。
【0243】
セグメント時間圧縮及び伸長サブルーチンの一例は、
図20のアルゴリズムの結果を示す
図21に最も良く示されている。上のバーは、動画セグメント582を連続録画における動画セグメント毎に秒単位で表している。動画セグメント582は、秒単位で、セグメント時間圧縮及び伸長サブルーチンによって処理される。セグメント582は、ユーザ/AIが速度変数を変更するときに生成される。時間の特殊効果は、未処理の動画セグメントに適用され、処理された動画ストリームRAMに書き込まれる。各セグメントは圧縮、伸張、または変更されない。その結果、再生動画セグメント584は、秒単位の録画セグメント時間に対応する、動画セグメント毎の秒単位で提供される。
図22を参照して、可変再生速度録画サブルーチンの一例が示されており、これは、録画中に再生フレームレートを高速化または低速化することによって、スローモーション及びファストモーションのためのフローチャートアルゴリズムを提供する。このアルゴリズムは、動画のメタデータに埋め込まれたファスト/スローモーションコマンドを使用して、通常の動画を作成することができる。メタデータは、動画録画においては表示されない動画ファイルに埋め込まれたデータである。
【0244】
このサブルーチンは、
図12の低速化サブルーチン(ステップ264)からのコマンドによる開始に応じて開始する(ステップ590)。開始後、このサブルーチンは、入力としてカメラから未処理の動画データストリームを取得する(ステップ592)。未処理の動画データストリームは、ステップ594のように、カメラおよび/またはマイクを含むローカル電子装置からの、カメラおよび/またはマイクを含むリモート装置からの、または他のオーディオ/ビデオフィードからの音声/動画ストリームであってもよい。
【0245】
未処理の動画データストリームの取得後、このサブルーチンのステップ596が開始され、装置の録画FPSが設定される。その後、ステップ598は、再生FPSを録画FPS以下(≦)に設定する。
【0246】
このサブルーチンのステップ600が開始され、カメラからの動画データ入力ストリームが開いているかどうかを判定する。ステップ600で、入力ストリームが開いていないと判定された場合、このサブルーチンはステップ616に進む。ステップ616は、RAMメモリおよび/または不揮発性長期メモリから動画/音声フレームのデータを受信することができる(ステップ618)。ステップ616が完了した後、このサブルーチンは停止または終了する(ステップ620)。
【0247】
ステップ600から入力ストリームが開いている間、このサブルーチンは速度が「通常」より遅いかどうかを判定する(ステップ602)。遅い場合、ステップ604が初期化され、セグメント再生fpsを、録画fpsをその動画セクションの速度で割ったものに等しくなるように設定する(Segment FPS=Record_FPS/Speed)。その後、このサブルーチンはステップ614に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ614の後、このサブルーチンはステップ600に戻る。
【0248】
速度が「通常」よりも遅くない場合(ステップ602)、このサブルーチンは速度が「通常」と等しいかどうかを判定する(ステップ606)。等しい場合、ステップ608が初期化され、セグメント再生fpsを、その動画セクションの録画fpsと等しくなるように設定する(Segment FPS=Record_FPS)。その後、このサブルーチンはステップ614に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ614の後、このサブルーチンはステップ600に戻る。
【0249】
録画速度が「通常」と等しくない場合(ステップ606)、このサブルーチンは、速度が「通常」より速いかどうかを判定する(ステップ610)。速い場合、ステップ612が初期化され、セグメント再生fpsを、その動画セクションの速度による録画fpsの倍数と等しくなるように設定する(Segment FPS=Record_FPS*Speed)。その後、このサブルーチンはステップ614に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ614の後、このサブルーチンはステップ600に戻る。
【0250】
このセグメント時間圧縮および伸長サブルーチンは、ステップ600で入力ストリームが開いていないと判定されるまで、ステップ600~614を含むループされたサブプロセスを含むことが理解できる。
【0251】
図23を参照して、可変再生速度再生サブルーチンの例が示されており、これは、動画再生中に再生フレームレートを高速化または低速化することによって、スローモーションおよびファストモーション特殊効果を有する動画ファイルを再生するためのフローチャートアルゴリズムを提供する。
図23のアルゴリズムを使用するアプリケーションは、
図20および
図21のアルゴリズムによって作成された動画を再生するために必要である。このアプリケーションは、メタデータおよび/または付随する「動画プロジェクトファイル」における情報をデコードし、動画の再生中に再生フレームレートに速度の高速化および低速化コマンドを適用できる必要がある。動画プロジェクトには、動画ファイルに加えて、実行される特殊効果コマンドを含む付随ファイルが含まれており、カスタムプレーヤーはリアルタイム再生でデコードして適用できる。
【0252】
互換性のないプレーヤで動画が再生される場合、メタデータの高速化および低速化の特殊効果コマンドは無視され、動画は同じ速度で連続的に再生される。
【0253】
このサブルーチンは、低速化サブルーチンからのコマンドによる開始に応じて開始する(ステップ622)。開始後、このサブルーチンは、入力として、装置のメモリに存在する動画プロジェクトファイルから未処理の動画データストリームを取得する(ステップ624)。未処理の動画データストリームは、ステップ626のように、電子装置からの動画プロジェクトファイル内の音声/動画ストリーム、またはリモート動画プロジェクトファイルであってもよい。
【0254】
未処理の動画データストリームの取得後、このサブルーチンのステップ628が開始され、動画のメタデータ、録画FPS、再生FPS、および可変再生ログを取得する。その後、ステップ630は、
図20から、時間特殊効果がセクションに適用された動画の各セクション毎の再生速度(Speed)を抽出する。
【0255】
このサブルーチンのステップ632が開始され、カメラからの動画データ入力ストリームが開いているかどうかを判定する。ステップ632で、入力ストリームが開いていないと判定された場合、このサブルーチンはステップ648に進む。ステップ648は、RAMメモリおよび/または不揮発性長期メモリから動画/音声フレームのデータを受信することができる(ステップ950)。ステップ648が完了した後、このサブルーチンは停止または終了する(ステップ652)。
【0256】
ステップ632から入力ストリームが開いている間、このサブルーチンは速度が「通常」より遅いかどうかを判定する(ステップ634)。遅い場合、ステップ636が初期化され、セグメント再生fpsを、録画fpsをその動画セクションの速度で割ったものに等しくなるように設定する(Segment FPS=Record_FPS/Speed)。その後、このサブルーチンはステップ646に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。次に、サブルーチンはステップ647に進み、RAMバッファからの音声/ビデオフィードを表示し、その後、ステップ632に進む。
【0257】
速度が「通常」より遅くない場合(ステップ634)、このサブルーチンは速度が「通常」と等しいかどうかを判定する(ステップ638)。等しい場合、ステップ340が初期化され、セグメント再生fpsをその動画セクションの録画fpsと等しくなるように設定する(Segment FPS=Record_FPS)。その後、このサブルーチンはステップ646に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ646の後、このサブルーチンはステップ632に戻る。
【0258】
録画速度が「通常」に等しくない場合(ステップ638)、このサブルーチンは速度が「通常」より速いかどうかを判定する(ステップ642)。速い場合、ステップ644が初期化され、セグメント再生fpsを、その動画セクションの速度による録画fpsの倍数と等しくなるように設定する(Segment FPS=Record_FPS*Speed)。その後、このサブルーチンはステップ646に進み、フレームをバッファ(RAMメモリおよび/または不揮発性長期メモリ)に書き込む。ステップ646の後、このサブルーチンはステップ647に進み、RAMバッファからの音声/動画(A/V)フィードを表示し、その後、ステップ632に戻る。
【0259】
このセグメント時間圧縮および伸長サブルーチンは、ステップ632で入力ストリームが開いていないと判定されるまで、ステップ632~647を含むループされたサブプロセスを含むことが理解できる。
【0260】
本技術を使用する可能な使用方法を
図24に示す。ユーザは、本技術のユーザインターフェースを利用して、アプリを実行することができるデバイス上でアプリケーションソフトウェア(App)を起動することができる。アプリは、画像構成画面で開くことができる。これはデフォルト設定であることができる。お気に入り設定または所定の設定は、ユーザが任意に選択することができる。装置設定が適用され、装置は準備完了状態になるが、任意で画像構成画面のままになる。
【0261】
ユーザは、装置のカメラ、リモートカメラ、またはリモート動画ストリームを利用して、Appまたはユーザインターフェースに関連する「録画」アイコンにタッチするか、またはそれを起動することによって、録画を開始することができる。任意で、ユーザは録画アイコンまたはボタンをタッチし続けて、録画を続けることができる。1つの態様は、アイコンまたはアイコンに関連付けられたボタンをアニメーション化して、ライブ録画がアクティブであることを示すことができる。
【0262】
録画中に、ユーザは、ズームインまたはズームアウトの特殊効果コマンドを入力することができる。装置によって表示されている動画は、その動画に関連するズームインまたはズームアウトの特殊効果をリアルタイムで表示するように構成される、または構成することができる。
【0263】
録画中に、ユーザはスローモーションおよび/またはファストモーションを作成するために、特殊効果コマンドを入力することができる。1つの態様は、装置上のライブ動画の表示速度に違いが出ない。
【0264】
ユーザは、録画アイコンまたはボタンのタッチを離すか、外すことにより、録画を終了することができる。その後、アプリは録画を停止し、「レビュー」画面を表示し、特殊効果の処理を完了し、処理された動画を保存または自動保存するオプションを提供する。
【0265】
保存後、処理が完了した後、新たに作成された動画は、装置またはリモート装置によって見ることができる。動画は連続して再生することができ、終了後に再開することができる。このアプリは、未処理または処理された動画をさらに編集または修正するために利用できる一連の編集ツールを提供することができる。任意で、スローモーションやファストモーション、その他のカスタムデザイン要素を微調整して動画を編集し、動画を投稿することができる。この処理は、所望の動画結果が得られるまで繰り返すことができる。
【0266】
このアプリは、動画内の新たな要素の処理を完了し、各編集の完了後にユーザに再生される。この処理は、所望の動画結果が得られるまで繰り返すことができる。
【0267】
動画の処理および/または動画の追加編集が完了すると、アプリは、最終的な動画を保存または編集することができる。アプリは、最終的な動画を装置の内部メモリ、外部メモリ、および/またはクラウドに保存することができる。
【0268】
このアプリは、ユーザが最終動画をソーシャルメディアプラットフォームに投稿することを可能にするオプションをさらに提供することができる。アプリは、最終的な動画を追加のプラットフォームやクラウドにアップロードし、ユーザが新しい動画の録画を開始できるように構成画面を表示することができる。いくつかの実施形態において、アプリは、装置のユーザが、アプリ内のストーリーやソーシャルメディアページに動画を投稿したり、インスタグラム(登録商標)、フェイスブック(登録商標)、ツイッター(登録商標)などの外部の他のソーシャルメディアアプリに共有することを可能にする。
【0269】
図25を参照して、インターフェース30の少なくとも一部を説明する。インターフェース30は、装置に最適化されたパラメータまたは変数のための画面を提供することができるGUIインターフェースであってもよいが、これに限定されない。GUI30は、画面上の任意の場所に設けられた録画開始/停止コントローラ32と、カメラ12からの未処理の動画データ内のフレームを操作するために使用されるデフォルトまたは所定のフレームレート速度を提供することができる、画面上の任意の場所に設けられた速度選択領域34とを含むように構成される、または構成することができる。速度選択領域34は、ユーザによる制御を介して速度選択領域34に沿って移動して、現在の速度または選択可能な速度を示すことができる速度制御インジケータ35を含むことができる。GUIインターフェース30はまた、ズーム36、ズームおよびファストモーション速度レート38、および/またはズームおよびスローモーション速度レート40を制御するための画面上の任意の領域を含むことができる。別の例では、GUIインターフェース30は、ユーザがマルチタッチジェスチャを使用してすばやくズームインおよびズームアウトし、それに応じて「ズーム倍率」が上下に調整される、「ピンチ-トゥ-ズーム」操作を使用する機能をユーザに提供することができる。
【0270】
いくつかの実施形態では、ユーザは、開始/停止コントローラ32をタッチ、および/または長押しして、カメラの録画機能を開始、停止、または一時停止することができる。さらに、ユーザは、指またはスタイラスのような装置で領域に触れ、領域に沿って任意の方向にスライドすることによって、速度選択領域34とやりとりすることができる。処理ユニットは、このスライド動作を特殊効果入力コマンドとして解釈するように構成される、または構成することができる。例えば、速度選択領域34の中心エリアから右側にスライドすると、スライド動作が速度選択領域34上をどれだけ右側に移動するかによって、速度レートをネイティブ速度レートからネイティブ速度レートの2倍、3倍、4倍、「n」倍に変更することができる。速度選択領域34の中心エリアから左側にスライドすると、スライド動作が速度選択領域34上をどれだけ左側に移動するかによって、ネイティブ速度レートからネイティブ速度レートの-2倍、-3倍、-4倍、-「n」倍に変更することができる。
【0271】
いくつかの実施形態では、ユーザがGUIの下側領域から上側領域に向かって上下にスライド動作をすることによって、カメラズーム機能を制御することができる。ユーザはさらに、ズームとファストモーションまたはスローモーション効果が必要かどうかに応じて、GUIの下側領域から右上または左上領域に向かってカーブする上下方向のスライド動作を行うことによって、ズームと速度レートとの組み合わせを制御することができる。
【0272】
あるいは、GUIインターフェース30は、カメラおよび/またはディスプレイの機能、属性、動作、設定、および/または特性を制御することができる領域、アイコン、またはウィンドウを含むように構成される、または構成することができる。これらの機能、属性、動作、設定、および/または特性の例としては、フラッシュ、ハンズフリー、タイマ、ミュート、セルフィー、ブロードキャスト、共有、フィルタ、メディア、録画の停止/開始などであるが、これらに限定されない。GUIインターフェース30は、未処理の動画の速度レートの最小値、最大値、または範囲をプリセットするために使用されるように構成される、または構成することができる。
【0273】
さらに、任意で、GUIインターフェース30は、動画データストリームに編集オプションを提供する領域、アイコンまたはウィンドウを含むように構成される、または構成することができる。編集オプションは、テキストの追加、図面の追加、サウンドの追加、フェイスフィルタ、装飾の追加、ビデオループの作成、カバーの追加などを含むことができるが、これらに限定されない。
【0274】
GUIインターフェース30は、未処理の動画データおよび/または修正された動画データであることができる出力動画録画データの表示を含むように構成または構成することができ、または編集された動画データストリームを表示することができる。GUIインターフェース30によって表示される出力動画録画データは、入力の変化によってリアルタイムで動的に変化できることが理解できる。したがって、本技術は、カメラが動画を取得している間、および録画中に、未処理の動画データ、任意の数の修正された動画データまたはそのサブセット間のシームレスな遷移をリアルタイムで表示することができる。修正された動画データは、任意の数の高速から低速のモーションサブセットを含むことができ、これらのサブセットは、未処理の動画データのサブセットと組み合わせることができる。未処理の動画データおよび/または任意の数の修正された動画データの表示は、カメラが未処理の動画データに関連する画像を撮影しているときに、ライブまたはリアルタイムで達成される。本技術は、カメラが画像を撮影し、出力動画がメモリに書き込まれている間に、表示された出力動画データをレンダリングすることができることが理解できる。その結果、ユーザはカメラを動かしたり、パンしたり、ズームしたりしながら動画を撮影することができ、同時に、未処理の動画データに任意の数の特殊効果を適用して表示することができる。
【0275】
使用時に、ユーザは、本技術のソフトウェアアプリケーションを含むか、または操作可能に関連付けられた電子装置を使用してカメラ操作を開始することができ、またはユーザは、カメラと操作可能に関連付けられた本技術のソフトウェアアプリケーションを使用してカメラ操作を開始することができることが理解できる。
【0276】
本技術のソフトウェアアプリケーションを操作すると、本技術のソフトウェアアプリケーションおよび/またはカメラの機能を制御するためのユーザインターフェースがユーザに提供される。
【0277】
ユーザは、インターフェースを使用してカメラの録画機能を開始することができる。このとき、本技術のソフトウェアアプリケーションは、マイクまたは周辺機器のマイクに関連付けることができる、カメラまたはリモートビデオフィードから任意の未処理の動画データを受信する。この動作の間、カメラおよび/またはマイクからの未処理の動画データは、通常はカメラから未処理のデータを受信するメモリユニットの代わりに、本技術のソフトウェアアプリケーションに転送される。
【0278】
インターフェースは、カメラから受信した未処理の動画データの録画速度レートを制御するために、ユーザからの単純な入力を提供する。例示的な目的のために、インターフェース上のユーザによるこの入力は、タッチスクリーンの一部を横切る動き、またはタッチスクリーンの一部に加えられる圧力であることもできる。この入力は、限定はしないが、カーソルの移動、音声コマンド、アイコンの起動、スイッチまたはボタンの操作、画面上のジェスチャ、超低周波装置など、さまざまな形態で入力することができることを理解されたい。
【0279】
ユーザが速度レートを変更するための入力を提供しない場合、カメラからの未処理の動画データが表示され、メモリに書き込まれる。
【0280】
いくつかの実施形態では、ユーザが「ワンタッチ」モードを利用して、動画の時間を操作することができる。このモードでは、画面に触れることによって録画動作を開始することができ、画面から指を離すと、録画動作が停止する。あるいは、画面をタッチしている間、録画動作が行われる。例示的な操作としては、動画の時間を遅くする、タッチしている指の画面の中央よりも左への移動、動画の時間を通常速度に戻す、タッチしている指の画面の中央への移動、動画の時間を速くする、タッチしている指の画面の中央よりも左右への移動、タッチしている指の左端から右端まで(またはその逆)の素早い移動、ズームイン(望遠)操作を開始する、タッチしている指の上への移動、ズームアウト(広角)操作を開始する、タッチしている指の下への移動、および録画中、画面上に指を置いたまま、もう一方の指で、限定されるわけではないが、フラッシュ、ミュートなどの他の設定をライブで個別に調整すること、が含まれる。
【0281】
さらに、いくつかの実施形態では、録画されている動画がユーザインターフェースに示されている間、ユーザが、ユーザインターフェースを介して機能を個別に選択することを可能にする「マルチプルタッチ」モードを含むことができる。
【0282】
いくつかの実施形態では、ユーザが、速度マーカまたはインジケータ35をタップするか、または速度選択領域34上に配置された所望の速度位置にインジケータ35をスライドさせる「ハンズフリー」モードを利用することができる。
【0283】
さらに、「ハンドオン」モードを利用することもでき、例えば、ユーザが、「録画」ボタン32を押したままにしながら、指を左にスライドさせると、この例では、ボタンが「-2倍」アフォーダンスラベルの上に垂直に位置するように、ボタンがユーザの指の真下にある。速度インジケータ35は、「録画」ボタン32の動きに追従するように、速度選択領域34に沿って自動的に移動することができることを理解することができる。したがって、「ハンドオン」モードでは、「録画」ボタンの動きに応じて、速度選択領域34に位置する速度インジケータ35が移動することが理解できる。
【0284】
あるいは、ユーザが速度レートを変更するための入力を提供する場合、未処理の動画データは、本技術のソフトウェアアプリケーションおよびその関連アルゴリズムを使用してリアルタイムで処理される。未処理の動画データは1つまたは複数のフレームを含み、これらのフレームは、ユーザが入力した速度レートに対応する最終的な動画データストリームを作成するために処理される。
【0285】
これは、修正された動画データストリームを作成するために、本技術のソフトウェアアプリケーションを利用して達成される。この修正された動画データストリームは、未処理の動画データから特定のフレームをドロップすることにより、または特定のフレームをコピーして、コピーされたフレームを元のフレームに隣接して追加することにより、または2つの参照フレーム間に1つまたは複数のフレームを補間する「フレームブレンド」によって、作成することができる。ドロップされたフレームまたは追加されたフレームの数は、本技術のソフトウェアアプリケーションによって決定され、所望の速度レートが達成されるまで繰り返される。
【0286】
次に、本技術のソフトウェアアプリケーションは、未処理の動画データまたは修正された動画データストリームをメモリに書き込むことができ、それによって、表示されるべき動画を、通常速度レート、ファストモーション速度レート、またはスローモーション速度レートで提供することができる。
【0287】
動画の速度レートはメモリに書き込んだ後に変更されず、それによって、特殊効果の有無にかかわらず、リアルタイムで動画を録画し、動画速度レートを変更するためのポストプロダクション編集の必要性を省略することができることを理解されたい。
【0288】
本技術は、アルゴリズムが動画データストリームのよりスムーズな時間修正を生成するように構成される、または構成することができる。例えば、ユーザがある速度から別の速度にジャンプするときに、アルゴリズムは、動画ギャップを埋めることができる。アルゴリズムは、2つ以上のデータポイント間でデータを補間することができるため、例えば、-3倍の速度から4倍の速度に変化するときに、さらにより滑らかにすることができる。
【0289】
再生中、動画は非常に急激になることがる。これをアルゴリズムで補正し、動画を滑らかにすることで、各特殊効果の開始への移行時、各特殊効果中、および特殊効果から通常時間への移行時など、アクティブなスポーツイベントにおいて特別な瞬間(ピークモーメント)を撮影するときに、ユーザが動き回ったり、必要に応じてカメラをパンする際に、より高い解像度で視聴者の体験を向上させることができる。
【0290】
例えば、動画撮影されている対象がジャンプしたとき、上向きの勢いはなくなったが、まだ落下し始めていない瞬間が、「ピークモーメント」にあたる。人工知能(AI)を利用して、録画中のシーンのアクションの「ピークモーメント」を算出し、「ピークモーメント」の少し前と少し後にスローモーションを使用するなど、予め設定した所望のアクションを実行することができる。
【0291】
本技術は、カメラ上のGoPro(登録商標)のようなアクションカメラ、デジタル一眼レフカメラ、ミラーレスカメラ、プロレベルの動画機器、ジンバル、三脚、カメラ上のリモートトリガーフラッシュライト、アイグラスカメラ、ドローン、ウェブカメラなど、あらゆるカメラ機器に組み込むことができる。本技術は、リモコンに組み込まれ、Bluetooth(登録商標)または他のプロトコルを介して、本技術が組み込まれていない既存の電子機器に接続することができる。
【0292】
本技術のユーザインターフェースは、3Dまたは2Dで表現することができる。ユーザは、電子装置のタッチスクリーン上で、指またはスタイラスを1つの動作面で左右にスライドさせることができる。3Dユーザインターフェースでは、電子装置は、ユーザのコントローラの深さの変化、ユーザが加えている圧力の量を感知し、特殊効果を適切に調整することができる。ジョイスティックは、本技術で使用および利用することができる。
【0293】
ユーザインターフェースは感圧式であってもよく、ユーザが装置をより強くまたはより弱く押すことで、装置はこれらを、早送り及びスローモーション特殊効果を用いて再生速度を変更するための制御として解釈する。
【0294】
本技術により、十分に高いフレーム/秒での録画が可能になり、結果として得られる「未処理の」編集されていない動画(特殊効果を適用せずに録画された動画)を録画後に編集することができ、また、遅い再生fpsに対して高い録画フレームレートがサポートするため、スローモーションは、滑らかなままである。
【0295】
脳波感知装置、埋め込み式または表面取り付け装置、または無線リモートセンシングを本技術と共に利用して、時間速度の特殊効果を思考で直接制御できることを理解されたい。
【0296】
圧縮技術を本技術と共に利用して、より高いフレームレートでの録画を改善し、より細かな風景録画や、ファイルサイズの縮小が可能になる。装置の性能は改善され、したがって、ユーザはより高いフレームレートで録画が可能になり、ファイルサイズを縮小しながら、より詳細な風景を録画することができる。
【0297】
音声処理アルゴリズムを本技術と共に利用して、シーンが高速化及び低速化するセグメント中に、動画に最も明瞭で理解しやすい音声を提供することができる。Dolby Labs、DTS、Inc.、Fraunhofer Institut、Philips、Technicolor、IMAX、Sonyなどのサードパーティ企業のAPIを利用して音声処理を行うことができる。
【0298】
データ暗号化アルゴリズムを本技術と共に利用して、動画の安全な伝送と保存を提供することができる。
【0299】
暗号化およびブロックチェーン技術アルゴリズムを本技術と共に利用して、本技術を用いて作成された動画のオリジナルコンテンツ制作者を記録するための分散型台帳を作成することができる。動画にアクセスするには、アクセス許可を得るために暗号化されたトークンを「交換」する必要がある。
【0300】
リアルタイム動画特殊効果システムおよび方法の実施形態を詳細に説明してきたが、これらに対する修正および変形が可能であり、それらのすべてが本技術の真の精神および範囲内にあることは明らかであろう。以上の記載に関して、本技術の部品の最適な寸法関係が寸法、材料、形状、形態、機能および動作、組立および使用方法のバリエーションを含むように、当業者には容易に明白かつ自明であると見なされ、図面に図示され明細書に記載されているものと同等の関係はすべて、本技術によって包含されることが意図されていることを理解されたい。例えば、上述したものに代えて、任意の適切な丈夫な材料を使用することができる。また、録画中の録画に特殊効果を生成することについて説明したが、本明細書で説明したリアルタイム動画特殊効果システムおよび方法は、フレーム属性の変更、録画フレームレートの変更、再生フレームレートの変更、および時間圧縮および伸長、ならびに任意のデータストリームに関連する他のリアルタイム特殊効果にも適していることを理解されたい。
【0301】
したがって、上述の内容は、本技術の原理の例示にすぎないと考えられる。さらに、多数の修正および変更が当業者には容易に想起されるため、本技術を図示および説明した正確な構成および操作に限定することは望ましくなく、したがって、本技術の範囲内にあるすべての適切な修正および等価物に頼ることができる。