Giter Site home page Giter Site logo

ike62k / rife-gui-python Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 904.61 MB

RIFE-ncnn-VulkanのPythonGUIアプリケーション A desktop GUI-based App with PySimpleGUI for RIFE-ncnn-Vulkan(+FFmpeg)

License: MIT License

Python 99.93% Batchfile 0.07%
pysimplegui python rife rife-ncnn-vulkan

rife-gui-python's Introduction

RIFE-GUI-Python

copyright 2023 びろーど(Veludo)

RIFE-ncnn-Vulkanによる補完処理、並びにFFmpegによる動画から画像への変換、画像から動画への変換をGUIで操作できるようにしたソフトウェアです。 This software enables GUI-based operation of the interpolation process by RIFE-ncnn-Vulkan, as well as video-to-image and image-to-video conversion by FFmpeg.

このREADMEはVersion 2.2以降のためにに書かれたものです。Version 2.1以前との互換性はありません。 This README is written for Version 2.2 or later; it is not compatible with Version 2.1 or earlier.

はじめに

このソフトウェアは趣味の一環として作成されたものです。本ソフトウェアを使用したいかなる結果についても作者は責任を負いません。
このソフトウェアはMIT LICENSEにて提供されています。MIT LICENSEは添付しているLICENSEを参照してください。
本ソフトウェアはffmpeg及びffprobeを使用しています。使用しているのはLGPL版であり、動的リンクでの使用としているため本ソフトウェア自体はMIT LICENSEにて公開しています。
ffmpeg及びffprobeのライセンスは(root)\libs\ffmpeg\LICENSE_for_FFmpegを参照してください。
RIFE-ncnn-Vulkanのライセンスは(root)\libs\rife_ncnn_vulkan\LICENSE_for_RIFE-ncnn-Vulkanを参照してください。

動作(確認済み)環境

  • windows10 or windows11 64bit
  • Python 3.12(以前のVerでも動く可能性はあります※未検証)
  • PySimpleGUI
  • 画像デコードで使うためCPUパワーがあると処理が早くなります
  • RIFEの処理、エンコード等で使うためIntel,AMD,NVIDIAのdGPUがあると処理が早くなります

使用させていただいているソフトウェア

どんなソフトウェア?

映像の前後コマから間のコマを生成するソフトウェアRIFE-ncnn-Vulkanをより便利に活用するためのソフトウェアです。
FFmpegとRIFE-ncnn-Vulkanを組み合わせて、元動画を2^n倍補完したものを生成します。
動作にはWindows環境とそこで動作するPython、外部ライブラリであるPySimpleGUIが必要です。
Pythonの基本ライブラリとして以下のライブラリを使用しています。

  • os
  • glob
  • shutil
  • subprocess
  • configparser

お好みのFFmpeg,FFProbeビルドを代わりに使用することも可能です。(ライセンスにはご注意ください)

使用出来る元動画ファイル

  • お使いのFFmpegにて映像streamを画像へとエンコードできるもの
  • 音声streamが含まれているもの(今後のアップデートで音声を含まない動画にも対応予定)
  • 元映像総フレーム数が2~であるもの
  • 完成後総フレームが~1000000000であるもの(元映像総フレーム × 2^補完回数)
  • 映像が極度に低ビットレートでないもの(効果が薄れます)
  • ファイル名及びファイルパスに (半角スペース)、拡張子以外の.(ピリオド)がないもの

使い方

起動手順

  1. Pythonをインストールします
  2. PySimpleGUIをインストールします
  3. 本プロジェクトのReleaseよりソースコードをインストールします
  4. ルートフォルダ内AppStart.batを実行、もしくはルートフォルダでシェルを起動しPython.exe -m RIFE_GUI_Pythonを実行します

アプリケーションの操作方法

本ソフトウェアはPySimpleGUIによるGUIとなっています。
入力ファイル、設定値、出力ファイル名を指定して開始を押すと処理が開始されます。

各種設定について

本ソフトウェアでは、ユーザーごとの環境に合わせて柔軟に設定を操作できるよう、configファイルを設定しています。
全てのconfigファイルは(root)\config内に存在します。
一切configファイルに手を付けなくても動作しますが、できるだけ環境に合わせてconfigファイルを変更することをおすすめします。
ソフトウェアを起動した際の初期値としてconfigファイル内の設定値が反映されます。
これを使用することで普段使う設定を簡単に呼び出すことができます。
一度ソフトウェアを起動するとconfigファイルを書き換えても内容は変わりません
configファイルの位置を変更、および位置を指定している項目の値を変えることは推奨されません。

