Fertiges Script zum automatischen Encoden!

Network Attached Storage
gerrison
Beiträge: 2
Registriert: Montag 5. März 2007, 23:47

Fertiges Script zum automatischen Encoden!

Beitrag von gerrison »

Moin,

ich habe ein kleines script geschrieben, welches alle 5 minuten als cronjob läuft, periodisch nach MPEG-TS aufnahmen scanned, die über einen nfs mount von der dbox auf einem linux rechner abgelegt werden und diese automatisch ins mpeg4/divx/xvid format encoded.
Die encoder-einstellungen sind auf meine bedürfnisse (PPC-Format) optimiert und müssten individuell angepasst werden.
Mit dem verwendeten programm mencoder ist die umwandlung in ziemlich alle formate möglich

Voraussetzungen:
Separater Linux Rechner mit NFS mount auf die DBOX2
mencoder zum encoden der files

Cron:

Code: Alles auswählen

*/5 * * * * /path/to/script.sh
Anregungen / Erweiterungen / Modifikationen erwünscht

Code: Alles auswählen

#!/bin/sh
#
# script for encoding MPEG-TS Videos streamed from the dbox to nfs
#
# Version 0.1
#
#
############## Variables ##############
MENCODER=/usr/bin/mencoder
SCALE=320:240
ABITRATE=96
# NFSPATH HAS TO END WITH /
NFSPATH=/home/nfs/
OUTPUTEXTENSION=.avi
#######################################

# check for mencoder binary
if [ ! -r $MENCODER ]; then
#    echo "mencoder not found... exiting!"
    exit
fi

# list oldest file and exit if no file exists
FILE=`ls -t $NFSPATH | awk /^.+\.ts$/ | tail -n1`

if [ -z $FILE ]; then
#    echo "No files to process... exiting!"
    exit
fi

# set output name
OUTPUTFILE=$FILE$OUTPUTEXTENSION

# check for oputput file
if [ -r $NFSPATH$OUTPUTFILE ]; then
#    echo "$OUTPUTFILE already exists... exiting"
    exit
fi

# compare file size and exit if file is still growing
SIZE1=`du $NFSPATH$FILE | awk '{print $1'}`
sleep 5
SIZE2=`du $NFSPATH$FILE | awk '{print $1'}`

if [ $SIZE1 != $SIZE2 ]; then
#    echo "File not finished yet... exiting"
    exit
fi

# encode file
$MENCODER "$NFSPATH$FILE" -vf pp=ci,scale=$SCALE -ovc lavc -ffourcc DX50 -oac lavc -lavcopts \ vbitrate=500:acodec=mp3:abitrate=$ABITRATE -o $NFSPATH$OUTPUTFILE >/dev/null 2>&1

# check for oputput file
if [ ! -r $NFSPATH$OUTPUTFILE ]; then
#    echo "$OUTPUTFILE dos not exist... exiting"
    exit
fi

# delete input file
rm -f $NFSPATH$FILE
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

mhhh - die sachen die ich "zum aufheben" streame schneide ich aber vorher. Das was nur zeitversetzt geschaut wird bleibt TS :gruebel: Wo guckst Du Dir die encodeten Streams dann an?
---------------------------
Alle weiteren Infos findest Du im WIKI
Bitte vor dem posten Boardregeln lesen und verstehen!
Wie erstelle ich ein Bootlog? Wo finde ich die FAQ?
gerrison
Beiträge: 2
Registriert: Montag 5. März 2007, 23:47

Beitrag von gerrison »

aufm handy :)
für leute, die einen einwandfrei geschnittenen film "zum aufheben" haben möchten, ist das sicherlich nichts.
mir geht es eher darum, einen film ohne manuelles eingreifen automatisiert quick and dirty in ein platzsparendes format zu encoden.

alternativ könnte das script aber auch benutzt werden um die MPEG(-TS) dateien nur aus ihrem container zu befreien (demuxen)
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

alternativ könnte das script aber auch benutzt werden um die MPEG(-TS) dateien nur aus ihrem container zu befreien (demuxen)
Das hört sich schon besser an :wink: Leider kann ichs trotzdem nicht nutzen weil ich extern nur auf ein NAS streame. (wg. der CO2 Diskussion verzichte ich auf einen Server ;-) )
---------------------------
Alle weiteren Infos findest Du im WIKI
Bitte vor dem posten Boardregeln lesen und verstehen!
Wie erstelle ich ein Bootlog? Wo finde ich die FAQ?