Ga terug   Computer Idee Forum > Software > Software Overige

Antwoord
 
Discussietools Weergave
Oud 13 August 2014, 18:18   #1
anoniem57295
Guest
 
Berichten: n/a
Standaard batch-prog steeds met foutmelding

ik heb dit batch file:
Code:
for /l %%x in (1, 1, 12) do (
echo %%x
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
)
Ik krijg hiermee de foutmelding: x niet verwacht op dit moment.
Mijn vraag is dus Hoe kan ik dit verhelpen?????

De bedoeling van dit batch bestand is dat de commando regel
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
12 keer wordt uitgevoerd.

Mijn uiteindelijk doel is om de audio uit MP4-bestanden te rippen, maar lossless, dus d.w.z. zonder transcoding
  Met citaat antwoorden
Oud 13 August 2014, 18:52   #2
anoniem14945
Guest
 
Berichten: n/a
Standaard

Werkt hier gewoon. Zeker dat je hier hetzelfde hebt geschreven als in je batchfile?

Overigens zou je ook dit kunnen doen, als het er toch maar 12 zijn:
Code:
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
ffmpeg -i *.mp4 -vn -acodec copy audio.m4a
Dan zie je meteen dat, als het werkt, je er hiermee toch nog niet bent.
  Met citaat antwoorden
Oud 13 August 2014, 20:23   #3
anoniem57295
Guest
 
Berichten: n/a
Standaard

Bedankt voor je tip, idd tikfout.

ik krijg nu de foutmelding that *.mp4 geen geldig argument is ....

hoe los ik dat op?
  Met citaat antwoorden
Oud 13 August 2014, 21:02   #4
anoniem26138
Guest
 
Berichten: n/a
Standaard

Dat zal de foutmelding zijn van het programma ffmpeg.exe ?
Die verwacht waarschijnlijk één bestandsnaam, en niet een serie. Nu vraag je aan het programma elk bestand in de map met de extensie mp4 te processen.
  Met citaat antwoorden
Oud 13 August 2014, 21:23   #5
anoniem14945
Guest
 
Berichten: n/a
Standaard

...en dat steeds te overschrijven in audio.m4a.
Dat is wat ik bedoelde met "dat je er nog niet bent".

Wat je moet uitvinden is een lijst met alle bestanden in de map. Misschien kan het commando DIR hier bij helpen. Dan moet je controleren of het bestand een mp4 bestand is en als dat zo is kun je ffmpeg er op los laten. Daarbij neem je de originele bestandsnaam als basis voor de bestandsnaam van het audio bestand. Anders overschrijft het zichzelf steeds.

Hoe dat precies moet in een batch bestand weet ik niet. Het zal vast kunnen, maar ik gebruik het nooit. Misschien kun je met bovenstaande logica zelf wat uitvinden.
  Met citaat antwoorden
Oud 13 August 2014, 22:01   #6
anoniem26138
Guest
 
Berichten: n/a
Standaard

Is voor mij nogal lang geleden, en er zijn inmiddels heel wat script mogelijkheden bij gekomen welke ik totaal niet ken.

Ik weet niet helemaal wat de bedoeling is van de herhaling, dus waarom je 12 maal dezelfde opdracht uitgevoerd wil hebben.

In zo'n for loop kan je wel meerdere bestanden behandelen, zoals

FOR %%i IN (*.mp4) DO opdracht

En als dit de opdracht is met de parameters van dat programma ffmpeg:
ffmpeg -i naam.mp4 -vn -acodec copy naam.m4a

dan zou ik denken:
Code:
FOR %%i IN (*.mp4) DO (
echo %%i
ffmpeg -i %%i -vn -acodec copy %%i.m4a 
)
(Ik weet niet of ik de twee haakjes goed toepas rond de opdracht, die heb ik uit jouw weergave over genomen)

Deze opdracht voert dacht ik die opdrachtlijn uit op elk bestand met de extensie .mp4 in de actieve map.
%%i is wel de naam+extensie geworden, dus dat zou als resultaat een audio bestand geven met een naam als naam.mp4.m4a. Ik hoop dat het programma ffmpeg.exe zo'n naam aankan om op te slaan.

Nogmaals, je herhaling van de opdracht (12 keer, met een /L step opdracht in je FOR loop) snap ik niet, want waarom zou je 12 maal hetzelfde doen. Zijn er soms 12 bestanden te behandelen, en probeer je dat zo ?


