Code Monkey home page Code Monkey logo

docker-transcodeautomation's Introduction

TheTaylorLee

I have worked in multiple roles supporting business IT infrastructures. These collection of repositories are tools that I have created and can be shared publicly.

TheTaylorLee's GitHub stats

AdminToolbox

The Admintoolbox repository is a collection of PowerShell modules and tools. The following modules are included.

- ActiveDirectory   - EndpointManagement  - Exchange         - FFTools 
- FileManagement    - FortiWizard         - Fun              - Networking
- MSGraph           - Office365           - Remoting         - VmwareAutomate

PSPortable

This presents a portable PowerShell 7 package with multiple included modules. It can be downloaded using a single command and used right away. The idea behind this is you can maintain the same PowerShell environment across many servers with change tracking.

Docker-TranscodeAutomation

This is a container image that provides a fully automated workflow for transcoding media. It uses ffmpeg, allows for some customizations, and provides statistics that can be presented in a dashboard like grafana.

docker-transcodeautomation's People

Contributors

thetaylorlee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

mdnoyanred

docker-transcodeautomation's Issues

Bug: Transcode process running despite failed transcodes

Environment

  • Image Tag/Build: 2.19.0

Describe the bug
Move-FileToMediaFolder should only run if there are no failed transcodes sitting in the process folder. However at some point the process to check and prevent more transcodes after a fail was written out of the process. This needs corrected.

Additionally the rest of the process needs reviewed to ensure more processing doesn't occur post failure.

Bug: Failed file moves need error handling

Environment

  • Image Tag/Build: 2.10.1

Describe the bug
Sometimes Move-FileToMediaFolder function will fail. The cause is not tracked, but I think it likely happens because sometimes a copy job can be interrupted. This will result in the target file not existing and erroring out.

Expected behavior
To either have the copy job fail or build in some error handling for this specific scenario.

Logs

Get-ChildItem: /docker-transcodeautomation/functions/Move-FileToMediaFolder.ps1:52
Line |
  52 |              $oldsizemb = (Get-ChildItem $destination.fullname | Selec …
     |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | Cannot find path '/media/Shows/filename.mkv' because it does not exist.

Get-ChildItem: /docker-transcodeautomation/functions/Move-FileToMediaFolder.ps1:52
Line |
  52 |              $oldsizemb = (Get-ChildItem $destination.fullname | Selec …
     |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | Cannot find path '/media/m4/Shows/filename.mkv' because it does not exist.

Write-Output Verbosity

2.6.0 Correct sleep time write-output to always display correctly by using a variable.

Review output statements and -verbose for possible changes. Should produce helpful troubleshooting information such as verbose file moves and moving files to the backup folder statements.

Process already transcoded files script

Need to add instructions in the readme for updating metadata of files transcoded by other methods prior to implementing this solution. A simple script that can be run the first time based on a variable and once removed is no longer run.

That script should simply update metadata and make no other changes.

Use Include not exclude

Review all get-childitem functions and update it to use include on specific extensions instead of exclude. Then update the readme on Github and Dockerhub.

Any non-media file that is not in these excluded extensions should not be saved in your media directories. ".txt", ".srt", ".md", ".jpg", ".jpeg", ".bat", ".png", ".idx", ".sub", ".SQLite"

Feature: Database Maintenance

Feature Target Details

Consider adding a scheduled run for update-processed.

Why is this change needed?
This would help to ensure the database is updated for previously renamed or deleted files on a semi-regular basis. This shouldn't run too often due to the time needed to run the function and the added disk operations, but once a week seems sensible.

Additional context
Track last run in a new database table. This will provide a history and allow for checking if it's time for a new run.

Update-Database.ps1 script file should be leveraged to insert the table.

Additionally shrinking the database might be considered at this time.

Feature: FFProbe Stats

Feature Target Details

Considering adding a SQL table that stores probed media data. Would need to decide what to store in the database.

  • Languages
  • Audio format
  • video format
  • subtitles
  • etc

Why is this change needed?
This would provide interesting information regarding the overall stored media. Data could then be leveraged to produce additional grafana stat views.

Feature: Implement CI/CD Workflow

Feature Target Details

Now that ghcr is used consider implementing workflows.

  • Might use branch name as a variable to version tag published image
  • Should publish release branches on branch merge
  • Dev images should release prior to branch merge. Will have to consider the action trigger

Custom ffmpeg parameters

Using an external file mapped as a volume would allow using custom ffmpeg parameters.

If this option is added it needs to be stated to keep the transcode comment parameter. 2 option routes would be added to the readme. Example could be provided like below.

ffmpeg -i $video -metadata COMMENT="transcoded" <Custom parameters here> -stats_period 60 "$env:FFToolsTarget$video"
  • Some validation would be useful to check that the piped variables and static parameters are included.
  • The readme can link back to an example file or display the example in a codeblock.

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.