Autor Zpráva
kironet96
Profil
Dobrý den,

chtěl bych se zeptat.
Nevíte jestli je možné v PHP při uploadu videa určit limit na trvání videa?

Např. limit je 1min, a uživatel nahrává 5min, tak aby ho to nepustilo.

Díky.
Joker
Profil
Tak pokud je na serveru nějaký modul, který dokáže zjistit délku toho videa, tak ano.
kironet96
Profil
Joker:
Tak pokud je na serveru nějaký modul, který dokáže zjistit délku toho videa, tak ano.

A nevíš jaký modul to dokáže?
Díky :)
MartinP
Profil *
To záleží na formátu nahraného videa.
janbarasek
Profil
Rád bych ještě poznamenal, že tyto věci se na serveru dají obvykle zjistit až po dokončení uploadu (což zbytečně v případě neúspěchu žere výkon). Hodně lidí má v prohlížeči flash, který by toto mohl ověřit už během uploadu a uživatel tak nebude zbytečně čekat na kompletní přenesení, když by to pak stejně skončilo neúspěchem.
xROAL
Profil
janbarasek:
Hodně lidí má v prohlížeči flash, který by toto mohl ověřit už během uploadu
Pri tomto ma napadol aj HTML5 <video> element. Bolo by možné načítať do neho video z užívateľovho disku (createObjectURL(), alebo FileReader()) následne, po načítaní, zistiť jeho trvanie z atribútu videoElement.duration a až potom prípadne pokračovať k uploadu. Neviem však, akú podporu v prehliadačoch by takéto riešenie malo.
kironet96
Profil
Diky, zkusím to zatim takhle, pak si kdyžtak nainstalují extension.
kironet96
Profil
MartinP:
To záleží na formátu nahraného videa.

Potřebují teda MP4.
Chytil jsem se za FFMPEG, ale zjistil jsem že prý funguje jen na php verzi 5.3.

Je nějaka alternativa ? Nebo jaký bych měl na to použít modul?

Díky :)
Jan Tvrdík
Profil
Viz také Pouzivani php_ffmpeg.dll knihovny v php
kironet96
Profil
Jan Tvrdík:
Viz také Pouzivani php_ffmpeg.dll knihovny v php

Díky, ale nějak jsem to už konečně nainstaloval.

Teď zase nemohu najít jak convertovat uploadováne vide do formatu MP4...
Většina ukázek co jsem našel jsou spíš kódy do terminálu.

Např. toto: http://stackoverflow.com/questions/3119797/ffmpeg-settings-for-converting-to-mp4-and-ogg-for-html5-video

Poradí mi někdo nějaký tutorial?

Děkuji předem
Jan Tvrdík
Profil
Já si pořád myslím, že github.com/PHP-FFMpeg/PHP-FFMpeg je nejlepší řešení.
kironet96
Profil
Jan Tvrdík:
Já si pořád myslím, že github.com/PHP-FFMpeg/PHP-FFMpeg je nejlepší řešení.

Jop, jen něják nevím jak ji nainstalovat do linuxu, spíš jak spustit ten .json script.
kironet96
Profil
Jan Tvrdík:
Já si pořád myslím, že github.com/PHP-FFMpeg/PHP-FFMpeg je nejlepší řešení.

Tak jsem to nainstalovál, ale hlásí mi to chybu při convertaci videa.

Fatal error: Uncaught exception 'Alchemy\BinaryDriver\Exception\ExecutionFailureException' with message 'ffmpeg failed to execute command '/usr/bin/ffmpeg' '-y' '-i' '1.avi' '-async' '1' '-metadata:s:v:0' 'start_time=0' '-s' '300x300' '-vcodec' 'libx264' '-acodec' 'libfaac' '-b:v' '1000k' '-refs' '6' '-coder' '1' '-sc_threshold' '40' '-flags' '+loop' '-me_range' '16' '-subq' '7' '-i_qfactor' '0.71' '-qcomp' '0.6' '-qdiff' '4' '-trellis' '1' '-b:a' '128k' '-pass' '1' '-passlogfile' '/tmp/ffmpeg-passes540ade4b487cayok4f/pass-540ade4b489ea' 'export-x264.mp4'' in /home/admin/web/default.domain/public_html/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunner.php:100 Stack trace: #0 /home/admin/web/default.domain/public_html/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunner.php(72): Alchemy\BinaryDriver\ProcessRunner->doExecutionFailure(''/usr/bin/ffmpe...') #1 /home/admin/web/default.domain/public_html/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/AbstractBinary.php(209): Alchemy\Binary in /home/admin/web/default.domain/public_html/src/FFMpeg/Media/Video.php on line 168

Použil jsem pro test kus kódu co je v github.
Viz.:

<?php
require 'vendor/autoload.php';

$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('1.avi');
$video
    ->filters()
    ->resize(new FFMpeg\Coordinate\Dimension(300, 300))
    ->synchronize();
$video
    ->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(10))
    ->save('frame.jpg');
$video
    ->save(new FFMpeg\Format\Video\X264(), 'export-x264.mp4')
    ->save(new FFMpeg\Format\Video\WMV(), 'export-wmv.wmv')
    ->save(new FFMpeg\Format\Video\WebM(), 'export-webm.webm');

?>

tu je vypis po zadání příkazu ffmpeg do terminálu

[root@vps90687 public_html]# ffmpeg
FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers
  built on Jan 29 2012 17:52:15 with gcc 4.4.5 20110214 (Red Hat 4.4.5-6)
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-avfilter-lavf --enable-libdc1394 --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Jan Tvrdík
Profil
kironet96:
Když spustíš ručně ten příkaz přes příkazovou řádku, tak se provede?

/usr/bin/ffmpeg '-y' '-i' '1.avi' '-async' '1' '-metadata:s:v:0' 'start_time=0' '-s' '300x300' '-vcodec' 'libx264' '-acodec' 'libfaac' '-b:v' '1000k' '-refs' '6' '-coder' '1' '-sc_threshold' '40' '-flags' '+loop' '-me_range' '16' '-subq' '7' '-i_qfactor' '0.71' '-qcomp' '0.6' '-qdiff' '4' '-trellis' '1' '-b:a' '128k' '-pass' '1' '-passlogfile' '/tmp/ffmpeg-passes540ade4b487cayok4f/pass-540ade4b489ea' 'export-x264.mp4'
kironet96
Profil
Jan Tvrdík:

Vypíše mi to:

[avi @ 0x24c7670]max_analyze_duration reached

Video má 36 vteřin.

Dál jsem tam video co má 7 vteřin, tak to hází chybu:

  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.avi':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp41mp42isom
  Duration: 00:00:07.00, start: 0.000000, bitrate: 1652 kb/s
    Stream #0.0(und): Video: h264, yuv420p, 480x480 [PAR 1:1 DAR 1:1], 1520 kb/s, 29.71 fps, 30 tbr, 90k tbn, 60 tbc
    Stream #0.1(und): Audio: aac, 44100 Hz, mono, s16, 126 kb/s
Unrecognized option 'metadata:s:v:0'

PS: Ten passlogfile se mi neukládá.
kironet96
Profil
Furt se mi to nějak nepovedlo rozběhat.
Není problém v těch scriptech?
Protože např.
exec('ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4');
Vypadá že funguje ok.
Ale zalíbila se mi ta knihovna.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: