Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 09.11.2011 um 14:22:35 Uhr
Verschoben von "Tools & Utilities" nach "Batch &Shell".

gelöst Werte aus einer Medien-Info-Datei auslesen in Varibale schreiben zwecks Weiterverarbeitung

Mitglied: max5moritz

max5moritz (Level 1) - Jetzt verbinden

09.11.2011, aktualisiert 18.10.2012, 3698 Aufrufe, 6 Kommentare

Hallo miteinander,

und einen schönen Abend erst einmal.

Ich möchte mir die Transkodierung von Sat-Aufnahmen ein wenig "erleichtern".
Bis zum Kopieren, Umwandeln in ts-Dateien und Auslesen der Medien-Infos oder wie VLC sagt Codec-Details bin ich schon gekommen.
Jetzt hänge ich daran, diese Werte irgendwie in Variable zu kriegen, damit ich mittels VLC die Sache in mp3-Dateien bzw. mp4-Dateien transkodiert bekomme.
Ich habe mich schon an diesem Abschnitt dank dieses tollen Forum ( vieles bekommt man ja hier so schon mit) schon einwenig versucht.
Allein, ich glaube, ich bin da irgendwie auf dem Holzweg. Deshalb vorab "meine" Testsschleife (das Orginal stammt von Bastla oder Biber glaub ich) samt Ergebnis:

01.
@echo off & setlocal
02.
::> test-2.txt
03.
for %%i in (ID Format Bit Width Height Channel) do (
04.
    for /f "tokens=1* delims=:" %%a in ('findstr /b "%%i" "%~dp0\test.nfo"') do call :%%i "%%b"
05.
)
06.
echo --------------------------------------
07.
ECHO aus Schleife 
08.
Echo Var1=%Var1%
09.
echo Var2=%Var2%, Var3=%Var3%,
10.
ECHO Var4=%Var4%, 
11.
echo Var5=%Var5%,
12.
echo Var6=%Var6%,
13.
echo.
14.
pause
15.
goto :eof
16.

17.
:ID
18.
set var1=%1
19.
set var1=%var1:~2,-1%
20.
echo ID=%var1%
21.
echo ID=%var1% >> test-2.txt
22.
goto :eof
23.

24.
:Width
25.
set var2=%1
26.
set var2=%var2:~2,-1%
27.
echo Width=%var2%
28.
goto :eof
29.

30.
:Height
31.
set var3=%1
32.
set var3=%var3:~2,-1%
33.
echo Height=%var3%
34.
goto :eof
35.

36.
:Format
37.
set var4=%1
38.
set var4=%var4:~2,-1%
39.
echo Format=%var4%
40.
goto :eof
41.

42.
:Bit
43.
set var5=%1
44.
set var5=%var5:~2,-1%
45.
echo Bit=%var5%
46.
goto :eof
47.

48.
:Channel
49.
set var6=%1
50.
set var6=%var6:~2,-1%
51.
echo Channel=%var6%
52.
goto :eof
53.
 
Das zeigt die Bildschirm-Anzeige
01.
ID=1101 (0x44D)
02.
ID=101 (0x65)
03.
ID=106 (0x6A)
04.
Format=MPEG-TS
05.
Format=MPEG Video
06.
Format=Version 2
07.
Format=Main@Main
08.
Format=Yes
09.
Format=Custom
10.
Format=M=3, N=12
11.
Format=AC-3
12.
Format=Audio Coding 3
13.
Bit=Variable
14.
Bit=6 109 Kbps
15.
Bit=8 bits
16.
Bit=0.589
17.
Bit=Constant
18.
Bit=448 Kbps
19.
Bit=16 bits
20.
Width=720 pixels
21.
Height=576 pixels
22.
Channel=6 channels
23.
Channel=Front: L C R, Side: L R, LFE
24.
--------------------------------------
25.
aus Schleife
26.
Var1=106 (0x6A)
27.
Var2=720 pixels, Var3=576 pixels,
28.
Var4=Audio Coding 3,
29.
Var5=16 bits,
30.
Var6=Front: L C R, Side: L R, LFE,
31.

32.
Drücken Sie eine beliebige Taste . . .
Das steht am Beispiel für var1 in der Text-Datei:

01.
ID=1101 (0x44D) 
02.
ID=101 (0x65) 
03.
ID=106 (0x6A)
Und dies ist die zu verarbeitende Datei, aus der ich ein paar Werte benötige:

01.
General
02.
ID                                       : 1101 (0x44D)
03.
Complete name                            : Die Gänsemagd.ts
04.
Format                                   : MPEG-TS
05.
File size                                : 2.83 GiB
06.
Duration                                 : 58mn 41s
07.
Overall bit rate mode                    : Variable
08.
Overall bit rate                         : 6 903 Kbps
09.

