Multi episode file splitter and renamer.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
MediaSplitter
.gitignore
LICENSE
MediaSplitter.sln
README.md

README.md

MediaSplitter

This was written because I was frustrated with how my Plex Server would read a single file if it had multiple episodes in it.

For example If I had a file named S01E01-E02 New Squid on the Block + Down the Drain.m4v there is 2 episodes in this one file. Plex using the TheTvDb to get metadata for the episodes would show that file as 2 episodes. However when you chose to play episode 2 it would start at the beginning of episode 1 and you would have to scrub to episode 2 most of the time.

Not only does it split the episode it will do its best to rename it based on the original files name. The episode S01E01-E02 New Squid on the Block + Down the Drain.m4v will get split into 2 files named S01E01 New Squid on the Block.m4v and S01E02 Down the Drain.m4v.

I am sure there are failures to be found though. I ran it on three seasons of Rocket Power and it successfully split majority of them. Some would split just after the second episodes title because of some edge cases with Black Screen Detection. Here is the settings I used when I split the 3 seasons.

MediaSpliter.exe /Media="C:\Users\Administrator\Videos\Rocket Power\Season 1" /Extensions=.m4v /StartRange=00:11:00 /EndRange=00:12:00

Since all of my episodes ended somewhere between 11 and 12 minutes, I told it to just look there.

Arguments

/Media

This is always required, it doesn't matter if it is a folder or a single file, it will still split the files. If it is a folder it will scan non-recursively in the folder specified.

  // Folder
  /Media="C:\Users\Administrator\Videos"
  
  // Single File
  /Media="C:\Users\Administrator\Videos\S01E01-E02 New Squid on the Block + Down the Drain.m4v"

/Extensions

If the /Media argument is specified, it will look for these extensions. If /Media is a single file it will ignore this argument. Every extension should be seperated by a command for it to be properly recognized.

  /Extensions=.m4v,.avi

/Debug

Pauses after every file is split. Used for attaching debugger as well as slowing down the processes and being able to see the results easier per file.

  /Debug

/BlackDuration

The minimum detected black duration (in seconds). FFmpeg Setting.

  /BlackDuration=(Default)0.08

/BlackThreshold

Threshold for considering a picture as "Black" (in percent). FFmpeg Setting.

  /BlackThreshold=(Default)0.08

/BlackPixelLuminance

Threshold for considering a picture as "Black" (in percent). FFmpeg Setting.

  /BlackPixelLuminance=(Default)0.12

/CutTime

If specified it will ignore any Black Screen Detection settings and just cut the file/files at the exact time specified. Parses string to a TimeSpan.

  // Will cut at exactly 10 seconds.
  /CutTime=00:00:10

  // Will cut at exactly 11 minutes.
  /CutTime=00:11:00

/StartRange

If specified and is splitting using Black Screen Detection will only get black screens that are greater than the StartRange. Parses string to a TimeSpan. (Both StartRange and EndRange needs to be specified)

  // Will only get black screens above 11 minutes.
  /StartRange=00:11:00

/EndRange

If specified and is splitting using Black Screen Detection will only get black screens that are less than the EndRange. Parses string to a TimeSpan. (Both StartRange and EndRange needs to be specified)

  // Will only get black screens below 12 minutes.
  /StartRange=00:12:00

For the StartRange and EndRange examples it will get all black screens between the time frame of 11 and 12 minutes.