Powershell Script for FFMpeg and FFProbe - 02/05/2018 11:33 EDT

1. Checks to see if latest ffmpeg for Windows 10 64-bit is installed.

2. If ffmpeg not installed or not most current, download and install the latest version.

3. User specifies location or locations of videos to analyze and convert. (could just be variables in script or prompt the user with location(s) selected last time)

4. Script finds all videos that are not already in optimal format (x265 or hevc codec in an .mp4 container, with reasonably low bitrates for audio and video) and orders them from largest to smallest files so that the videos with the largest file size are converted first.

5. Optimal videos are videos that:

- Use the .mp4 container

- Are encoded using x265 or hevc (hevc_nvenc) codec

- Maintain the best quality audio streams available (AAC, AC3, DTS...)

- If the video or audio bitrate is ridiculously high, reduce to something more reasonable

- Maintain all subtitles found in the original video

- Retain chapter markers

- Set the hvc1 video tag to make the Apple TV happy

- Set the fast start atom (unless this is a bad idea...)

- rename the file so that any reference to h264 x264 or the previous codec, are replaced with h265

- I've been experimenting with basic parameters like this but do not claim to know what is truly best for this type of conversion: $ffmpegParams = '-loglevel error -i "{0}" -c:v hevc_nvenc -tag:v hvc1 -preset slow -acodec copy -c:s mov_text -movflags +faststart -hide_banner "{1}"' -f $src, $newSrc;

6. Ensure that ffmpeg uses the hevc_nvenc codec to maximize the speed of conversion, but set the preset to slow and ensure it is Main 10 profile

7. After conversion (saving the new video to the same directory as the source file), double check that the resulting movie is of the same duration, dimensions and contains the relevant audio, video, and subtitle tracks that are expected

8. If the file conversion is successful, delete the original file

9. Rename any other .jpg, .nfo, .sub such files that matched the name of the original file, to the new file name

Additional features:

Leveraging powershell's parallel function or something similar, keep two ffmpeg conversion threads going at all times to maximize utilization of the system as the GTX 1080 card can handle 2 hevc_nvenc threads at the same time.

I look to you as the developer to make recommendation to suggest a more optimal solution beyond what I am literally asking for if you what I am asking for is not perhaps the right way to look at this challenge.

I'm asking for powershell because I'd like the ability to examine the code, tweak it over time, and easily customize it in the future using the foundation of what you develop. I've looked at and tried dozens of the open source, as well as paid solutions to this challenge, but find under Windows 10 the quality of most to be lacking severely in small, but significant ways. StaxRip is great, MyFFmpeg is good. I've always been a HUGE fan of HandBrake (and more specifically HandBrakeCLI), and have used various wrapper scripts I've found on GitHub, but none are as simple, effective, and easy to update and tweak as I would like.

Skills: C++ Programming, Mac OS, Powershell, Python, Shell Script

See more: php upload script ffmpeg, hyper wmi powershell script power, powershell script add user, windows script ffmpeg, script ffmpeg aspnet upload videos, create multiple users powershell script, powershell script create account, powershell script create multiple users, powershell script users creation, exchange 2007 powershell script, tube upload script ffmpeg, powershell script add users excel file, script ffmpeg dedicated server, script ffmpeg, php clone youtube script ffmpeg

About the Employer:
( 0 reviews ) Slovakia

Project ID: #16864571

1 freelancer is bidding on average $155 for this job


Hey I'm interested I'm a System and Network Engineer I had done many projects using Power Shell I can help

$155 USD in 3 days
(6 Reviews)