video-montage


Namevideo-montage JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/tylerlum/video_montage
SummaryEasily create a video montage (either a sequence or a grid of videos)
upload_time2024-04-09 04:22:27
maintainerNone
docs_urlNone
authorTyler Lum
requires_pythonNone
licenseNone
keywords python video montage grid sequence
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # video_montage

Easily create a video montage (either a sequence or a grid of videos)

# Installing

Install:

```
pip install video_montage
```

# Usage

Before running, you must have a prepare an input video folder with videos the following structure, eg.

```
<INPUT_VIDEO_FOLDER_PATH>
├── <video1>.mp4
├── <video2>.mp4
└── ...
```

`video_grid_montage`: Create a grid of videos (all playing at the same time)

```

video_grid_montage --help

usage: video_grid_montage --input_video_folder_path INPUT_VIDEO_FOLDER_PATH
                          [--output_video_folder_path OUTPUT_VIDEO_FOLDER_PATH]
                          [--output_video_filename OUTPUT_VIDEO_FILENAME]
                          [--max_n_videos MAX_N_VIDEOS]
                          [--max_duration_seconds MAX_DURATION_SECONDS]
                          [--fps FPS] [--num_per_row NUM_PER_ROW]
                          [--overlay_filename] [-h]

optional arguments:
  --input_video_folder_path INPUT_VIDEO_FOLDER_PATH
                        (Path, required)
  --output_video_folder_path OUTPUT_VIDEO_FOLDER_PATH
                        (Path, default=.)
  --output_video_filename OUTPUT_VIDEO_FILENAME
                        (str, default=2023-10-20_00-16-32_video_grid_montage.mp4)
  --max_n_videos MAX_N_VIDEOS
                        (Union[int, NoneType], default=None)
  --max_duration_seconds MAX_DURATION_SECONDS
                        (Union[int, NoneType], default=None)
  --fps FPS             (Union[int, NoneType], default=None)
  --num_per_row NUM_PER_ROW
                        (Union[int, NoneType], default=None)
  --overlay_filename    (bool, default=False)
  -h, --help            show this help message and exit
```

`video_sequence_montage`: Create a sequence of videos (playing one at a time sequentially)

```
video_sequence_montage --help

usage: video_sequence_montage --input_video_folder_path INPUT_VIDEO_FOLDER_PATH
                              [--output_video_folder_path OUTPUT_VIDEO_FOLDER_PATH]
                              [--output_video_filename OUTPUT_VIDEO_FILENAME]
                              [--max_n_videos MAX_N_VIDEOS] [--fps FPS]
                              [--overlay_filename] [-h]

optional arguments:
  --input_video_folder_path INPUT_VIDEO_FOLDER_PATH
                        (Path, required)
  --output_video_folder_path OUTPUT_VIDEO_FOLDER_PATH
                        (Path, default=.)
  --output_video_filename OUTPUT_VIDEO_FILENAME
                        (str, default=2023-10-20_00-17-06_video_sequence_montage.mp4)
  --max_n_videos MAX_N_VIDEOS
                        (Union[int, NoneType], default=None)
  --fps FPS             (Union[int, NoneType], default=None)
  --overlay_filename    (bool, default=False)
  -h, --help            show this help message and exit
```

# Example Usage

```
(video_montage_env) ➜  video_montage git:(main) ✗ tree openai_rubiks_cube 

openai_rubiks_cube
├── 2023-10-07_20-04-36_openai_rubiks_cube.gif
├── 2023-10-07_20-05-13_openai_rubiks_cube.gif
├── 2023-10-07_20-05-48_openai_rubiks_cube.gif
├── 2023-10-07_20-07-27_openai_rubiks_cube.gif
├── 2023-10-07_20-08-02_openai_rubiks_cube.gif
└── 2023-10-07_20-11-18_openai_rubiks_cube.gif

0 directories, 6 files
(video_montage_env) ➜  video_montage git:(main) ✗ video_grid_montage --input_video_folder_path openai_rubiks_cube
Moviepy - Building video 2023-10-07_20-16-08_video_grid_montage.mp4.
Moviepy - Writing video 2023-10-07_20-16-08_video_grid_montage.mp4

Moviepy - Done !
Moviepy - video ready 2023-10-07_20-16-08_video_grid_montage.mp4
```

