{"id":19129643,"url":"https://github.com/almostengr/videoprocessor","last_synced_at":"2025-05-06T00:31:52.334Z","repository":{"id":39640736,"uuid":"182200861","full_name":"almostengr/videoprocessor","owner":"almostengr","description":"Application that renders videos using FFMPEG for my content platforms","archived":false,"fork":false,"pushed_at":"2025-02-03T00:39:35.000Z","size":8609,"stargazers_count":5,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T12:42:45.415Z","etag":null,"topics":["automation","content-creation","content-creator","ffmpeg","kdenlive","linux","render-videos","ubuntu","video","video-editing","video-processing","video-render","video-renderer","video-rendering","youtube","youtuber"],"latest_commit_sha":null,"homepage":"https://thealmostengineer.com/projects/video-processor-application/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/almostengr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-04-19T04:22:30.000Z","updated_at":"2025-02-03T00:39:38.000Z","dependencies_parsed_at":"2023-11-06T04:22:35.060Z","dependency_job_id":"c10e0deb-c7b3-4ed9-a6a4-51f3a264bcb0","html_url":"https://github.com/almostengr/videoprocessor","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almostengr%2Fvideoprocessor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almostengr%2Fvideoprocessor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almostengr%2Fvideoprocessor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almostengr%2Fvideoprocessor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/almostengr","download_url":"https://codeload.github.com/almostengr/videoprocessor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252598203,"owners_count":21774221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","content-creation","content-creator","ffmpeg","kdenlive","linux","render-videos","ubuntu","video","video-editing","video-processing","video-render","video-renderer","video-rendering","youtube","youtuber"],"created_at":"2024-11-09T06:08:02.276Z","updated_at":"2025-05-06T00:31:52.315Z","avatar_url":"https://github.com/almostengr.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Video Processor\n\n## Purpose\n\nAsk any content creator and they will tell you that creating videos is a time consuming process.\nFor me, the most mundane and worse part of the process is waiting on the videos to render and waiting on\nthe uploads to complete.\n\nSome video editors, have a version of their software that can be ran on a server to render the video files\ncreated. By offloading the video rendering to another machine, you can edit more videos in less time.\n\nPurpose of this script is to automate the video creation process. Videos that I post on my various content\nplatforms have a predefined structure for each video type. Thus they are easy to automate. When additional\ncontent or on screen text needs to be displayed, the automation for that particular channel is modified\naccordingly.\n\n## My YouTube Channels\n\n* [Dash Cam Channel](https://www.youtube.com/channel/UCB7rvymUaUbbig3skv2zvCQ?sub_confirmation=1)\n* [Home Improvement Channel](https://www.youtube.com/channel/UC4HCouBLtXD1j1U_17aBqig?sub_confirmation=1)\n* [Technology Channel](http://www.youtube.com/channel/UC4xp-TEEIAL-4XtMVvfRaQw?sub_confirmation=1)\n\n## Video Schedule By Channel\n\n* Kenny Ram Dash Cam - on Monday, Wednesdays, and Fridays\n* Robinson Handy and Technology Services - on Saturdays\n* Tech Talk with RHT Services - on Tuesdays, sometimes Thursdays\n\n## References\n\n* https://filme.imyfone.com/video-editing-tips/how-to-merge-or-combine-videos-using-ffmpeg/\n* https://stackoverflow.com/questions/44280903/ffmpeg-vaapi-and-drawtext\n* https://trac.ffmpeg.org/wiki/Hardware/VAAPI\n* https://stackoverflow.com/questions/7333232/how-to-concatenate-two-mp4-files-using-ffmpeg\n\n## Crontab Command\n\nCommand below to render videos on a schedule.\n\n```bash\n5 0-5 * * * /home/almostengr/videoprocessor/source/videoprocessor.sh\n```\n\nCommand will run 5 minutes after the hour between the hours of midnight (00:05) and 05:05. This time was selected\nas it is the time that I would be using the computer. Thus the work I would be doing would not be slowed\ndown by the rendering process and visa versa.\n\n## Additional FFMPEG Commands\n\nOccasionally, there are some additional FFMPEG commands that I need to run to create the videos\nthat I desire to have. Since the commands are rarely used, I chose to not add the functionality\nthat uses these commands into the script, but instead note them here for future reference.\n\n### Timelapse Video Without Audio\n\n```bash\nffmpeg -i FILE0710.MOV -filter:v \"setpts=0.5*PTS\" -an FILE0710.timelapse.MOV\n```\n\n### Create Video without Audio\n\n```bash\nffmpeg -i out165.mov -an -c:v copy uncut165.mp4\n```\n\n### Scale Video Resolution\n\n```bash\nffmpeg -i out165.mov -an -vf scale=1920:1080 scaled165.mov\n```\n\n### Concat Video Timelapse Files\n\n```bash\nfor file in *MP4\ndo\necho \"file $file\" \u003e\u003e input.txt\ndone\n\nffmpeg -f concat -i input.txt -c:v copy output.mp4\n```\n\n### Create Video With Image Files\n\n```bash\nffmpeg -framerate 1/3 -pattern_type glob -i '*.jpg' -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4\n```\n\n### Add Music To Video\n\n```bash\nfmpeg -i 20230401_110000.mp4 -i ../../../ytvideostructure/07music/mix03.mp3 -shortest -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 output.mp4\n```\n\n### Convert Variable Rate Video To Constant Rate Video\n\n```bash\nffmpeg -i input.mp4 -vf \"setpts=1.0*PTS\" -r 30 -c:v libx264 -crf 18 -c:a aac -b:a 192k output.mp4\n```\n\n### Normalize Audio\n\n```bash\nffmpeg -y  -i input.mp4 -f lavfi -i anullsrc -vcodec copy -acodec aac -shortest output.mp3\n```\n\n### Rotate Video Clip\n\n```bash\nffmpeg -i in.mov -vf \"transpose=1\" out.mov\n```\n\nFor the transpose parameter you can pass:\n\n* 0 = 90° counterclockwise and vertical flip (default)\n* 1 = 90° clockwise\n* 2 = 90° counterclockwise\n* 3 = 90° clockwise and vertical flip\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falmostengr%2Fvideoprocessor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falmostengr%2Fvideoprocessor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falmostengr%2Fvideoprocessor/lists"}