10.
Video
11.
ID                                       : 101 (0x65)
12.
Menu ID                                  : 28106 (0x6DCA)
13.
Format                                   : MPEG Video
14.
Format version                           : Version 2
15.
Format profile                           : Main@Main
16.
Format settings, BVOP                    : Yes
17.
Format settings, Matrix                  : Custom
18.
Format settings, GOP                     : M=3, N=12
19.
Codec ID                                 : 2
20.
Duration                                 : 58mn 40s
21.
Bit rate mode                            : Variable
22.
Bit rate                                 : 6 109 Kbps
23.
Maximum bit rate                         : 15.0 Mbps
24.
Width                                    : 720 pixels
25.
Height                                   : 576 pixels
26.
Display aspect ratio                     : 16:9
27.
Frame rate                               : 25.000 fps
28.
Standard                                 : PAL
29.
Color space                              : YUV
30.
Chroma subsampling                       : 4:2:0
31.
Bit depth                                : 8 bits
32.
Scan type                                : Interlaced
33.
Scan order                               : Top Field First
34.
Compression mode                         : Lossy
35.
Bits/(Pixel*Frame)                       : 0.589
36.
Stream size                              : 2.50 GiB (88%)
37.

38.
Audio
39.
ID                                       : 106 (0x6A)
40.
Menu ID                                  : 28106 (0x6DCA)
41.
Format                                   : AC-3
42.
Format/Info                              : Audio Coding 3
43.
Mode extension                           : CM (complete main)
44.
Codec ID                                 : 6
45.
Duration                                 : 58mn 41s
46.
Bit rate mode                            : Constant
47.
Bit rate                                 : 448 Kbps
48.
Channel(s)                               : 6 channels
49.
Channel positions                        : Front: L C R, Side: L R, LFE**
50.
Sampling rate                            : 48.0 KHz
51.
Bit depth                                : 16 bits
52.
Compression mode                         : Lossy
53.
Delay relative to video                  : 3ms
54.
Stream size                              : 188 MiB (6%)
55.
Language                                 : German
Leider sind manche Worte doppelt belegt (z.Bsp.: Bit oder Format), bzw. sind mehrteilig, Ein paar Werte habe ich mal herausgenommen:

Format : AC-3
Format/Info : Audio Coding 3
Mode extension : CM (complete main)
Bit rate mode : Constant
Bit rate : 448 Kbps
Channel(s) : 6 channels

Die können ja als Orientierung dienen.
Für jede TS-Datei, gibt es eine solche Info-Datei. Sie liegen im selben Ordner, haben den gleichen Namen. Allein die Extension (*.ts,*.nfo) ist verschieden.
Ich benötige die Werte zum Steuern des VLC, da dieser sich ja blind / per Skript bedienen läßt.
Im Ergebnis soll dann je nach dem, welche Infos gefunden oder nicht werden (reinen AudioStreams fehlt der Videokomplex), eine MP3-Datei oder eine MP4-Datei daraus werden.

Wenn wir dafür eine Lösung finden, würde mich das sehr freuen und mit dem Rest käme ich sicherlich allein weiter.

Das Ergebnis, den kompletten Skript, würde ich dann gern als Anleitung einstellen. Vielleicht kann den ja noch jemand mal gebrauchen.

Vorerst noch einen schönen Abend, oder vieleicht doch besser: Eine gute Nacht.

Herzlichst Max5Moritz
Mitglied: 60730
09.11.2011 um 02:04 Uhr
moin oder N8...

zuerst mal - nimm das €cho off raus..
Dann hast du die Sets nicht wirklich hybsch gemacht...
set var1=%1
besser:
set "var1=%1"
Auch das:
echo ID=%var1% >> test-2.txt
echo ID=%var1%>> test-2.txt
macht sich besser.

Soviel zum Vorschlag, dann zum weiteren Ansatz:
Ich nehme mal an - ich habs nur überflogen - deine mp3 Audio Info files haben keinen Eintrag Video.
Andersherum, wirst du keine Stummfilme haben, aber wie siehts mit mehreren Tonspuren aus?

  • Ich würd das so angehen - finde "Video" und merke dir die Zeilen Nummer, finde Audio und alles zwischen Zeile Video bis Audio ist der Videoteil.
Sinngemäß also:
for /f "tokens=1,* delims=:" %a in ('findstr /n /i "Video" "%Var1%"') do echo Videoabschnitt=%a
for /f "tokens=1,* delims=:" %a in ('findstr /n /i "Audio" "%Var1%"') do echo Audioabschnitt=%a

Und das natürlich nicht echo, sondern set
Via set /a hast du dann die auszuwertenden Zeilen.

