From 5a98d148900b487449ae1e83e466a78da0fcff32 Mon Sep 17 00:00:00 2001 From: happycola233 <91878264+happycola233@users.noreply.github.com> Date: Thu, 18 Jul 2024 11:49:47 +0800 Subject: [PATCH] add --- README.md | 2 + README_EN.md | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 README_EN.md diff --git a/README.md b/README.md index f599de3..fff6030 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +
🇨🇳 中文简体 | 🇬🇧 English
+ # VideoHybridizer——视频 “杂交” 器 VideoHybridizer 是一个功能强大的工具,可以将两个视频流的帧交替排列,生成一个新的 120 fps 视频。 diff --git a/README_EN.md b/README_EN.md new file mode 100644 index 0000000..a9193e0 --- /dev/null +++ b/README_EN.md @@ -0,0 +1,105 @@ +🇨🇳 中文简体 | 🇬🇧 English
+ +# VideoHybridizer + +VideoHybridizer is a powerful tool that interleaves frames from two video streams to generate a new video at 120 fps. + +You can upload the synthesized video created with this program to online video platforms (such as Bilibili, a well-known video platform in China), then adjust the quality (different frame rates) to see completely different visuals! + +Currently, this program supports **Windows 7 and above, 64-bit** operating systems. + +![Screenshot](res/PixPin_2024-07-16_10-41-55.png) + +> [!TIP] +> This program features: +> +> - **Multiple Format Support**: Supports various input and output video formats such as MP4, AVI, MOV, MKV, WMV, etc. +> - **Custom Bitrate Support**: Allows custom bitrate settings for video compression. +> - **Intuitive User Interface**: Has a user-friendly graphical interface (GUI) for ease of use. +> - **Real-time Progress Display**: Shows real-time progress of video processing. +> - **Log Tracking**: Logs detailed processing information for user reference. + +> [!NOTE] +> Consider the following when using this program: +> +> 1. Ensure that both videos to be processed have the same resolution. +> 2. If the lengths of the videos differ, excess frames from the longer video will be discarded after synthesis. +> 3. After clicking the "Start Synthesis" button, the program converts both videos to 60 fps first, then uses [frame interleaving strategy](#operational-principle) to synthesize a video at 120 fps. +> 4. Currently, this program processes only video frames, so the synthesized video will be without sound. If needed, you can manually add audio using other software. + +## Operational Principle + +Let An denote the nth frame from video A, and Bn denote the nth frame from video B. + +**Video A (60 fps):** + +| A1 | A2 | A3 | A4 | ... | +| -------------- | -------------- | -------------- | -------------- | ------------- | + +**Video B (60 fps):** + +| B1 | B2 | B3 | B4 | ... | +| -------------- | -------------- | -------------- | -------------- | ------------- | + +**Synthesized Video (120 fps):** + +| A1 | B1 | A2 | B2 | A3 | B3 | A4 | B4 | ... | +| -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | ------------- | + +## FAQs + +### Why do I see a black console window when running the program, and can I close it? + +No, you cannot close it! Closing the console window will terminate the program. The appearance of the black console window is because by default, the Python interpreter opens a console window to display standard output and error messages when running scripts. + +### The program seems stuck after clicking "Start Synthesis." What should I do? + +First, ensure that the input video formats are supported by the program and that the videos play correctly. Avoid using very large videos or videos with non-standard formats. + +### What does the synthesized video look like when selecting different frame rates on Bilibili? + +- Choosing **60 fps** quality (available only to premium members and for certain videos) retains the 1st and 3rd frames from each set of 4 frames in the synthesized video, i.e., A1, A2, A3, A4, etc. +- Choosing **30 fps** quality retains the 2nd frame from each set of 4 frames in the synthesized video, i.e., B1, B3, B5, B7, etc. + +Thus, different frame rate qualities on Bilibili show completely different visuals. + +### How can I see the hybrid effect locally? + +1. Set your device's screen refresh rate to 60 Hz. +2. Open the video multiple times; you should see frames from video A sometimes and frames from video B at other times. + +You might experience screen flickering during playback due to: + +1. Occasional flickering is normal as video players may not render frames perfectly stable. +2. Your device might not have enough resources to render frames at the same rate as playback, causing frame misalignment. + +Solution: Change devices (~~bushi~~), check the "Compression" option in the program to reduce video bitrate and lighten device load. + +### Can future versions add sound to the synthesized video, using video A's sound for the left channel and video B's sound for the right channel? + +This is a great idea, but currently, we do not have plans to develop this feature. If you can code a solution for this feature, feel free to submit a Pull Request. + +## Contribution + +We welcome suggestions and contributions to this project. Please submit issues or Pull Requests to this repository! + +If you wish to further develop on the source code, you will need: + +1. Required Software: + +- Python 3.x +- pip (Python package manager) + +2. Install libraries: + +```bash +pip install opencv-python moviepy pywin32 +``` + +## License + +This project is licensed under the [MIT License](LICENSE). + +## ⭐ Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=happycola233/VideoHybridizer&type=Date)](https://star-history.com/#happycola233/VideoHybridizer&Date) \ No newline at end of file