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, 3674 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
VB for Applications

PDF Datei auslesen und per VBA in Excel schreiben

gelöst Frage von Julian8990VB for Applications3 Kommentare

Hallo zusammen! Ich bin auf folgenden Threat gestoßen, und konnte auch schon einige Erfolge erzielen! Mein Problem ist ein ...

Batch & Shell

Dateinamen mit vbs auslesen und in eine TXT Datei schreiben

gelöst Frage von KeiosIDBatch & Shell5 Kommentare

Hallo, ich hoffe mal, das ist das richtige Unterforum. Nach diversen suchen und Hilfe aus einem Windows Scripting Buch ...

Windows Systemdateien

Registry-Schlüssel per Batch auslesen und in Datei schreiben

gelöst Frage von PhilzipWindows Systemdateien9 Kommentare

Hallo zusammen, ich habe mir vorhin einen Befehl gebastelt, der die Installierte Version von NET Framework auslesen und in ...

Windows 8

JSON Datei Wert auslesen und bei bestimmten Vielfachen des Wertes ein anderes Programm öffnen

gelöst Frage von drkoaegWindows 82 Kommentare

Hallo :) Ich habe eine JSON Datei -die ich per Editor auslesen kann- mit einem Zahlenwert, der mit der ...

Neue Wissensbeiträge
Windows Netzwerk
Windows Admin Center - Sagt was ihr braucht!
Tipp von Juanito vor 19 StundenWindows Netzwerk12 Kommentare

Hallo zusammen, der ein- oder andere hat sicherlich schon vom Windows Admin Center gehört. - Microsoft's neue Adminkonsole welche ...

Verschlüsselung & Zertifikate

Bitlocker-Verschlüsselung und -Monitoring ohne MBAM

Tipp von DerWoWusste vor 1 TagVerschlüsselung & Zertifikate

Der Folgende Tipp beschreibt, wie man ohne MBAM die Verschlüsselung erzwingt und monitort. MBAM ist ein Enterprise-Benefit und somit ...

Netzwerkprotokolle
IPv6 Konfiguration von Site-Site-VPN ohne feste IP
Anleitung von lcer00 vor 2 TagenNetzwerkprotokolle1 Kommentar

Hallo zusammen, vor einiger Zeit hatte ich hier eine Frage zu dem Thema gepostet: Da war noch etwas offen. ...

Verschlüsselung & Zertifikate
Nutzung von Bitlocker in virtuellen Maschinen
Tipp von DerWoWusste vor 3 TagenVerschlüsselung & Zertifikate3 Kommentare

Vorbetrachtung: Wen sollte das interessieren? Wer virtuelle Maschinen zum Test auf seiner lokalen Festplatte speichert, wird diese nur selten ...

Heiß diskutierte Inhalte
Viren und Trojaner
Viren zu Testzwecken gesucht
Frage von ElHuttiViren und Trojaner20 Kommentare

Hallo, Ich suche zum rumtrollen auf einem alten PC Viren, die: - Keine Komponenten beschädigen - Keine Auswirkungen auf ...

Voice over IP
Andere Rufnummer bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom anzeigen
Frage von vafk18Voice over IP17 Kommentare

Ich möchte bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom meine Handynummer hinterlegen, damit ich Rückrufe jederzeit empfangen kann. Derzeit ...

Monitoring
Empfehlung für Server-Monitoring gesucht
Frage von LordGurkeMonitoring15 Kommentare

Moin, wir sehen uns momentan ein wenig nach einer Alternative zu unserem jetzigen Server-Monitoring um. Getestet habe ich bisher ...

Windows 10
Windows 10 mit CRITICAL PROCESS DIED
Frage von liquidbaseWindows 1013 Kommentare

Das aktuelle Problem was ich habe steht bereits im Threadtitel. Etwas mehr zum Hintergrund soll nun folgen. Problemkind ist ...