sorry, vielleicht nachher mehr, der Tag ist zu früh für heute..

Gruß

Ps: verschiebs doch in den B Bereich zu BP & Shell
Bitte warten ..
Mitglied: bastla
09.11.2011 um 08:01 Uhr
Hallo max5moritz!

Den Inhalt der Ausgangsdatei kennen wir einmal - aber was ist genau das Ziel, wie sieht die gewünschte Ergebnisdatei aus?

Grüße
bastla
Bitte warten ..
Mitglied: max5moritz
09.11.2011 um 08:59 Uhr
@TimoBeil
@ bastla

Den Inhalt der Ausgangsdatei kennen wir einmal - aber was ist genau das Ziel, wie sieht die gewünschte Ergebnisdatei aus?

Hallo, und danke Euch beiden für die schnelle Reaktion.

Ich benötige ein Teil der Werte als Variable für den VLC. Zum besseren Verständnis ein Schnipsel aus der Befehlszeile:

01.
transcode{width=720,canvas-height=576,vcodec=mp2v,vb=3072,scale=1,acodec=mpga,ab=192,channels=2,soverlay,fps=25}
Die Werte dazu finden sich in der Datei, nur wie bekomme ich sie alle in einem Rutsch in Variable geschrieben?

Grüße
Max5Moritz
Bitte warten ..
Mitglied: bastla
09.11.2011 um 11:53 Uhr
Hallo max5moritz!

Ein allgemeiner Batch, um aus zB
Channel(s)                               : 6 channels
eine Variable "%Channel[s]%" (die runden Klammern werden zur Sicherheit durch eckige sowie Leerzeichen durch "_" ersetzt) mit dem Wert "6" zu machen, könnte etwa so
01.
@echo off & setlocal
02.
::set "Datei=%~1"
03.
set "Datei=Test.nfo"
04.

05.
for %%i in (Width,Height,Format,"Bit rate",Format,"Bit rate","Channel(s)","Frame rate") do call :ProcessLine %%i
06.
::Nachbehandlung
07.
::  am Dezimalpunkt trennen
08.
for /f "delims=." %%i in ("%Frame_rate%") do set "Frame_rate=%%i"
09.
::  Video-Bitrate ermitteln
10.
for /f "tokens=2 delims=:" %%v in ('findstr /b /c:"Bit rate  " "%Datei%"') do if not defined VB set "VB=%%v"
11.
set "Bit_rate=%VB: =%"
12.
set "Bit_rate=%Bit_rate:Kbps=%"
13.

