Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

Dubbele " in php exec

Pagina: 1
Acties:
  • 1.231 views

Verwijderd

Topicstarter
Ik wil de onderstaande regel uitvoeren:

PHP:
1
$cmd = "C:\\ffmpeg -i upload/$upload -target pal-vcd -ss $begin_preview -t 00:00:20.000 -s 320x240  -vhook \"C:\\drawtext.dll -f font.ttf -t \"www.autostrada.tv\" \" $mapnaam/prev_$bestandsnaam.wmv";


Maar het gedeelte na vhook is niet goed het moet met " zijn en in cmd.exe werkt het wel normaal maar nu wil ik het vanuit php aanroepen.

Het zal heel simpel zijn maar ik kan het niet vinden en weet ook niet waar ik moet zoeken.

Bedankt.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Uhm wat dacht je van \" vervangen door een apostrof dan als dat blijkbaar moet?

Of even een tig keer duidelijker zijn in wat je wil en wat er fout gaat.

Professionele website nodig?


Verwijderd

Topicstarter
curry684 schreef op maandag 30 juni 2008 @ 13:25:
Uhm wat dacht je van \" vervangen door een apostrof dan als dat blijkbaar moet?

Of even een tig keer duidelijker zijn in wat je wil en wat er fout gaat.
Wat fout gaat:
Hij voert de regel niet uit omdat hij fout is. Het zit hem in de aanroep van vhook daar worden " gebruikt maar die worden ook al gebruikt bij aanroep van de regel.

Maar je oplossing werkt niet helaas.
PHP:
1
$cmd = "C:\\ffmpeg -i upload/$upload -target pal-vcd -ss $begin_preview -t 00:00:20.000 -s 320x240  -vhook 'C:\\drawtext.dll -f font.ttf -t 'www.autostrada.tv' ' $mapnaam/prev_$bestandsnaam.wmv";

[ Voor 21% gewijzigd door Verwijderd op 30-06-2008 13:27 ]


Verwijderd

In plaats van " te gebruiken kan je ook ' ' gebruiken
PHP:
1
$cmd = 'C:\ffmpeg -i upload/'.$upload.' -target pal-vcd -ss '.$begin_preview.' -t 00:00:20.000 -s 320x240  -vhook "C:\drawtext.dll -f font.ttf -t "www.autostrada.tv" "'.$mapnaam/prev_$bestandsnaam.wmv.'"';


dan zit je niet met al die \" :)

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 17-11 21:01
C:\ffmpeg -i upload/$upload -target pal-vcd -ss $begin_preview -t 00:00:20.000 -s 320x240 -vhook "C:\drawtext.dll -f font.ttf -t "www.autostrada.tv" " $mapnaam/prev_$bestandsnaam.wmv

Als ik het goed begrijp is hierboven de commandline die je wilt uitvoeren waarbij het dikgedrukte stuk de parameter is bij -vhook.

Zou het helpen als je de buiteste aanhalingstekens weglaat en -vhook opschuift naar achteren?

C:\ffmpeg -i upload/$upload -target pal-vcd -ss $begin_preview -t 00:00:20.000 -s 320x240 $mapnaam/prev_$bestandsnaam.wmv -vhook C:\drawtext.dll -f font.ttf -t "www.autostrada.tv"

Sorry, even geen [code] gebuikt om dat ik dan niets kan dikdrukken.

Verwijderd

Topicstarter
jvdmeer schreef op maandag 30 juni 2008 @ 13:33:
C:\ffmpeg -i upload/$upload -target pal-vcd -ss $begin_preview -t 00:00:20.000 -s 320x240 -vhook "C:\drawtext.dll -f font.ttf -t "www.autostrada.tv" " $mapnaam/prev_$bestandsnaam.wmv

Als ik het goed begrijp is hierboven de commandline die je wilt uitvoeren waarbij het dikgedrukte stuk de parameter is bij -vhook.

Zou het helpen als je de buiteste aanhalingstekens weglaat en -vhook opschuift naar achteren?

