Mac Scriptje

Pagina: 1
Acties:
  • 730 views

Acties:
  • 0 Henk 'm!

  • tjallo
  • Registratie: Januari 2014
  • Laatst online: 09:34
Hallo medetweakers,

ik heb een mac scriptje dat voor een deel werkt naar mijn behoren. Ten eerste zal ik uitleggen wat het doet, het combineert het bestand audio.aif met bestand video.mp4 tot newvideo.mp4 door middel van ffmpeg dit scheelt veel render tijd als je de audio even snel wil aanpassen, nu wil ik dat die audio en video door een variabele worden vervangen dat alle bestanden met dezelfde naam in een mapje (bijvoorbeeld pietje.mp4 met pietje.aif & jantje.aif en jantje.mp4) worden gecombineerd en dat er een nieuw bestandje uitkomt dat heet [originele naam]_new.mp4.

Kan iemand mij helpen deze variabele te maken?

Hieronder de code die ik nu al heb:



#!/bin/bash
cd "`dirname "$0"`"
ffmpeg -i audio.aif -i video.mp4 -map 0:0 -map 1:0 -acodec libfdk_aac -b:a 192k -vcodec copy -shortest newvideo.mp4
done



Mvg, Tjalle

Acties:
  • +1 Henk 'm!

  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat

Acties:
  • 0 Henk 'm!

  • tjallo
  • Registratie: Januari 2014
  • Laatst online: 09:34

Acties:
  • +1 Henk 'm!

  • muppet99
  • Registratie: Juli 2002
  • Laatst online: 23-09 17:42
powershell had ik je zo kunnen geven ;)

http://stackoverflow.com/...le-names-returned-by-find Ik zou daar even kijken. Daar geven ze ook uitleg waarom het ene script voorkeur heeft voor het andere.

Carpe Diem


Acties:
  • +1 Henk 'm!

  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
Nee, ik zie dat je ook net nog wat meer wil dan je met alleen die link zou kunnen. Je moet een manier vinden om de bestandsparen te vinden. Je zou bijvoorbeeld een lijst van bestanden kunnen sorteren en met uniq de dubbel voorkomende bestandsnamen kunnen verzamelen, maar er zijn vast ook wel elegantere oplossingen.

Acties:
  • 0 Henk 'm!

  • tjallo
  • Registratie: Januari 2014
  • Laatst online: 09:34
Het punt is dat ik best wel een beetje "noob" ben om het zo maar te zeggen met Mac shell maar zal het proberen uit te vogelen, waar een wil is is een weg.

Acties:
  • +2 Henk 'm!

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Ten eerste: het is niet Mac Script of Mac Shell, maar wat je gebruikt op OS X is gewoon Unix, en Bash. Wat je aan het doen bent is Shell Scripting. Nu heb je wat termen om makkelijk te zoeken ;-)

Nu heb je twee dingen overgeslagen die wel van Apple zijn en specifiek voor OS X zijn: Automator en AppleScript. Automator is misschien wat beter, daar kan je met een GUI drag & droppen om zo je programmaatje te maken.

Wat je shell script betreft: wat je nodig hebt is een glob van je huidige dir waarbij een bestand met aiff in een variable komt en een bestand met mp4 in een andere, en die twee variabelen stop je dan weer in je ffmpeg commandline.

Acties:
  • 0 Henk 'm!

  • tjallo
  • Registratie: Januari 2014
  • Laatst online: 09:34
johnkeates schreef op dinsdag 06 oktober 2015 @ 16:14:
Wat je shell script betreft: wat je nodig hebt is een glob van je huidige dir waarbij een bestand met aiff in een variable komt en een bestand met mp4 in een andere, en die twee variabelen stop je dan weer in je ffmpeg commandline.
Glob is toch een lijst met alle bestanden?

Het gaat hier om een map met meerdere bestanden van beide formaten btw.

Hoe maak ik die variabelen dan?

Mvg, Tjalle

Acties:
  • +1 Henk 'm!

  • thunder7
  • Registratie: Januari 2003
  • Laatst online: 08:52

thunder7

houten vaas/schaal nodig?

code:
1
2
3
4
5
6
7
i#!/bin/bash
cd "`dirname "$0"`"
ls *.aif | while read file
do
   short=`basename "$file" .aif`
   test -f "$short".mp4 && ffmpeg -arg1 "$file" -arg2 "$short".mp4 -arg3 "$short"_new.mpg etc etc
done


zoiets? Lees alle .aif bestanden, zet de 'kale' naam in $short, test of er een .mp4 bestand is met dezelfde naam en zoja, doe iets.

