Ausgabe auswerten und reagieren

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von rabadag, 11.09.2008.

  1. #1 rabadag, 11.09.2008
    rabadag

    rabadag Mitglied

    Dabei seit:
    21.05.2005
    Beiträge:
    30
    Zustimmungen:
    0
    Hallo Forum..

    hab mal wider ein kleines prob wo ich nicht so recht weis, wie ich das anstellen muss.

    Volgendes versuche ich zu realisieren.

    mittels eines tools lese ich die Streams eines MKV Fils aus. die ausgabe siht so aus.

    Code:
    SmartLabs tsMuxeR.  Version 1.7.3(b) http://www.smlabs.net
    Track ID:    1
    Stream type: H.264
    Stream ID:   V_MPEG4/ISO/AVC
    Stream info: Profile: High@5.1  Resolution: 1280:544p  Frame rate: 23.976
    Stream lang: ger
    Track ID:    2
    Stream type: AC3
    Stream ID:   A_AC3
    Stream info: Bitrate: 224Kbps Sample Rate: 48KHz Channels: 2
    Stream lang: ger
    Track ID:    3
    Stream type: AC3
    Stream ID:   A_AC3
    Stream info: Bitrate: 640Kbps Sample Rate: 48KHz Channels: 6
    Stream lang: eng
    
    Diese Liste kann aber auch anders aussehen und hat z.b nur ein audio Stream.

    nun möchte ich mittels einer If schleicfe die ausgabe auswerten.

    Code:
    
    for i in `find $1 -name '*.rar'`
    do
    
    DIRPATH=`dirname "$i"`
    VNAME=`basename $DIRPATH`
    FNAME=`basename $i`
    
      if [[ "$FNAME" == *.mkv ]] ; then
      MKV=`find $DIRPATH -name '*.mkv'`
      MKVFILES=`basename $MKV`
      TESTMKV=`/usr/bin/mkvinfo $MKV | grep 'Codec ID' | grep DTS`
    
       
    
    if [[ "$TESTMKV" == *A_DTS ]] ; then
    	 MKVDTS="1"
    	 TSMUX="0"
    	 else
    	 TSMUX="1"
    	 MKVDTS="0"
    fi
    	 
    fi  
    
    done
    
    
    Das Funktioniert soweit auch ganz gut. nur dumm ist, das der TsMuxer ein meta File benötige wo die Streams drin stehen.

    z.b
    Code:
    V_MPEG4/ISO/AVC, ./pfad-zum-file.mkv, insertSEI, contSPS, track=1, lang=ger
    A_DTS, ./pfad-zum-file.mkv, track=2, lang=ger
    A_AC3, ../pfad-zum-file.mkv, track=4, lang=ger
    

    Den Pfad in das metafile einzutragen ist nicht das prob, sondern die anderen Informationen die benötig werden richtig zu setzen.

    track=? lang=?

    Es kommt auch for, das es nur einen oder merere streams in einem file hat.

    Ich dachte mit ich schreibe jede zeile einzeln in das file, wenn bestimmte Kriterien passen.

    Aber wie kann ich aus der Ausgabe die einzelnen Tracks von der liste trennen und Track ID; Stream lang: Stream ID: auswerten und dementsprechend das meta File schreiben.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 tennessee, 18.09.2008
    tennessee

    tennessee Linuxfan

    Dabei seit:
    22.04.2006
    Beiträge:
    134
    Zustimmungen:
    0
    was du suchst ist glaub ich awk
     
  4. #3 rabadag, 18.09.2008
    rabadag

    rabadag Mitglied

    Dabei seit:
    21.05.2005
    Beiträge:
    30
    Zustimmungen:
    0
    Ich kenne mich mit AWK leider nicht aus..

    Kannst du mir ein beispiel Anhang diesem Array Inhalt machen bitte.
    Code:
       TESTMKV1=`/usr/bin/tsMuxeR $MKVFILE`
       ARRAY=($TESTMKV1)
    
    ###########Array Inhalt ##############
    SmartLabs tsMuxeR.  Version 1.7.3(b) http://www.smlabs.net
    Track ID:    1
    Stream type: H.264
    Stream ID:   V_MPEG4/ISO/AVC
    Stream info: Profile: High@4.1  Resolution: 1280:544p  Frame rate: 23.976
    Stream lang: eng
    Track ID:    2
    Stream type: DTS
    Stream ID:   A_DTS
    Stream info: Bitrate: 1536Kbps  Sample Rate: 48KHz  Channels: 6
    Stream lang: ger
    Track ID:    3
    Stream type: DTS
    Stream ID:   A_DTS
    Stream info: Bitrate: 1536Kbps  Sample Rate: 48KHz  Channels: 6
    Stream lang: eng
    Track ID:    4
    Stream type: AC3
    Stream ID:   A_AC3
    Stream info: Bitrate: 448Kbps Sample Rate: 48KHz Channels: 6
    Stream lang: und
    Track ID:    5
    Stream type: AC3
    Stream ID:   A_AC3
    Stream info: Bitrate: 448Kbps Sample Rate: 48KHz Channels: 6
    Stream lang: und
    ###################
    
    if [[ ${ARRAY[*]} != " " ]] ; then
         
    fi
    
    
    wie gesagt ich muss die Tracks von einander trennen und auswerten wie oben beschrieben, wobei die anzahl der Tracks unterschiedlich sind.
     
  5. #4 tennessee, 19.09.2008
    Zuletzt bearbeitet: 19.09.2008
    tennessee

    tennessee Linuxfan

    Dabei seit:
    22.04.2006
    Beiträge:
    134
    Zustimmungen:
    0
    sofern ich deine Anfrage richtig verstanden habe

    wenn ich das richtig verstehe gibt es immer einen Parameter ID und diese ID hat z.b. eigenschaften lang und track, die Du zuordnen und darauf reagieren möchtest?

    Die Atributanzahl ist aber nicht stereotyp?

    ich würde diese Date wie du sagtest in einzelne splitten.

    PHP:
    count=0
    while read a 
    do
    echo 
    $a|grep ID
    return=$?

    if 
    test $return -eq 0 
    then
    let count
    =$count+1
    touch file_$count
    .text
    echo $a >> file_$count.text
    else
    echo 
    $a >> file_$count.text
    fi
    done 
    <deineDatei

    So ungefähr müsste er deine Datei in einzelne splitten immer beginnend mit ID

    und jetzt könnte man sowas machen
    PHP:
    ls -ltr *.text Datei2

    while read a
    do
    ID=$(cat $a|grep ID|awk -":"  {'print $2'})
    LANG=$(cat $a|grep lang|awk -":"  {'print $2'})
    IF 
    test $ID "xxxx" && test $LANG="YYYY"
    then
    Tu irgendwas
    else
    tu was anderes oder nix
    fi
    done 
    Datei2
     
  6. #5 rabadag, 20.09.2008
    rabadag

    rabadag Mitglied

    Dabei seit:
    21.05.2005
    Beiträge:
    30
    Zustimmungen:
    0
    He super das funktioniert.

    Besten Dank für den ansatz.

    nur hab ich noch ein kleines prob mit den lehrschlägen nach :

    wie kriege ich die noch weg?

    und

    Also hab da noch Leerschläge drin..
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 tennessee, 21.09.2008
    tennessee

    tennessee Linuxfan

    Dabei seit:
    22.04.2006
    Beiträge:
    134
    Zustimmungen:
    0
    sed s/" "//g

    also:

    ID=$(cat $a |grep "Stream ID" |awk -F ":" {'print $2'}|sed s/" "//g)
     
  9. #7 rabadag, 21.09.2008
    rabadag

    rabadag Mitglied

    Dabei seit:
    21.05.2005
    Beiträge:
    30
    Zustimmungen:
    0

    besten dank für die Lösung.
     
Thema:

Ausgabe auswerten und reagieren

Die Seite wird geladen...

Ausgabe auswerten und reagieren - Ähnliche Themen

  1. Kurztipp: Unerwünschte grep-Ausgaben vermeiden

    Kurztipp: Unerwünschte grep-Ausgaben vermeiden: Selbst aus altbekannten Programmen kann man oft noch einiges mehr herausholen - man muss sich nur einmal gründlich mit ihnen auseinandersetzen....
  2. Ausgabe von mkdir -p wegwerfen

    Ausgabe von mkdir -p wegwerfen: Hallo, ich stehe gerade auf den schlauch. in meinen BASH Script lege ich mit mkdir -p ein verzeichnis an. Das Script gibt dann immer auf der...
  3. Unix Shell echo/ausgabe solange Bedingung ...

    Unix Shell echo/ausgabe solange Bedingung ...: Hallo liebe Unix User, da ich relativ neu bin, was Linux / Unix angeht stehe ich gerade komplett auf dem Schlauch! Problem: Aus mehreren...
  4. »Einführung in Tcl/Tk« in neuer Ausgabe

    »Einführung in Tcl/Tk« in neuer Ausgabe: Das Buch »Einführung in Tcl/Tk« wendet sich an Anfänger, die die Programmiersprache Tcl/Tk erlernen wollen. Der Titel kann kostenlos für die...
  5. PHP 6 oder 7: Debatte über die Versionierung der nächsten Ausgabe von PHP

    PHP 6 oder 7: Debatte über die Versionierung der nächsten Ausgabe von PHP: In der Community der Scriptsprache PHP, die zur Erstellung dynamischer Webseiten und Webanwendungen dient, wird gerade kontrovers diskutiert,...