C:\ffmpeg -i upload/$upload -target pal-vcd -ss $begin_preview -t 00:00:20.000 -s 320x240 $mapnaam/prev_$bestandsnaam.wmv -vhook C:\drawtext.dll -f font.ttf -t "www.autostrada.tv"

Sorry, even geen [code] gebuikt om dat ik dan niets kan dikdrukken.
Ja wat je onderstreept is wat aangepast moet worden. Als het goed is bedoelde je dit:
[php]
$cmd = 'C:\\ffmpeg -i upload/$upload -target pal-vcd -ss $begin_preview -t 00:00:20.000 -s 320x240 $mapnaam/prev_$bestandsnaam.wmv -vhook C:\\drawtext.dll -f font.ttf -t "titel"';

Verwijderd

Topicstarter
Verwijderd schreef op maandag 30 juni 2008 @ 13:32:
In plaats van " te gebruiken kan je ook ' ' gebruiken
PHP:
1
$cmd = 'C:\ffmpeg -i upload/'.$upload.' -target pal-vcd -ss '.$begin_preview.' -t 00:00:20.000 -s 320x240  -vhook "C:\drawtext.dll -f font.ttf -t "www.autostrada.tv" "'.$mapnaam/prev_$bestandsnaam.wmv.'"';


dan zit je niet met al die \" :)
Helaas dat werkt niet ik heb geprobeerd:
PHP:
1
$cmd = 'C:\ffmpeg -i upload/'.$upload.' -target pal-vcd -ss '.$begin_preview.' -t 00:00:20.000 -s 320x240  -vhook "C:\drawtext.dll -f font.ttf -t "titel" "'.$mapnaam .'/'. prev_$bestandsnaam .'.wmv."';


In de output path zit namelijk nog een / en vaste extensie.

  • !null
  • Registratie: Maart 2008
  • Laatst online: 07:48
Het stuk vanaf C:\drawtext.dll zo gebruiken misschien:
"C:\drawtext... 'www.autostrada.tv'... "

En het ver schrijven zoals KimG dat doet.

Ampera-e (60kWh) -> (66kWh)


  • EnigmA-X
  • Registratie: Februari 2002
  • Laatst online: 13-11 15:08

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:25

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op maandag 30 juni 2008 @ 13:23:
cmd.exe werkt het wel normaal maar nu wil ik het vanuit php aanroepen.
Daar geloof ik geen snars van. Als jij daadwerkelijk

C:\ffmpeg -i upload/$upload -target pal-vcd -ss $begin_preview -t 00:00:20.000 -s 320x240 -vhook "C:\drawtext.dll -f font.ttf -t "www.autostrada.tv" " $mapnaam/prev_$bestandsnaam.wmv

werkend uitgevoerd hebt in de commandline (waarbij de $vars vervangen zijn) eet ik mijn schoen op..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz schreef op maandag 30 juni 2008 @ 14:24:
[...]


Daar geloof ik geen snars van. Als jij daadwerkelijk

C:\\ffmpeg -i upload/$upload -target pal-vcd -ss $begin_preview -t 00:00:20.000 -s 320x240 -vhook "C:\\drawtext.dll -f font.ttf -t "www.autostrada.tv" " $mapnaam/prev_$bestandsnaam.wmv

werkend uitgevoerd hebt in de commandline (waarbij de $vars vervangen zijn) eet ik mijn schoen op..
Zonder variabelen dus gewoon hard-code. Maar het gebruik van " was wel juist.
En c:\ een slash.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:25

Janoz

Moderator Devschuur®

!litemod

Het lijkt me ondenkbaar dat die -vhook parameter zo gewerkt heeft....

Dubbele slashes was ik idd nog even vergeten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
GreenSky schreef op maandag 30 juni 2008 @ 13:49:
Het stuk vanaf C:\drawtext.dll zo gebruiken misschien:
"C:\drawtext... 'www.autostrada.tv'... "