Ik meen me vaag te herinneren dat ffmpeg de standaard-input opvreet, dus als het alleen voor het eerste bestand werkt, dan moet er nog een </dev/null achter het ffmpeg commando.

[ Voor 22% gewijzigd door thunder7 op 06-10-2015 20:22 ]

hout-nerd - www.hetmooistehout.nl of www.houtenschalen.nl


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 01-10 12:22

CAPSLOCK2000

zie teletekst pagina 888

De programmeertaal in kwestie heet Bash, zo'n script heet dus een bash script. Over bash is heel veel geschreven. Ik raad je aan om een beginnershandleiding te lezen want maakt je leven een stuk makkelijker. Met een klein beetje kennis wordt het een enorm krachtig stuk gereedschap.

PS. het is eigenlijk niet de bedoeling om hier programmeerproblemen te bespreken

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • tjallo
  • Registratie: Januari 2014
  • Laatst online: 09:34
thunder7 schreef op dinsdag 06 oktober 2015 @ 20:17:
code:
1
2
3
4
5
6
7
i#!/bin/bash
cd "`dirname "$0"`"
ls *.aif | while read file
do
   short=`basename "$file" .aif`
   test -f "$short".mp4 && ffmpeg -arg1 "$file" -arg2 "$short".mp4 -arg3 "$short"_new.mpg etc etc
done


zoiets? Lees alle .aif bestanden, zet de 'kale' naam in $short, test of er een .mp4 bestand is met dezelfde naam en zoja, doe iets.

Ik meen me vaag te herinneren dat ffmpeg de standaard-input opvreet, dus als het alleen voor het eerste bestand werkt, dan moet er nog een </dev/null achter het ffmpeg commando.
Hartstikke bedankt! Hier kan ik verder op bouwen. _/-\o_ _/-\o_ d:)b

Acties:
  • 0 Henk 'm!

  • tjallo
  • Registratie: Januari 2014
  • Laatst online: 09:34
Hallo,

In dit deel van de code zit een fout maar ik kan hem niet vinden

#!/bin/bash
cd "`dirname "$0"`"
ls *.aif | while read file
if
short=`basename "$file" .aif`
test -f "$short".mp4 && ffmpeg -arg1 "$file" -arg2 "$short".mp4 -arg3 "$short"_new.mp4


Hij geeft dit aan:
Last login: Wed Oct 7 20:49:23 on ttys000
Tjalles-Mac-Pro:~ tjallo$ /Users/tjallo/Desktop/Christof/try1\ copy.command ; exit;
-bash: /Users/tjallo/Desktop/Christof/try1 copy.command: /bin/bash^M: bad interpreter: No such file or directory
logout

[Process completed]


Alvast bedankt.

Mvg, Tjalle

Acties:
  • 0 Henk 'm!

  • d1ng
  • Registratie: Augustus 2009
  • Laatst online: 06-05-2024
Je script moet nog even door dos2unix worden gehaald. Windows heeft de nare eigenschap om er ^M karakters aan toe te voegen :)

Acties:
  • 0 Henk 'm!

  • thunder7
  • Registratie: Januari 2003
  • Laatst online: 08:52

thunder7

houten vaas/schaal nodig?

ik zie ook een do in een if veranderen....

hout-nerd - www.hetmooistehout.nl of www.houtenschalen.nl


Acties:
  • 0 Henk 'm!

  • FitzJac
  • Registratie: November 2010
  • Laatst online: 09:53
:X

[ Voor 124% gewijzigd door FitzJac op 08-10-2015 01:36 ]


Acties:
  • +2 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Hier een iets nettere versie:

Bash:
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env bash -e

function combine(){
    ffmpeg -i "$1" -i "$2" -map 0:0 -map 1:0 -acodec libfdk_aac -b:a 192k -vcodec copy -shortest "$3"
}

for video in *.mp4; do
    name="${video%.*}"
    audio="${name}.aif"
    output="${name}_new.mp4"
    combine "$audio" "$video" "$output"
done

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 28-09 05:17
Grappig om te zien hoe het aanleveren van een compleet script alleen maar tot nieuwe vragen leidt.

There is no replacement for displacement!


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 01-10 12:22

CAPSLOCK2000

zie teletekst pagina 888

Dit topic is klaar, metadiscussie is verspilde moeite. Ik sluit dit topic zodat we er geen zombie van maken.

This post is warranted for the full amount you paid me for it.

Pagina: 1

Dit topic is gesloten.