(Voor het testen van de loop zelf zou je de hele opdrachtlijn voor ffmpeg kunnen uitschakelen (b.v. door er REM voor te zetten), zodat alleen de echo %%i opdracht uitgevoerd wordt, en je kan zien of inderdaad alle gewenste bestandsnamen op het scherm getoond worden, dus door de loop behandeld worden.)
.

Laatst gewijzigd door erikdenhouter : 13 August 2014 om 22:45
  Met citaat antwoorden
Oud 14 August 2014, 00:23   #7
anoniem57295
Guest
 
Berichten: n/a
Standaard

eric,

ja er waren 12 bestanden, maar jouw oplossing om alle bestanden met die extensie te pakken is natuurlijk beter.

ik laat het weten als het lukt.

edit: dit was de winnende combi
PHP-code:
FOR %%i IN ("*.mp4") DO (
echo %%
i
ffmpeg 
-%%-vn -acodec copy "newfiles\%%i.aac"

erik, je had gelijk, het resultaatsbestand is idd dit formaat
pier0.mp4.m4a
waip0.mp4.m4a

waarbij de bron is:
pier0.mp4
waip0.mp4

kan ik een RENAME commando toevoegen om dat te verhelpen? weet je hoe precies dan?

Laatst gewijzigd door GwenKillders : 14 August 2014 om 01:12
  Met citaat antwoorden
Oud 14 August 2014, 09:12   #8
anoniem26138
Guest
 
Berichten: n/a
Standaard

RENamen lukt bij mij in batch, maar... dan moet wel de lengte van elke naam (voor de punt) hetzelfde zijn. Het aantal vraagtekens matcht de lengte van de namen.
Plaats dit uiteraard wel buiten (dus NA) de FOR loop:
Code:
REN  newfiles\????????.mp4.m4a  ????????.m4a
Ik heb geen quotes gebruikt of er mee getest, omdat ik even aanneem dat er geen spaties in dat soort namen zit.
Het pad wat je toepaste hoeft alleen bij de bron te staan, maar ook deze test heb ik even snel alleen in de actieve map gedaan, niet met vermelding van een pad. Dus dat mag jij checken.

Mocht je toch verschillende lengtes namen verwachten dan is er nog geen man overboord, dan plaats je de opdracht gewoon meerdere keren, telkens met één vraagteken meer:
Code:
REN  newfiles\?.mp4.m4a  ?.m4a
REN  newfiles\??.mp4.m4a  ??.m4a
REN  newfiles\???.mp4.m4a  ???.m4a

rem               ( etcetera.... tot zoveel als je verwacht )
Misschien zijn er wel elegantere oplossingen, maar dit lijkt mij wel te doen.

.

Laatst gewijzigd door erikdenhouter : 14 August 2014 om 09:25
  Met citaat antwoorden
Oud 14 August 2014, 11:30   #9
anoniem14945
Guest
 
Berichten: n/a
Standaard

Kom je er hier niet in 1x met REN *.mp4.m4a *.m4a
Ik heb het niet getest, dat gaat een beetje lastig op een tablet.
  Met citaat antwoorden
Oud 14 August 2014, 13:42   #10
anoniem57295
Guest
 
Berichten: n/a
Standaard

Gevonden, het moet zijn "newfiles\%%~ni.aac" niet "newfiles\%%i.aac"

het wordt dan:
Code:
FOR %%i IN ("*.mp4") DO (
echo %%i
ffmpeg -i %%i -vn -acodec copy "newfiles\%%~ni.aac"
)
sorry als ik jullie onnodig gefrustreerd heb.
eric, je oplossing werkt wel, maar is niet zo elegant
foo, *.mp4 werkt NIET. hoewel, geen foutmelding, dus raar.
eric kan vast uitleggen waarom het niet werkt.

EDIT:
en met aanhalingstekens werkt het ook op bestandsnamen met spaties....
Code:
FOR %%i IN ("*.mp4") DO (
echo %%i
ffmpeg -i "%%i" -vn -acodec copy "newfiles\%%~ni.aac"
)

Laatst gewijzigd door GwenKillders : 14 August 2014 om 21:40 Reden: ""
  Met citaat antwoorden
Antwoord

Discussietools
Weergave

Regels voor berichten
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Forumnavigatie


Alle tijden zijn GMT +1. Het is nu 05:57.


Powered by vBulletin Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.