En het ver schrijven zoals KimG dat doet.
Dat werkt niet want dan ben je weer uit de string dat werkt alleen als het een variabele is.

Verwijderd

Topicstarter
GreenSky schreef op maandag 30 juni 2008 @ 13:49:
Het stuk vanaf C:\drawtext.dll zo gebruiken misschien:
"C:\drawtext... 'www.autostrada.tv'... "

En het ver schrijven zoals KimG dat doet.
Zo heb ik het nu dus hoe Kim het doet maar ik krijg een 500 Internal Error:

PHP:
1
2
$cmd = 'C:\\ffmpeg -i upload/'.$upload.' -target pal-vcd -ss '.$begin_preview.' -t 00:00:20.000 -s 320x240  -vhook C:\\drawtext.dll -f font.ttf -t "titel" '.$mapnaam .'/prev_'. $bestandsnaam .'.wmv.';
exec($cmd);

[ Voor 8% gewijzigd door Verwijderd op 01-07-2008 14:44 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:25

Janoz

Moderator Devschuur®

!litemod

Parse errors zijn er natuurlijk simpel zelf uit te halen. Gewoon de foutmelding lezen om vervolgens tot de ontdekking te komen dat je een tikfout gemaakt hebt......

Het zou je niet misstaan wanneer je ook zelf eens iets actiever mee zou denken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

Daar staat ook prev_$bestandsnaam. Kom op zeg, een beetje meer inzet mag ook wel.

De clue is volgens mij gewoon, dat als jij letterlijk \" mee wilt geven op de commandline, dat je dat in PHP dan moet doen middels \\\" (oftewel, zowel de \ als de " escapen)

[ Voor 52% gewijzigd door .oisyn op 30-06-2008 14:59 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Janoz schreef op maandag 30 juni 2008 @ 14:57:
Parse errors zijn er natuurlijk simpel zelf uit te halen. Gewoon de foutmelding lezen om vervolgens tot de ontdekking te komen dat je een tikfout gemaakt hebt......

Het zou je niet misstaan wanneer je ook zelf eens iets actiever mee zou denken.
Parse foutje heb ik al gevonden was een stomme typefout.
Maar hij verwerkt het bestand nog steeds niet.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:25

Janoz

Moderator Devschuur®

!litemod

@.oisyn: Ik hoopte dat ik met wat vragen hem zelf die richting op kon laten gaan, helaas lukte dat nog niet echt inderdaad.......

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

manual:
With safe mode enabled, the command string is escaped with escapeshellcmd(). Thus, echo y | echo x becomes echo y \| echo x.

On track


Verwijderd

Topicstarter
Janoz schreef op maandag 30 juni 2008 @ 15:09:
@.oisyn: Ik hoopte dat ik met wat vragen hem zelf die richting op kon laten gaan, helaas lukte dat nog niet echt inderdaad.......
Ik had de parse fout al lang gevonden voordat jij gereageerd had. Heb het in de vorige post gewijzigd maar jullie hadden de fout nog gezien toen jullie wilde reageren.

Dus het is niet dat ik zelf niets doe of zo ik ben zelf ook actief aan het zoeken ook in Google en het proberen van mogelijkheden. De output van $cmd lijkt allemaal juist te zijn maar toch is die niet goed heel apart.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:25

Janoz

Moderator Devschuur®

!litemod

Software ontwikkeling is toch echt een redelijk exacte bezigheid. Het is niet zo dat iets helemaal juist is maar toch niet juist. Het is goed of het is fout.

Daarnaast geloof ik nog steeds niet dat de vhook parameter gewerkt heeft zoals jij hem hier post. dat kan gewoon niet.
Als het op de commandline gewerkt heeft dan heb jij toch echt iets anders dan
code:
1
"C:\drawtext.dll -f font.ttf -t "www.autostrada.tv" "

ingetikt

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
simpele test : schrijf de output eens naar een .bat bestand en probeer dit zelf uit te voeren.

Als de output 100% correct is moet dit .bat bestand in 1x werken

Verwijderd

Topicstarter
Janoz schreef op maandag 30 juni 2008 @ 21:39:
Software ontwikkeling is toch echt een redelijk exacte bezigheid. Het is niet zo dat iets helemaal juist is maar toch niet juist. Het is goed of het is fout.

Daarnaast geloof ik nog steeds niet dat de vhook parameter gewerkt heeft zoals jij hem hier post. dat kan gewoon niet.
Als het op de commandline gewerkt heeft dan heb jij toch echt iets anders dan
code:
1
"C:\drawtext.dll -f font.ttf -t "www.autostrada.tv" "

ingetikt
De onderstaande volledige regel werkt in de commandline:
code:
1
c:\>ffmpeg -i voorbeeld.wmv -target pal-vcd -ss 00:00:00.000 -t 00:00:20.000 -vhooks "C:\drawtext.dll -f font.ttf -t "titel"" test.wmv


Vanuit PHP geeft dat volgende output die juist is in vergelijking met MS-DOS
PHP:
1
C:\ffmpeg -i upload/kauwgom.wmv -target pal-vcd -ss 00:00:00 -t 00:00:20.000 -vhook "C:\drawtext.dll -f font.ttf -t "www.autostrada.tv" " 13e28b82b739928c070be77afbc668ea/prev_kauwgom.wmv

[ Voor 15% gewijzigd door Verwijderd op 30-06-2008 22:33 ]


Verwijderd

Los van het exec probleem, ik was daarnet even op je probleem aan het Googlen en kwam terecht op deze lib, ffmpeg-php. Hiermee kan je ffmpeg rechtstreeks aanspreken met functies in php zonder al dat exec gedoe (weliswaar moet je linux draaien alhoewel het ook zou kunnen op Windows)

Ook zijn er enkele classes beschikbaar :)

