Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Ścieżka dostępu ffmpeg
Forum PHP.pl > Forum > Przedszkole
Mis323
Cześć,
Zainstalowałem na xamppie ffmpeg. Mam bazę danych gdzie mam filmy,
chciałbym za pomocą ffmpeg zrobić skróty tych filmów. Problem polega na tym iż ffmpeg nie chce odczytać ścieżki dostępu z bazy danych czy ze stałej.
Działa tylko
  1. exec('ffmpeg -i filmy/0d53b415315578cf6d6e4f7650268fcf.mp4 -ss 00:03:00 -t 00:00:15 test/test.mp4');


Jeśli przypisze ścieżkę dostępu do stałej to nic się nie dzieje.

  1. $nazwa = 'filmy/0d53b415315578cf6d6e4f7650268fcf.mp4';
  2.  
  3.  
  4. exec('ffmpeg -i ".$nazwa." -ss 00:03:00 -t 00:00:15 test/test.mp4');
  5.  
  6.  
kreatiff
Źle używasz cudzysłowu.
Albo:
  1. exec('ffmpeg -i ' . $nazwa . ' -ss 00:03:00 -t 00:00:15 test/test.mp4');

albo:
  1. exec("ffmpeg -i $nazwa -ss 00:03:00 -t 00:00:15 test/test.mp4");

Zwróć uwagę na apostrofy i cudzysłowy w obu przypadkach.
Mis323
Cytat(kreatiff @ 30.08.2019, 12:34:46 ) *
Źle używasz cudzysłowu.
Albo:
  1. exec('ffmpeg -i ' . $nazwa . ' -ss 00:03:00 -t 00:00:15 test/test.mp4');

albo:
  1. exec("ffmpeg -i $nazwa -ss 00:03:00 -t 00:00:15 test/test.mp4");

Zwróć uwagę na apostrofy i cudzysłowy w obu przypadkach.


Sprawdzałem wczoraj różne opcje niestety nic to nie zmieniło, spróbuje jeszcze raz jak napisałeś.
viking
Sprawdziłeś odpowiedź otrzymaną z wykonania tego polecenia?
Mis323
Cytat(kreatiff @ 30.08.2019, 12:34:46 ) *
Źle używasz cudzysłowu.
Albo:
  1. exec('ffmpeg -i ' . $nazwa . ' -ss 00:03:00 -t 00:00:15 test/test.mp4');

albo:
  1. exec("ffmpeg -i $nazwa -ss 00:03:00 -t 00:00:15 test/test.mp4");

Zwróć uwagę na apostrofy i cudzysłowy w obu przypadkach.


Super 1 przykład działa! dziękuje, mam jeszcze jedno pytanie

  1.  
  2. <?php
  3. require ('vendor/autoload.php');
  4. include('db/connection.php'); // polaczenie z baza danych
  5.  
  6. $nazwa = 'filmy/0d53b415315578cf6d6e4f7650268fcf.mp4';
  7.  
  8. exec('ffmpeg -i ' . $nazwa . ' -ss 00:03:00 -t 00:00:15 test/test2222.mp4');
  9.  
  10.  
  11. $zapytanie = $pdo->prepare('SELECT * FROM baza' );
  12. $zapytanie->execute(); // wykonaj zayptanie do bazy danych
  13. while($rekord = $zapytanie->fetch()) {
  14.  
  15.  
  16. exec('ffmpeg -i ' . $rekord['url'] . ' -ss 00:03:00 -t 00:00:15 test/' . $rekord['url'] . '');
  17. echo $rekord[url];
  18. }
  19.  
  20.  
  21. ?>
  22.  


Niestety ale po wykonaniu tego kodu nic się nie dzieje

  1. exec('ffmpeg -i ' . $rekord['url'] . ' -ss 00:03:00 -t 00:00:15 test/' . $rekord['url'] . '');

jak usunę '' i wpisze samo $rekord[url] to wyskakuje błąd

Warning: Use of undefined constant url - assumed 'url' (this will throw an Error in a future version of PHP)

Do tej pory wszędzie pisałem $rekord[url] i było wszystko w porządku ktoś wyjaśni w czym jest problem ewentualnie odeśle do jakiegoś manuala?
Neutral
Sprawdź może to manual.

Przykład

  1. <?php
  2. $hello = 'hello';
  3.  
  4. echo "${hello}!";
  5. ?>
kreatiff
Sprawdź najpierw w pętli, czy $rekord['url'] (apostrofy powinny być, a w przyszłych wersjach PHP będą musiały być) istnieje i wskazuje na plik do obróbki.
A jak poprawnie pobiera ścieżkę dostępu do pliku, to nie wiem, może w ścieżce output dla polecenia ffmpeg nie można podawać katalogów, które nie istnieją? A tak właśnie jest (nie istnieje katalog "filmy" w katalog "test")?
Dodaj drugi parametr do exec() https://www.php.net/manual/en/function.exec.php i zobacz co tam się wyświetla.
Mis323
Dzięki, ale już wiem w czym problem ffmpeg nie może utworzyć nazwy filmów jeśli jest spacja np.
tytuł w bazie danych "szybcy i wściekli" jako nazwę pliku trzeba zastosować np. id ponieważ ta tabela nie zawiera spacji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.