共通

  • configファイルは[DEFAULT]セクションと[USER]セクションによって構成されています。
  • [USER]値が空(None)の場合、ソフトウェアは[DEFAULT]セクションの値を参照します。
  • [USER]値が空(None)でない場合、ソフトウェアは[USER]セクションの値を参照します。
  • 自分自身で設定をする場合は[USER]セクションの値のみを書きかえることを推奨します。
  • [USER]セクションに[DEFAULT]セクションと同様に key = valueの形で項目を書き込みます
  • valueの前後のスペースは無視されます。 例) A = hogeA=hogeは同値です A = hoge fugaA = hogefugaは同値ではありません

config.ini

App.py起動用のconfigです。基本的には触らなくて大丈夫です。

  • pyrife_ncnn_vulkan_config 下記pyrife_ncnn_vulkan.iniの場所を指定します。
  • pyffmpeg_config 下記pyffmpeg.iniの場所を指定します
  • このファイルは動かさないようにしてください(ソフトウェアがが全configを認識できなくなります)

pyrife_ncnn_vulkan.ini

RIFE-ncnn-Vulkan用のconfigです。

  • input_folder RIFEが処理する対象となる、補完処理前のフレームのあるフォルダを指定します。
  • output_folder RIFEが処理したあとの、補完処理後のフレーム出力先フォルダを指定します。
  • output_extension RIFEが処理したフレームのファイル形式を指定します。
  • rifeexe RIFE-ncnn-Vulkan.exeの場所を指定します。
  • rifever RIFEの補完に使用するモデルのバージョンを指定します。
  • rifeusage RIFEの動作スレッド数を指定します。(多いとメモリ使用量が増えます)
  • rifegpu RIFEが使用するGPUのナンバーを指定します。(-1でCPU処理)
  • times 補完回数を指定します。(1→2倍,2→4倍,3→8倍...) 2^nで処理時間が増えます。数値は小さめにすることを推奨します

pyffmpeg.ini

FFmpeg用のconfigです。

  • input_file 補完処理を行う元動画を指定します。
  • input_folder RIFEの補完処理が完了したあとのフレームが存在するフォルダを指定します。
  • output_folder RIFEに渡す、補完処理前のフレーム出力先フォルダを指定します。
  • conplete_folder 前処理が完了して完成した動画を出力するフォルダを指定します。
  • ffmpegexe FFmpeg.exeの場所を指定します。
  • ffprobeexe FFprobe.exeの場所を指定します。
  • image_extension RIFEに渡す、補完処理前のフレームのファイル形式を指定します。
  • video_extension 完成した動画のファイル形式を指定します。
  • option FFmpegのoptionを指定します。動画のコーデック、画質などを指定します。

注意事項

  • FFmpeg,FFprobe,RIFE-ncnn-Vulkanは全て実行ファイルをsubprocessで呼び出しています。 その際に、shell=Trueを使用しています。設定値にシェルがコマンドと誤認識する値があると、シェルインジェクションなどの危険性があります。
  • 著作権で保護された映像の加工及び公開は法律に反する場合があります。作者は責任を負いかねますので、使用方法にはお気をつけください。
  • 動作中は大量の画像フレームが生成される場合があります。特にPNG形式ではFHD画質で1フレームあたり4MBほどのサイズとなります。一時ファイルは基本的にルートフォルダに生成されますので、保存先となるドライブには十分な空きをお持ちください。

FFmpegを自分で作成したビルド等に置き換える

本ソフトウェアはFFmpeg.exeとFFprobe.exeを動的に動作させているため、差し替えが可能です。
(root)\libs\ffmpeg\ffmpeg.exeを差し替えると使用するFFmpegを変更することができます。
(root)\libs\ffmpeg\ffprobe.exeを差し替えると使用するFFprobeを変更することできます。
FFmpegは元動画のデコード、および補完後動画のエンコードが可能なビルドに変更してください。
FFprobeは元動画の情報を解析できるビルドに変更してください。

今アップデートで追加された内容

  • ファイル構成の見直し
  • (前バージョンより可能でしたが)非整数値の動画ファイルの処理に対応

既知の不具合

  • 音声streamを含まない動画が処理できない問題

修正及び機能追加予定

  • 音声streamを含まない動画への対応
  • 2^n倍の処理とするのではなく、整数倍に指定して処理が可能になるように変更

rife-gui-python's People

Contributors

ike62k avatar

Stargazers

 avatar

Watchers

 avatar

rife-gui-python's Issues

Ratio:4 4倍処理の実装

2倍処理×2によって一気に4倍処理をするメソッドをPyRIFE-ncnn-Vulkan.pyに実装

  • メソッドの作成
  • READMEの更新

Delete older fIles

正式リリースに向けた不必要なファイルの削除、整理

  • 不必要なファイルの削除/不可視化

App.pyの改善

仮App状態のApp.pyをより自由度の高いCUIアプリにする

  • App上からのパラメーターの確認,変更ができるようにする

Version2.xに向けた再設計

当時の順繰り型のコードをオブジェクト指向的コードに書き換えて今後の作業を行いやすくする

大規模なリファクタリング(というより再作成)を行う

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.