edit: ignore, is blijkbaar bedoeld voor thumbs te generen van je filmpje enzo O-) ... maar wie weet komt het ooit van pas

[ Voor 8% gewijzigd door Verwijderd op 30-06-2008 23:00 ]


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Verwijderd schreef op maandag 30 juni 2008 @ 22:31:
[...]
De onderstaande volledige regel werkt in de commandline:
code:
1
c:\>ffmpeg -i voorbeeld.wmv -target pal-vcd -ss 00:00:00.000 -t 00:00:20.000 -vhooks "C:\drawtext.dll -f font.ttf -t "titel"" test.wmv


Vanuit PHP geeft dat volgende output die juist is in vergelijking met MS-DOS
PHP:
1
C:\ffmpeg -i upload/kauwgom.wmv -target pal-vcd -ss 00:00:00 -t 00:00:20.000 -vhook "C:\drawtext.dll -f font.ttf -t "www.autostrada.tv" " 13e28b82b739928c070be77afbc668ea/prev_kauwgom.wmv
Ik moet zeggen dat ik toch 1 of 2 verschilletjes zie. Nog even daargelaten dat ik ten zeerste betwijfel of in je eerste voorbeeld je "" wel goed staan.

Maar als jij je phpoutput plakt in een commandline werkt het dan wel of niet?
Zoja, zet het dan eens letterlijk in een exec commando in php en ga dan shellescapen. Dan zou het nog steeds goed moeten werken of je begindirectory is anders of je rechten staan niet goed...
Zonee, fix dat eerst eens.

Verwijderd

Topicstarter
Gomez12 schreef op maandag 30 juni 2008 @ 23:27:
[...]

Ik moet zeggen dat ik toch 1 of 2 verschilletjes zie. Nog even daargelaten dat ik ten zeerste betwijfel of in je eerste voorbeeld je "" wel goed staan.

Maar als jij je phpoutput plakt in een commandline werkt het dan wel of niet?
Zoja, zet het dan eens letterlijk in een exec commando in php en ga dan shellescapen. Dan zou het nog steeds goed moeten werken of je begindirectory is anders of je rechten staan niet goed...
Zonee, fix dat eerst eens.
Welke verschillen op mapnaam en bestandsnaam na zie je dan.