![example_video_montage](https://github.com/tylerlum/video_montage/assets/26510814/7cd94a59-efe1-4b2b-bfc8-0aa6254d8bd7)

You can also add the `--overlay_filename` argument to add the clip's filename to each video clip.



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/tylerlum/video_montage",
    "name": "video-montage",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "python, video, montage, grid, sequence",
    "author": "Tyler Lum",
    "author_email": "tylergwlum@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e4/f3/d3968516dd5680a5ccddfd671375be8cfbbaf8ca7a49bec79c17a030c35a/video_montage-0.1.0.tar.gz",
    "platform": null,
    "description": "# video_montage\n\nEasily create a video montage (either a sequence or a grid of videos)\n\n# Installing\n\nInstall:\n\n```\npip install video_montage\n```\n\n# Usage\n\nBefore running, you must have a prepare an input video folder with videos the following structure, eg.\n\n```\n<INPUT_VIDEO_FOLDER_PATH>\n\u251c\u2500\u2500 <video1>.mp4\n\u251c\u2500\u2500 <video2>.mp4\n\u2514\u2500\u2500 ...\n```\n\n`video_grid_montage`: Create a grid of videos (all playing at the same time)\n\n```\n\nvideo_grid_montage --help\n\nusage: video_grid_montage --input_video_folder_path INPUT_VIDEO_FOLDER_PATH\n                          [--output_video_folder_path OUTPUT_VIDEO_FOLDER_PATH]\n                          [--output_video_filename OUTPUT_VIDEO_FILENAME]\n                          [--max_n_videos MAX_N_VIDEOS]\n                          [--max_duration_seconds MAX_DURATION_SECONDS]\n                          [--fps FPS] [--num_per_row NUM_PER_ROW]\n                          [--overlay_filename] [-h]\n\noptional arguments:\n  --input_video_folder_path INPUT_VIDEO_FOLDER_PATH\n                        (Path, required)\n  --output_video_folder_path OUTPUT_VIDEO_FOLDER_PATH\n                        (Path, default=.)\n  --output_video_filename OUTPUT_VIDEO_FILENAME\n                        (str, default=2023-10-20_00-16-32_video_grid_montage.mp4)\n  --max_n_videos MAX_N_VIDEOS\n                        (Union[int, NoneType], default=None)\n  --max_duration_seconds MAX_DURATION_SECONDS\n                        (Union[int, NoneType], default=None)\n  --fps FPS             (Union[int, NoneType], default=None)\n  --num_per_row NUM_PER_ROW\n                        (Union[int, NoneType], default=None)\n  --overlay_filename    (bool, default=False)\n  -h, --help            show this help message and exit\n```\n\n`video_sequence_montage`: Create a sequence of videos (playing one at a time sequentially)\n\n```\nvideo_sequence_montage --help\n\nusage: video_sequence_montage --input_video_folder_path INPUT_VIDEO_FOLDER_PATH\n                              [--output_video_folder_path OUTPUT_VIDEO_FOLDER_PATH]\n                              [--output_video_filename OUTPUT_VIDEO_FILENAME]\n                              [--max_n_videos MAX_N_VIDEOS] [--fps FPS]\n                              [--overlay_filename] [-h]\n\noptional arguments:\n  --input_video_folder_path INPUT_VIDEO_FOLDER_PATH\n                        (Path, required)\n  --output_video_folder_path OUTPUT_VIDEO_FOLDER_PATH\n                        (Path, default=.)\n  --output_video_filename OUTPUT_VIDEO_FILENAME\n                        (str, default=2023-10-20_00-17-06_video_sequence_montage.mp4)\n  --max_n_videos MAX_N_VIDEOS\n                        (Union[int, NoneType], default=None)\n  --fps FPS             (Union[int, NoneType], default=None)\n  --overlay_filename    (bool, default=False)\n  -h, --help            show this help message and exit\n```\n\n# Example Usage\n\n```\n(video_montage_env) \u279c  video_montage git:(main) \u2717 tree openai_rubiks_cube \n\nopenai_rubiks_cube\n\u251c\u2500\u2500 2023-10-07_20-04-36_openai_rubiks_cube.gif\n\u251c\u2500\u2500 2023-10-07_20-05-13_openai_rubiks_cube.gif\n\u251c\u2500\u2500 2023-10-07_20-05-48_openai_rubiks_cube.gif\n\u251c\u2500\u2500 2023-10-07_20-07-27_openai_rubiks_cube.gif\n\u251c\u2500\u2500 2023-10-07_20-08-02_openai_rubiks_cube.gif\n\u2514\u2500\u2500 2023-10-07_20-11-18_openai_rubiks_cube.gif\n\n0 directories, 6 files\n(video_montage_env) \u279c  video_montage git:(main) \u2717 video_grid_montage --input_video_folder_path openai_rubiks_cube\nMoviepy - Building video 2023-10-07_20-16-08_video_grid_montage.mp4.\nMoviepy - Writing video 2023-10-07_20-16-08_video_grid_montage.mp4\n\nMoviepy - Done !\nMoviepy - video ready 2023-10-07_20-16-08_video_grid_montage.mp4\n```\n\n![example_video_montage](https://github.com/tylerlum/video_montage/assets/26510814/7cd94a59-efe1-4b2b-bfc8-0aa6254d8bd7)\n\nYou can also add the `--overlay_filename` argument to add the clip's filename to each video clip.\n\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Easily create a video montage (either a sequence or a grid of videos)",
    "version": "0.1.0",
    "project_urls": {
        "Homepage": "https://github.com/tylerlum/video_montage"
    },
    "split_keywords": [
        "python",
        " video",
        " montage",
        " grid",
        " sequence"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f078c00fc662a3398a24eb0113cb083f276ff13a8f67146c8af82e2b43eb7f79",
                "md5": "9f3f12f7c2a42ffe44f4e440c001ae04",
                "sha256": "4f4a2459db1ed119c6a9156a58de8fdfaa8de4c1e21729e9d731eb208ef6f84b"
            },
            "downloads": -1,
            "filename": "video_montage-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9f3f12f7c2a42ffe44f4e440c001ae04",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 6440,
            "upload_time": "2024-04-09T04:22:26",
            "upload_time_iso_8601": "2024-04-09T04:22:26.272974Z",
            "url": "https://files.pythonhosted.org/packages/f0/78/c00fc662a3398a24eb0113cb083f276ff13a8f67146c8af82e2b43eb7f79/video_montage-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e4f3d3968516dd5680a5ccddfd671375be8cfbbaf8ca7a49bec79c17a030c35a",
                "md5": "3af1f114ca752b0992f75310d9c42c46",
                "sha256": "eebe14efd80b0cb3c6ecba281a437d66b5afc7f4a4a6086d292504dba37200cf"
            },
            "downloads": -1,
            "filename": "video_montage-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3af1f114ca752b0992f75310d9c42c46",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 4593,
            "upload_time": "2024-04-09T04:22:27",
            "upload_time_iso_8601": "2024-04-09T04:22:27.788314Z",
            "url": "https://files.pythonhosted.org/packages/e4/f3/d3968516dd5680a5ccddfd671375be8cfbbaf8ca7a49bec79c17a030c35a/video_montage-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-09 04:22:27",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tylerlum",
    "github_project": "video_montage",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "video-montage"
}
        
Elapsed time: 0.47459s