14.
echo(
15.
echo transcode{Width=%width%,canvas-height=%Height%,vcodec=%Format%,vb=%Bit_rate%,scale=1,acodec=%aFormat%,ab=%aBit_rate%,channels=%Channel[s]%,soverlay,fps=%Frame_rate%}
16.
endlocal
17.
goto :eof
18.

19.

20.
:ProcessLine
21.
set "Var=%~1"
22.
set "Var=%Var: =_%"
23.
set "Var=%Var:(=[%"
24.
set "Var=%Var:)=]%"
25.
set "Audio="
26.
setlocal enabledelayedexpansion
27.
if "!%Var%!" neq "" set "Audio=true"
28.
endlocal & set "Audio=%Audio%"
29.
for /f "tokens=2 delims=:" %%v in ('findstr /b /c:"%~1  " "%Datei%"') do (
30.
    for /f %%a in ("%%v") do (
31.
        if not defined %Var% set "%Var%=%%a
32.
        if defined Audio set "a%Var%=%%a"
33.
    )
34.
)
35.
::Demo
36.
if not defined Audio (
37.
    call echo %Var%=%%%Var%%%
38.
) else (
39.
    call echo a%Var%=%%a%Var%%%
40.
)
41.
goto :eof
aussehen. Für einzelne Variablenwerte (etwa im Beispiel die "Frame_rate" mit "25.000") kann noch eine Nachbearbeitung und für andere (zB die "Bit_rate" des Videos wegen des enthaltenen Leerzeichens bei "6 109") eine noch spezifischere Ermittlung erforderlich sein ...

Das Problem "gleiche Eigenschaftsnamen für Video und Audio" (etwa "Bit_rate") habe ich so gelöst, dass beim zweiten "Auftauchen" eines solchen Namens dem Variablennamen ein "a" (sollte dann ja der Audio-Wert sein) vorangestellt wird.

Grüße
bastla
Bitte warten ..
Mitglied: max5moritz
12.11.2011 um 00:15 Uhr
Hallo bastla!

Wow, ich bin begeistert !

Danke für die Hilfe, ich bin erst heute wieder zum Forum gekommen und habe den Skript gleich gestest.

Die Echo in Zeile 37 und 39 habe ich erst einmal testweise in ein Txt-File umgeleitet. Das Ergebnis sieht gut aus - ich bin begeistert.

Eine Frage zur 14. codezeile: Was bewirkt echo( ?

Warum in 36. Zeile if not defined Audio und nicht Video? (Falls es nur ein Audio-Stream ist)

Auf jedenfall kome ich jetzt schon ein gutes Stück weiter. Ich werde über das Ergebnis berichten und darstellen.

Herzliche Grüße,
max5moritz
Bitte warten ..
Mitglied: bastla
12.11.2011, aktualisiert 18.10.2012
Hallo max5moritz!
Eine Frage zur 14. codezeile: Was bewirkt echo( ?
Im Prinzip das Gleiche wie ein herkömmliches
echo.
- allerdings lasse ich mich ja auch gerne eines Besseren belehren und glaube daher jeb-the-batcher, dass die Schreibweise mit "(" gelegentlich vorteilhafter ist ...
Warum in 36. Zeile if not defined Audio und nicht Video? (Falls es nur ein Audio-Stream ist)
Ich verwende die Variable %Audio% als Schalter, der immer dann gesetzt ist, wenn eine Eigenschaft (wie "Bit rate") zum zweiten Mal vorkommt (das erste Vorkommen wird, dem Aufbau der Info-Datei entsprechend, als "Video"-Wert interpretiert und nicht weiter gekennzeichnet). Damit nun in der Demo-Ausgabe die Variable mit dem vorangestellten "a" verwendet wird, muss vorweg festgestellt werden, ob bei diesem Schleifendurchlauf die "Audio"-Variante dran ist ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Debian
Weiterverarbeitung mit grep Befehl
gelöst Frage von BitconDebian12 Kommentare

Guten Tag Forumsnutzer Ich möchte ein Skript erstellen, welches auf einem Raspberry pi2 laufen soll. Dieses Skript hat die ...

Windows Tools

Weiterverarbeitung von ausgewählten PDF Seiten

Frage von user44Windows Tools2 Kommentare

Hallo, eben bin ich auf der Suche nach einem Tool welches nur bestimmte Seiten exportiert/druckt/speichert…. Folgendes Szenario. PDF Formular ...

Windows 10

Unter Windows 10 Datei,Ordner INFO Fenster

gelöst Frage von He-Man-Master-of-the-UniverseWindows 105 Kommentare

Hallo und Guten Morgen, benötige mal wieder einen Hilfestellung, wenn mal mit dem Maus Zeiger auf eine Datei oder ...

Batch & Shell

Wert in einer TXT Datei suchen

Frage von nolle99Batch & Shell11 Kommentare

Hallo Leute Ich habe ein Problem Ich habe mir von meiner Seite alle URLs in einer TXT gespeichert (30.000 ...

Neue Wissensbeiträge
Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 10 MinutenWindows 10

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 2 StundenSicherheit1 Kommentar

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Microsoft Office
TEAMS - Skype for business
Tipp von Nebellicht vor 2 StundenMicrosoft Office

Hallo, ms ersetzt Skype for business durch TEAMS. Also, nicht wundern wenn mit der OFFICE365 Umgebung kein Skype for ...

Windows 10

Windows 10: Cortana und die Suche gehen bald wieder eigene Wege

Information von Frank vor 6 StundenWindows 102 Kommentare

Microsoft hat einen neuen Insider Build von Windows 10 veröffentlicht (Fast Ring, Version 18317), wo die digitale Assistentin "Cortana" ...

Heiß diskutierte Inhalte
Microsoft
SFirm 4.0 auf Terminalserver startet für jeden angemeldeten Benutzer diverse Dienste
Frage von Frank84Microsoft25 Kommentare

Hallo zusammen, wir verwenden Sfirm 4.0 auf einem Terminalserver (der SQL Server ist auf einem separaten Server), das Problem ...

Windows Server
Uhren gehen immer wieder falsch
Frage von killtecWindows Server22 Kommentare

Hallo, ich habe folgende Konstellation: 1. Physischer DC Div. Virtuelle DC's auf Hyper-V Servern Die Hyper-V-Server, der Physische DC ...

Windows 10
VM wächst schnell von 14 auf 35 GB an - warum?
Frage von degudejungWindows 1018 Kommentare

Hallo, ich bin ein Freund schlanker VMs und setze daher gerne mit dem Erscheinen einer neuen Win10 Version - ...

Internet
Google-Suchergebnisse, Schnelleinblendung, woher kommt der Inhalt?
gelöst Frage von departure69Internet17 Kommentare

Hallo. Ich bin der Systembetreuer einer kleinen Gemeinde in Süddeutschland. Wir betreiben auch eine Leihbücherei. Eine Kundin hat letzten ...