[ Voor 51% gewijzigd door Verwijderd op 01-07-2008 16:38 ]


Verwijderd

Topicstarter
Het is opgelost met de onderstaande php regel:

PHP:
1
$cmd = 'ffmpeg -i upload/' . $upload . ' -target pal-vcd -ss '. $begin_preview . ' -t 00:00:20.000 -vhook "drawtext.dll -f font.ttf -t www.autostrada.tv " ' . $mapnaam . '/prev_' . $bestandsnaam . '.wmv';


Het werkt volledig inmiddels na wat laatste wijzigingen.

[ Voor 47% gewijzigd door Verwijderd op 01-07-2008 17:05 . Reden: Probleem opgelost. ]


Verwijderd

Zoals Gomez al zei, het zal wel een onafgesloten stuk string-segment zijn geweest.

[edit] pff inderdaad, ik snap nu de syntax pas van de parameters :S

[ Voor 30% gewijzigd door Verwijderd op 01-07-2008 18:00 ]


Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 01 juli 2008 @ 17:38:
Zoals Gomez al zei, het zal wel een onafgesloten stuk string-segment zijn geweest.
Nee eigenlijk:
1. "" twee keer teveel wat gewoon onnodig was.
2. Locatie van bestanden (exe / dll) was niet volledig juist.

Verwijderd

Topicstarter
Nu wil ik hetzelfde doen met een afbeelding dus een watermark.

http://ffmpeg.mplayerhq.hu/hooks.html#SEC4

Maar op een of andere manier krijg ik de afbeelding niet helemaal scherp. Dit zou toch geen probleem moeten vormen?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
En dat is een PHP probleem omdat?

{signature}


Verwijderd

Topicstarter
Voutloos schreef op woensdag 02 juli 2008 @ 12:42:
En dat is een PHP probleem omdat?
Ik weet niet of het direct met PHP te maken heeft maar ik gebruik het wel vanuit PHP.
Mocht het ergens anders moeten dan hoor ik dat graag en plaats ik het daar.

Maar als ik watermark toepas dan moet ik ook -an gebruiken. -an staat voor geen geluid maar ik wil dat wel. Laat ik die tag weg dan doet het film bestand het niet meer.

[ Voor 21% gewijzigd door Verwijderd op 02-07-2008 14:21 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:25

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op woensdag 02 juli 2008 @ 12:47:
[...]


Ik weet niet of het direct met PHP te maken heeft maar ik gebruik het wel vanuit PHP.
Mocht het ergens anders moeten dan hoor ik dat graag en plaats ik het daar.
Wat is dat nu weer voor vreemde redenatie. Je voert je code in via het toetsenbord, misschien moet je je topic maar eens openen in harde waren?
Maar als ik watermark toepas dan moet ik ook -an gebruiken. -an staat voor geen geluid maar ik wil dat wel. Laat ik die tag weg dan doet het film bestand het niet meer.
Weer een nieuw ffmpeg probleem? Mijn geduld is nu wel een beetje op. Voor elk wissewasje van dit project wordt weer een topic geopend. Binnen de topics blijkt dat je
1:Niet fatsoenlijk debugt.
2:Nauwelijks informatie en feedback op reacties geeft
3:Alle topics uiteindelijk op 'bij het handje neem' topics uitlopen.
4:Van het ene probleem naar het andere hopt

Blijkbaar is dit project nu nog ietsje boven je niveau. Ik raad je dan ook aan om dit project eens opzij te leggen en je eens richten op iets simpelere dingen zodat je het hele concept software ontwikkeling wat beter onder de knie gaat krijgen.

Dit topic heeft iig nu wel lang genoeg geduurd..

[ Voor 1% gewijzigd door een moderator op 02-07-2008 18:24 . Reden: typo's :X ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1

Dit topic is gesloten.