[FFmpeg-user] ffmpeg script

Shaun Nixon nixon.shaun73 at gmail.com
Thu Feb 8 15:13:08 EET 2018


thanks, appreciate the help Steve:
I am at work at present and will try your suggestions when i get home
tonight; however, does this seem to make sense.

Two scripts  1) has the ' *find <directory> -iname '*.ts' -type f -execdir
/path/to/script.sh "{}" \;*'  data and calls script.sh.
                     2) script.sh

can i modify script.sh to include multiple '*then*' statements?
e.g.

script.sh
#! /bin/bash
if [ ! -e lock ];
then touch lock;
if ffmpeg -y -i "$1" -vf scale=-1:720 -c:v libx264 -crf 23 -preset
ultrafast -c:a copy $(basename "$i" .ts) "$i.mp4";
*then*
* ccextractor "$x" -o "$y".srt  *
then
rm "$1";
fi

is this likely to be a solution that will scan entire multimedia hdd (if i
put in correct path by find statement) and then ffmpeg the .ts to .mp4 then
extract closed caption info, then remove the .ts files?

shaun


On Wed, Feb 7, 2018 at 10:44 PM, Steve Boyer <steveboyer85 at gmail.com> wrote:

> On Wed, Feb 7, 2018 at 9:24 PM, Steve Boyer <steveboyer85 at gmail.com>
> wrote:
>
> >
> > On Feb 7, 2018 6:37 PM, "Shaun Nixon" <nixon.shaun73 at gmail.com> wrote:
> >
> > i am working on an FFmpeg Bash script in linux.
> > I am currently using HD Homerun which downloads ,TS files or transport
> > stream which is a container with an mpeg2 inside with a closed caption
> > steam for the subtitles.  Plex media server will not recognize the closed
> > caption though VLC will.
> >
> > my solution to date is to shrink the .ts file using ffmpeg and then
> extract
> > the subtitle using ccextract.
> >
> > at present I run a bash script in each folder containing .ts files, but
> > would like one I can run from the main directory that would look in all
> sub
> > directories find .ts files remux them to mp4, extract the closed caption
> > stream to .srt and then remove the .ts files.
> >
> > so far i have the following script.  Steven Penny from Stack Exchange
> > contributed code and i added in the ffmpeg and ccextract lines:
> >
> > #! /bin/bash
> >  for x in *.ts
> > do
> >   y=$(basename "$x" .ts)
> >   ffmpeg -i "$x" -vf scale=-1:720 -c:v libx264 -crf 23 -preset ultrafast
> > -c:a copy "$y".mp4
> >   ccextractor "$x" -o "$y".srt
> > done
> >
> >
> > This works well if I run it in a directory.  I would like to add to it
> > though and maybe have something like a
> > Find . -name *.ts
> > statement or some way for it to look in all folders on multimedia hdd for
> > .ts files and then do the For Loop but am unsure how.
> >
> >
> > Couple of suggestions:
> > 1) tweak the script so it takes in an argument - the .ts file name that
> > does the FFmpeg command and other programs. Generalize it.
> > 2) instead of doing a for loop, do a "find . -iname '*.ts' -type f
> > -execdir scriptname {} \+"
> >
> > This will find all filenames that end (case insensitive) with .ts, and
> > execute your script on it.
> >
> >
> > I also want to add something like
> > rm /s *.ts
> > but am unsure if this will work or where to add it after the For Loop.
> > Would it need a [wait] statement after [done] on the last line.
> >
> >
> > Another suggestion I've used in the past is FFmpeg returns 0 if
> > successfully. In the script, have the if statement it checks be the
> FFmpeg
> > command. If no problem, it returns 0 (if I recall correctly). Check this
> > value and delete if you want. Give me a bit and I have an automatic DVD
> > creation script I can copy and paste a section from.
> >
>
> NOTE: I'VE NOT EXECUTED THESE TONIGHT - MIGHT NOT WORK OR MIGHT NEED A FEW
> TWEAKS
>
> script.sh:
>
> if [ ! -e lock ];
> then touch lock;
> if ffmpeg -y -i "$1" <options here> $(basename "$i" .ts) "$i.mp4";
> then
> rm "$1";
> fi
>
> Not at that box ATM (pulled script from my github repo), but should be able
> to be invoked via
> find <directory> -iname '*.ts' -type f -execdir /path/to/script.sh "{}" \;
>
> I actually have that running as a crobjob that is ran every second. And the
> "find" command actually ends in \+ for my use, which is really the wrong
> way to do a find -execdir. Is it glamorous? no. Is there better way to
> write it? yes. Have I taken the time to figure out if I can just use the \;
> instead of \+? Nope - it is working, I ain't fixing it.
>
> Steve
>
>
> > any advice on writing a bash script that would search for .ts files,
> > convert them to mp4, and then remove the .ts files would be greatly
> > appreciated.
> >
> > -shaun
> >
> >
> > Steve
> >
> > _______________________________________________
> > ffmpeg-user mailing list
> > ffmpeg-user at ffmpeg.org
> > http://ffmpeg.org/mailman/listinfo/ffmpeg-user
> >
> > To unsubscribe, visit link above, or email
> > ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
> >
> >
> >
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
>


More information about the ffmpeg-user mailing list