

$texte = str_replace("'", "’", $_POST['texte']);
file_put_content("fichier.txt", $texte);Code : Tout sélectionner
$clipDuration = (float) ($clipFrames / $clipFrameRate) - 0.5;
file_put_contents("$projectPath/clip${i}_desc.txt", $parameters["clip${i}_desc"]);
shell_exec("cd $projectPath && ffmpeg -i $clipsToDescribe[$clipIndex] -vf 'drawtext=fontfile=$fontPath: textfile=clip${i}_desc.txt: fontcolor=white: fontsize=46: box=1: [email protected]: boxborderw=5: x=(w-text_w)/2: y=(h-text_h-50): fix_bounds=true, fade=t=in:st=0:d=0.3,fade=t=out:st=$clipDuration:d=0.3' -b:v 3000K -b:a 192K clip${i}.webm");Code : Tout sélectionner
// Adding descriptions for each clip and fade in and fade out filters
$clipsToDescribe = glob("$projectPath/*.webm");
$clipFrameRate = (int) shell_exec("cd $projectPath && ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=r_frame_rate $clipsToDescribe[0]");
$clipFrameRate = $clipFrameRate > 60 ? 30 : $clipFrameRate;
for($i = 1; $i <= count($clipsToDescribe); $i++) {
$clipIndex = $i - 1;
$clipFrames = (int) shell_exec("cd $projectPath && ffprobe -v error -select_streams v:0 -count_packets -show_entries stream=nb_read_packets -of csv=p=0 $clipsToDescribe[$clipIndex]");
$clipDuration = (float) ($clipFrames / $clipFrameRate) - 0.5;
$clipDescription = $parameters["clip${i}_desc"];
// Use str_replace() function to replace ' with ’
$clipDescription = str_replace("'", "’", $clipDescription);
file_put_contents("$projectPath/clip${i}_desc.txt", $clipDescription);
shell_exec("cd $projectPath && ffmpeg -i $clipsToDescribe[$clipIndex] -vf 'drawtext=fontfile=$fontPath: textfile=clip${i}_desc.txt: fontcolor=white: fontsize=46: box=1: [email protected]: boxborderw=5: x=(w-text_w)/2: y=(h-text_h-50): fix_bounds=true, fade=t=in:st=0:d=0.3,fade=t=out:st=$clipDuration:d=0.3' -b:v 3000K -b:a 192K clip${i}.webm");Code : Tout sélectionner
{ Error: Command failed: php ./public/src/generate.php projectPath='/home/rohan/Documents/dodoc2/_projects/nouveau-test' musicPath='/_musics/classic.mp3' clip1_name='' clip2_name='' clip3_name='' clip4_name='' clip5_name='' clip1_desc='C'est un nouveau test ' clip2_desc='C'est le deuxième test' clip3_desc='C'est le troisième test' clip4_desc='C'est le quatrième ' clip5_desc='C'est le dernier' project_desc='' workshop_type='Un nouveau test' title='Nouveau test' participants='Molinillo Rohan
'
PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6
PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6
PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6
PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6
PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6
PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6
PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6
PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6
ffmpeg version 5.1.1-1ubuntu2.1 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 12 (Ubuntu 12.2.0-3ubuntu1)
configuration: --prefix=/usr --extra-version=1ubuntu2.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --disable-sndio --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-shared
libavutil 57. 28.100 / 57. 28.100
libavcodec 59. 37.100 / 59. 37.100
libavformat 59. 27.100 / 59. 27.100
libavdevice 59. 7.100 / 59. 7.100
libavfilter 8. 44.100 / 8. 44.100
libswscale 6. 7.100 / 6. 7.100
libswresample 4. 7.100 / 4. 7.100
libpostproc 56. 6.100 / 56. 6.100
Input #0, matroska,webm, from '/home/rohan/Documents/dodoc2/_projects/nouveau-test/video-20230404-155131-80i.webm':
Metadata:
encoder : QTmuxingAppLibWebM-0.0.1
Duration: N/A, start: -0.001000, bitrate: N/A
Stream #0:0(eng): Video: vp8, yuv420p(progressive), 1280x720, SAR 1:1 DAR 16:9, 1k tbr, 1k tbn (default)
Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
Stream mapping:
Stream #0:0 -> #0:0 (vp8 (native) -> vp9 (libvpx-vp9))
Stream #0:1 -> #0:1 (opus (native) -> opus (libopus))
Press [q] to stop, [?] for help
[libvpx-vp9 @ 0x55c0b046cc40] v1.12.0
Output #0, webm, to 'clip1.webm':
Metadata:
encoder : Lavf59.27.100
Stream #0:0(eng): Video: vp9, yuv420p(tv, bt470bg/unknown/unknown, progressive), 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 3000 kb/s, 1k fps, 1k tbn (default)
Metadata:
encoder : Lavc59.37.100 libvpx-vp9
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, flt, 192 kb/s (default)
Metadata:
encoder : Lavc59.37.100 libopus
frame= 197 fps= 10 q=18.0 Lsize= 2268kB time=00:00:06.50 bitrate=2857.7kbits/s speed=0.339x
video:2094kB audio:169kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.189658%
PHP Warning: Undefined array key "clip2_desc" in /home/rohan/carnet-numerique/public/src/generate.php on line 22
PHP Fatal error: Uncaught TypeError: str_replace(): Argument #3 ($subject) must be of type array|string, null given in /home/rohan/carnet-numerique/public/src/generate.php:24
Stack trace:
#0 /home/rohan/carnet-numerique/public/src/generate.php(24): str_replace()
#1 {main}
thrown in /home/rohan/carnet-numerique/public/src/generate.php on line 24
/bin/sh: 2: Syntax error: Unterminated quoted string
at ChildProcess.exithandler (child_process.js:275:12)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at maybeClose (internal/child_process.js:925:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
killed: false,
code: 2,
signal: null,
cmd: 'php ./public/src/generate.php projectPath=\'/home/rohan/Documents/dodoc2/_projects/nouveau-test\' musicPath=\'/_musics/classic.mp3\' clip1_name=\'\' clip2_name=\'\' clip3_name=\'\' clip4_name=\'\' clip5_name=\'\' clip1_desc=\'C\'est un nouveau test \' clip2_desc=\'C\'est le deuxième test\' clip3_desc=\'C\'est le troisième test\' clip4_desc=\'C\'est le quatrième \' clip5_desc=\'C\'est le dernier\' project_desc=\'\' workshop_type=\'Un nouveau test\' title=\'Nouveau test\' participants=\'Molinillo Rohan\n\'' }
Même si je fais en sorte que les apostrophes soit écrite en échapper dans mon fichier TXT, le script PHP ne le prend pas en compte et les sous-titres afficher sur la vidéo sont toujours cassé.Il faut que tu échappes tes apostrophes, donc les remplacer par \'
clip1_desc='C\'est un nouveau test'
Ceci devrait fonctionner :
clip1_desc="C'est un nouveau test"$parameters = array_reduce($argv, function($carry, $arg) {
$tokens = explode('=', $arg);
$carry[$tokens[0]] = $tokens[1];
return $carry;
}, []);
//...
file_put_contents("$projectPath/clip${i}_desc.txt", $parameters["clip${i}_desc"]);$clipDescription = $parameters["clip${i}_desc"];
// Use str_replace() function to replace ' with ’
$clipDescription = str_replace("est", "ok", $clipDescription);
Si l'erreur marque :
Fais déjà marcher ton appel FFMPEG sans passer par PHP.Même si je fais en sorte que les apostrophes soit écrite en échapper dans mon fichier TXT, le script PHP ne le prend pas en compte et les sous-titres afficher sur la vidéo sont toujours cassé.![]()
Code : Tout sélectionner
{ Error: Command failed: php ./public/src/generate.php projectPath='/home/rohan/Documents/dodoc2/_projects/test-2' musicPath='/_musics/canals.mp3' clip1_name='' clip2_name='' clip3_name='' clip4_name='' clip5_name='' clip1_desc='C'est la première' clip2_desc='C'est la deuxième' clip3_desc='C'est la troisième' clip4_desc='C'est l'avant dernière' clip5_desc='C'est la dernière' project_desc='' workshop_type='Atelier Robotique' title='Test 2' participants='Molinillo Rohan
'
PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6
PHP Warning: Undefined array key 1 in /home/rohan/carnet-numerique/public/src/generate.php on line 6
ffmpeg version 5.1.1-1ubuntu2.1 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 12 (Ubuntu 12.2.0-3ubuntu1)
configuration: --prefix=/usr --extra-version=1ubuntu2.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --disable-sndio --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-shared
libavutil 57. 28.100 / 57. 28.100
libavcodec 59. 37.100 / 59. 37.100
libavformat 59. 27.100 / 59. 27.100
libavdevice 59. 7.100 / 59. 7.100
libavfilter 8. 44.100 / 8. 44.100
libswscale 6. 7.100 / 6. 7.100
libswresample 4. 7.100 / 4. 7.100
libpostproc 56. 6.100 / 56. 6.100
Input #0, matroska,webm, from '/home/rohan/Documents/dodoc2/_projects/test-2/video-20230406-112907-sxn.webm':
Metadata:
encoder : QTmuxingAppLibWebM-0.0.1
Duration: N/A, start: -0.001000, bitrate: N/A
Stream #0:0(eng): Video: vp8, yuv420p(progressive), 1280x720, SAR 1:1 DAR 16:9, 10 tbr, 1k tbn (default)
Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
Stream mapping:
Stream #0:0 -> #0:0 (vp8 (native) -> vp9 (libvpx-vp9))
Stream #0:1 -> #0:1 (opus (native) -> opus (libopus))
Press [q] to stop, [?] for help
[libvpx-vp9 @ 0x555b9789cdc0] v1.12.0
Output #0, webm, to 'clip1.webm':
Metadata:
encoder : Lavf59.27.100
Stream #0:0(eng): Video: vp9, yuv420p(tv, bt470bg/unknown/unknown, progressive), 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 3000 kb/s, 10 fps, 1k tbn (default)
Metadata:
encoder : Lavc59.37.100 libvpx-vp9
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, flt, 192 kb/s (default)
Metadata:
encoder : Lavc59.37.100 libopus
frame= 93 fps=9.9 q=2.0 Lsize= 2051kB time=00:00:09.24 bitrate=1818.4kbits/s speed=0.981x
video:1798kB audio:249kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.222542%
PHP Warning: Undefined array key "clip2_desc" in /home/rohan/carnet-numerique/public/src/generate.php on line 22
PHP Fatal error: Uncaught TypeError: str_replace(): Argument #3 ($subject) must be of type array|string, null given in /home/rohan/carnet-numerique/public/src/generate.php:23
Stack trace:
#0 /home/rohan/carnet-numerique/public/src/generate.php(23): str_replace()
#1 {main}
thrown in /home/rohan/carnet-numerique/public/src/generate.php on line 23
at ChildProcess.exithandler (child_process.js:275:12)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at maybeClose (internal/child_process.js:925:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
killed: false,
code: 255,
signal: null,
cmd: 'php ./public/src/generate.php projectPath=\'/home/rohan/Documents/dodoc2/_projects/test-2\' musicPath=\'/_musics/canals.mp3\' clip1_name=\'\' clip2_name=\'\' clip3_name=\'\' clip4_name=\'\' clip5_name=\'\' clip1_desc=\'C\'est la première\' clip2_desc=\'C\'est la deuxième\' clip3_desc=\'C\'est la troisième\' clip4_desc=\'C\'est l\'avant dernière\' clip5_desc=\'C\'est la dernière\' project_desc=\'\' workshop_type=\'Atelier Robotique\' title=\'Test 2\' participants=\'Molinillo Rohan\n\'' }