Avatar billede bigtime Nybegynder
23. januar 2009 - 20:25 Der er 40 kommentarer og
1 løsning

thumbnails af videoer ?

hey hvordan laver jeg det sådan når folk har uploadet en film så laver siden selv et thumbnails af filmen. eller nærmere det der som er på youtube så det viser en pil på skærmen og så trykker man bare for at se filmen???
Avatar billede jakobdo Ekspert
23. januar 2009 - 20:26 #1
ffmpeg og det kræver enten egen server, meget fleksibel webhotel eller speciel ffmpeg hosting.
Avatar billede bigtime Nybegynder
23. januar 2009 - 20:27 #2
har egen server og har prøvet at installer ffmpeg men er ikke helt sikker på om det er installeret
Avatar billede bigtime Nybegynder
23. januar 2009 - 20:28 #3
er installeret rigtigt
Avatar billede jakobdo Ekspert
23. januar 2009 - 20:36 #4
Så se om ikke også du kan få installeret denne pakke også: http://ffmpeg-php.sourceforge.net/
Avatar billede bigtime Nybegynder
23. januar 2009 - 20:38 #5
det er en freebsd server bare til orintering
Avatar billede bigtime Nybegynder
23. januar 2009 - 20:50 #6
det link du giver der er det ikke bare til install af ffmpeg ?
Avatar billede bigtime Nybegynder
23. januar 2009 - 20:51 #7
når jeg skriver ffmpeg kommer det her på serveren.

Main options:
-L                  show license
-h                  show help
-version            show version
-formats            show available formats, codecs, protocols, ...
-f fmt              force format
-img img_fmt        force image format
-i filename        input file name
-y                  overwrite output files
-t duration        set the recording time
-ss time_off        set the start time offset
-itsoffset time_off  set the input ts offset
-title string      set the title
-timestamp time    set the timestamp
-author string      set the author
-copyright string  set the copyright
-comment string    set the comment
-v verbose          control amount of logging
-target type        specify target file type ("vcd", "svcd" or "dvd")
-hq                activate high quality settings

Video options:
-b bitrate          set video bitrate (in kbit/s)
-r rate            set frame rate (Hz value, fraction or abbreviation)
-s size            set frame size (WxH or abbreviation)
-aspect aspect      set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)
-croptop size      set top crop band size (in pixels)
-cropbottom size    set bottom crop band size (in pixels)
-cropleft size      set left crop band size (in pixels)
-cropright size    set right crop band size (in pixels)
-padtop size        set top pad band size (in pixels)
-padbottom size    set bottom pad band size (in pixels)
-padleft size      set left pad band size (in pixels)
-padright size      set right pad band size (in pixels)
-padcolor color    set color of pad bands (Hex 000000 thru FFFFFF)
-vn                disable video
-bt tolerance      set video bitrate tolerance (in kbit/s)
-maxrate bitrate    set max video bitrate tolerance (in kbit/s)
-minrate bitrate    set min video bitrate tolerance (in kbit/s)
-bufsize size      set ratecontrol buffere size (in kByte)
-vcodec codec      force video codec ('copy' to copy stream)
-sameq              use same video quality as source (implies VBR)
-pass n            select the pass number (1 or 2)
-passlogfile file  select two pass log file name

Advanced Video options:
-pix_fmt format    set pixel format
-g gop_size        set the group of picture size
-intra              use only intra frames
-qscale q          use fixed video quantiser scale (VBR)
-qmin q            min video quantiser scale (VBR)
-qmax q            max video quantiser scale (VBR)
-lmin lambda        min video lagrange factor (VBR)
-lmax lambda        max video lagrange factor (VBR)
-mbqmin q          min macroblock quantiser scale (VBR)
-mbqmax q          max macroblock quantiser scale (VBR)
-qdiff q            max difference between the quantiser scale (VBR)
-qblur blur        video quantiser scale blur (VBR)
-qcomp compression  video quantiser scale compression (VBR)
-rc_init_cplx complexity  initial complexity for 1-pass encoding
-b_qfactor factor  qp factor between p and b frames
-i_qfactor factor  qp factor between p and i frames
-b_qoffset offset  qp offset between p and b frames
-i_qoffset offset  qp offset between p and i frames
-ibias bias        intra quant bias
-pbias bias        inter quant bias
-rc_eq equation    set rate control equation
-rc_override override  rate control override for specific intervals
-me method          set motion estimation method
-dct_algo algo      set dct algo
-idct_algo algo    set idct algo
-me_threshold      motion estimaton threshold
-mb_threshold      macroblock threshold
-er n              set error resilience
-ec bit_mask        set error concealment
-bf frames          use 'frames' B frames
-mbd mode          macroblock decision
-mbcmp cmp function  macroblock compare function
-ildctcmp cmp function  ildct compare function
-subcmp cmp function  subpel compare function
-cmp cmp function  fullpel compare function
-precmp cmp function  pre motion estimation compare function
-preme              pre motion estimation
-lumi_mask          luminance masking
-dark_mask          darkness masking
-scplx_mask        spatial complexity masking
-tcplx_mask        teporal complexity masking
-p_mask            inter masking
-4mv                use four motion vector by macroblock (MPEG4)
-obmc              use overlapped block motion compensation (h263+)
-lf                use loop filter (h263+)
-part              use data partitioning (MPEG4)
-bug param          workaround not auto detected encoder bugs
-strict strictness  how strictly to follow the standards
-deinterlace        deinterlace pictures
-ildct              force interlaced dct support in encoder (MPEG2/MPEG4)
-ilme              force interlaced me support in encoder (MPEG2/MPEG4)
-psnr              calculate PSNR of compressed frames
-vstats            dump video coding statistics to file
-vhook module      insert video processing module
-aic                enable Advanced intra coding (h263+)
-aiv                enable Alternative inter vlc (h263+)
-umv                enable Unlimited Motion Vector (h263+)
-ssm                enable Slice Structured mode (h263+)
-alt                enable alternate scantable (MPEG2/MPEG4)
-qprd
-cbp
-trell              enable trellis quantization
-cgop              closed gop
-scan_offset        enable SVCD Scan Offset placeholder
-qpel              enable 1/4-pel
-intra_matrix matrix  specify intra matrix coeffs
-inter_matrix matrix  specify inter matrix coeffs
-top                top=1/bottom=0/auto=-1 field first
-nr                noise reduction
-qns                quantization noise shaping
-sc_threshold threshold  scene change threshold
-me_range range    limit motion vectors range (1023 for DivX player)
-dc precision      intra_dc_precision
-coder              coder type
-context            context model
-pred              prediction method

Audio options:
-ab bitrate        set audio bitrate (in kbit/s)
-ar rate            set audio sampling rate (in Hz)
-ac channels        set number of audio channels
-an                disable audio
-acodec codec      force audio codec ('copy' to copy stream)

Audio/Video grab options:
-vd device          set video grab device
-vc channel        set video grab channel (DV1394 only)
-tvstd standard    set television standard (NTSC, PAL (SECAM))
-dv1394            set DV1394 grab
-ad device          set audio device

Advanced options:
-map file:stream    set input stream mapping
-debug              print specific debug info
-vismv              visualize motion vectors
-benchmark          add timings for benchmarking
-dump              dump each input packet
-hex                when dumping packets, also dump the payload
-bitexact          only use bit exact algorithms (for codec testing)
-re                read input at native frame rate
-loop              loop (current only works with images)
-threads count      thread count
-vsync              video sync method
-async              audio sync method
-copyts            copy timestamps
-ps size            set packet size in bits
-error rate        error rate
insight#
Avatar billede jakobdo Ekspert
23. januar 2009 - 22:34 #8
ffmpeg er en konverter.

ffmpeg-php er en php wrapper, som så gør du kan kalde ffmpeg gennem php funktioner.
Og så kan du bruge denne klasse:
http://ffmpeg-php.sourceforge.net/doc/api/ffmpeg_movie.php
Avatar billede bigtime Nybegynder
28. januar 2009 - 08:07 #9
Så er der installeret ffmpeg og ffmpeg-php på serveren og det virker.
er der en spic. kode jeg skal bruge for at få vist en film mm.
Avatar billede jakobdo Ekspert
28. januar 2009 - 08:49 #10
ffmpeg er "kun" til at konvertere koden.
For at vise den, skal du have fat i en player.
Laver du f.eks. videoerne til en flv, skal du have en flash flv player.
Avatar billede bigtime Nybegynder
28. januar 2009 - 09:03 #11
øh er det noget serveren kan gør når filmen oploades, altså lave det til flash,
jeg ville have det til at funger stort som det virker på youtube.

er lidt blank inde for det her område :S
Avatar billede jakobdo Ekspert
28. januar 2009 - 09:10 #12
Så er det da noget af en opgave du er kommet på. :o)
Avatar billede bigtime Nybegynder
28. januar 2009 - 09:11 #13
ja hehe men har tid nok,
men lad os se ellers må man betale sig fra det ( måske ) :D
Avatar billede jakobdo Ekspert
28. januar 2009 - 09:25 #14
ffmpeg gør din application i stand til at tage stort set en hvilken som helst video og lave den til et format som du ønsker. (her snakker vi flv, hvis du vil lave noget ala youtube)

Og flv player, kan man jo enten finde en færdig, lave en selv, eller rette en allerede bygget.

Kig f.eks. på: http://labnol.blogspot.com/2006/08/how-to-embed-flv-flash-videos-in-your.html
Avatar billede bigtime Nybegynder
28. januar 2009 - 21:06 #15
Så fik min support lidt at lave igen :D
Går ud fra jeg også skal bruge
Mencoder
Mplayer
FLVTool2
på serveren for at lave det ?
Avatar billede jakobdo Ekspert
28. januar 2009 - 21:30 #16
ffmpeg kan f.eks. lave en mpeg, mov, avi osv.. om til en flv.
flvtool2 kan så tilføje timesteps/frames, som skal bruges i en flv player, til at hoppe frem og tilbage i en film.
De 2 andre mener jeg ikke er nødvendige.
Avatar billede bigtime Nybegynder
28. januar 2009 - 21:34 #17
okay cool.
jeg kigge bare på det der youtube clone hvad det krævede af ting og sager så jeg bare ud fra at jeg skulle bruge det samme.

men så skal jeg bare finde et stykke kode til opload, som laver hiver fat i ffmpeg og laver det flv når folk oploader det.

Hmmm kan sku godt være jeg skal hæve pointne for det spørgsmå her hehe
Avatar billede jakobdo Ekspert
28. januar 2009 - 22:01 #18
Selve upload er jo "bare" basic upload.
Kig på min artikel: http://www.eksperten.dk/artikler/1098

Og i efter:

if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadDir . basename($_FILES['myFile']['name'])))
      {
        echo '<h3 style="color:green;">File ('.basename($_FILES['myFile']['name']).') uploaded succesfully</h3>';
      }

Skal du så i stedet for: echo ....
lave noget php-ffmpeg arbejde.
Avatar billede bigtime Nybegynder
28. januar 2009 - 23:21 #19
fandt det her stykke kode men syntes ikke den laver det til flv filer

  <?php
2  /*
3  Video Upload and thumbnail generator with ffmpeg. This code is written by John Anderson of Vermont Internet Design. For support please contact chillininvt@yahoo.com. I provide support at the rate of $50 per hr.

5  */

7  // size input prevents buffer overrun exploits.
8  function sizeinput($input, $len){
9        (int)$len;
10      (string)$input;
11      $n = substr($input, 0,$len);
12      $ret = trim($n);
13      $out = htmlentities($ret, ENT_QUOTES);
14      return $out;
15  }
16  //Check the file is of correct format.
17  function checkfile($input){
18    $ext = array('mpg', 'wma', 'mov', 'flv', 'mp4', 'avi', 'qt', 'wmv', 'rm');
19    $extfile = substr($input['name'],-4);
20    $extfile = explode('.',$extfile);
21    $good = array();
22    $extfile = $extfile[1];
23    if(in_array($extfile, $ext)){
24          $good['safe'] = true;
25          $good['ext'] = $extfile;
26    }else{
27          $good['safe'] = false;
28    }
29      return $good;
30  }
31  $user_id = $_SESSION['table_id'];
32  // if the form was submitted process request if there is a file for uploading
33  if($_POST && array_key_exists("vid_file", $_FILES)){
34                            //$uploaddir is for videos before conversion
35                            $uploaddir = 'uploads/videos/';
36                            //$live_dir is for videos after converted to flv
37          $live_dir = 'uploads/live/';
38                            //$live_img is for the first frame thumbs.
39          $live_img = 'uploads/images/';       
40                            $seed = rand(1,2009) * rand(1,10);       
41          $upload = $seed. basename($_FILES['vid_file']['name']);
42          $uploadfile = $uploaddir .$upload;       
43          $vid_title = sizeinput($_POST['vid_title'], 50);
44          $vid_desc = sizeinput($_POST['vid_description'], 200);
45                            $vid_cat = (int)$_POST['vid_cat'];
46          $vid_usr_ip = $_SERVER['REMOTE_ADDR'];
47                        $safe_file = checkfile($_FILES['vid_file']);
48          if($safe_file['safe'] == 1){
49                                  if (move_uploaded_file($_FILES['vid_file']['tmp_name'], $uploadfile)) {
50                                        echo "File is valid, and was successfully uploaded.<br/>";
51                      $base = basename($uploadfile, $safe_file['ext']);
52                      $new_file = $base.'flv';
53                      $new_image = $base.'jpg';
54                      $new_image_path = $live_img.$new_image;
55                      $new_flv = $live_dir.$new_file;
56                      //ececute ffmpeg generate flv
57                                                                    exec('ffmpeg -i '.$uploadfile.' -f flv -s 320x240 '.$new_flv.'');
58                                                                    //execute ffmpeg and create thumb
59                      exec('ffmpeg  -i '.$uploadfile.' -f mjpeg -vframes 1 -s 150x150 -an '.$new_image_path.'');
60                      echo 'Thank You For Your Video!<br>';
61                                                                    //create query to store video
62                      $sql = 'INSERT INTO videos (vid_cat_id, vid_user, vid_title, vid_desc, vid_file_name, image_file, vid_usr_ip) VALUES(\''.$vid_cat.'\', \''.$user_id.'\', \''.$vid_title.'\', \''.$vid_desc.'\', \''.$new_file.'\', \''.$new_image.'\', \''.$vid_usr_ip.'\')';
63                      $mysql = new mysqli('localhost', 'user', 'Pass&d', 'databasename');
64                      echo '<img src="'.$new_image_path.'" /><br/>
65                            <h3>'.$vid_title.'</h3>';
66                      mysqli_query($mysql, $sql) or die(mysqli_error($mysql));
67              } else {
68                      echo "Possible file upload attack!\n";
69                      print_r($_FILES);
70              }
71 
72          }else{
73         
74              echo 'Invalid File Type Please Try Again. You file must be of type
75              .mpg, .wma, .mov, .flv, .mp4, .avi, .qt, .wmv, .rm';
76         
77          }
78  }
79  ?>
80  <form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
81    <p align="left">Please upload Your video.  Thumbnails of your videos are based on the first frame of your video. <br /><h3>Please allow up to a minute for your video to upload. </h3>
82    </p>
83    <table width="600" border="0" align="center" cellpadding="2" cellspacing="2">
84    <tr>
85      <td width="260" align="left" colspan="3"><div align="center">
86        <h3>Upload your Video ! </h3>
87      </div></td>
88    </tr>
89    <tr>
90      <td width="260"  align="left">&nbsp;</td>
91      <td width="326" align="left">&nbsp;</td>
92    </tr>
93    <tr>
94      <td align="left">Title Of Video : </td>
95      <td align="left"><input name="vid_title" type="text" id="vid_title" /></td>
96    </tr>
97    <tr>
98      <td align="left">File: .mov, .avi, .wma , .mpeg : </td>
99      <td align="left"><input name="vid_file" type="file" id="vid_file" /></td>
100  </tr>
101  <tr>
102    <td align="left">Description:</td>
103    <td align="left"><textarea name="vid_description" id="vid_description"></textarea></td>
104  </tr>
105  <tr>
106    <td align="left">Category:</td>
107    <td align="left"><select name="vid_cat">
108      <option value="1" selected="selected">Video</option>
109      <option value="2">Cat1</option>
110      <option value="3">Cat2</option>
111      <option value="4">Cat3</option>
112      <option value="5">Cat4</option>
113    </select>
114    </td>
115  </tr>
116  <tr>
117    <td>&nbsp;</td>
118    <td><input type="submit" name="Submit" value="Upload Video" /></td>
119  </tr>
120 </table>
121
122 </form>
Avatar billede bigtime Nybegynder
28. januar 2009 - 23:23 #20
ellers billeder for den sags skyld den oploader bare mpg filen hvis det er sådan en ellers kommer den med en fejl
Avatar billede jakobdo Ekspert
29. januar 2009 - 08:05 #21
Hvad fejl smider den ?
Avatar billede bigtime Nybegynder
29. januar 2009 - 08:19 #22
Fatal error: Cannot instantiate non-existent class: mysqli in /home/bruger/domains/domaene.dk/public_html/test/ffmpeg.php on line 63

Som du kan se kalder jeg filen ffmpeg.php
Avatar billede jakobdo Ekspert
29. januar 2009 - 08:54 #23
Det har jo intet med videoer at gøre.
Du forbinder ikke korrekt til din mysql server.
$mysql = new mysqli('localhost', 'user', 'Pass&d', 'databasename');

Prøv evt. at brug mysql_connect()
Avatar billede bigtime Nybegynder
29. januar 2009 - 13:20 #24
kan enlig ikke se hvorfor den skal have adgang til mysql for at lave film om
Avatar billede jakobdo Ekspert
29. januar 2009 - 15:29 #25
Nej, men det er jo den kode du har hentet som gør det.
Du kan jo fjerne det, men husk at fjerne det alle steder.
Avatar billede bigtime Nybegynder
29. januar 2009 - 15:41 #26
tja jeg prøver lige at rode lidt med det.
men ellers mener du at den her kode skulle kunne lave thumbs og flv filer ?
Avatar billede jakobdo Ekspert
29. januar 2009 - 16:43 #27
Tja, men du kunne jo også bare lave det selv. :o)
Avatar billede bigtime Nybegynder
29. januar 2009 - 21:45 #28
så dygtig er jeg desvære ikke til det :(
Avatar billede jakobdo Ekspert
29. januar 2009 - 21:51 #29
"min" upload artikel, den kan sikre dig hvilke typer du ønsker uploadet.
Når filen er uploadet, så skal du bare ændre lidt i koden, så den kalder convert af filmen, efter upload af filmen er ok.
Avatar billede bigtime Nybegynder
29. januar 2009 - 23:32 #30
det kode jeg valgte at bruge skal det ikke have en adresse hvor ffmpeg ligger ?
Avatar billede jakobdo Ekspert
30. januar 2009 - 11:35 #31
Jo, det vil jo nok være en fordel. :o)
Avatar billede jakobdo Ekspert
30. januar 2009 - 17:21 #32
Takker for point.
Avatar billede bigtime Nybegynder
30. januar 2009 - 20:09 #33
Selv tak du hjalp mere end riligt i det spørgsmål selv om jeg ikke fik det upload til at virke.
men fik da svar på det spørgsmålet enlig var på
Avatar billede jakobdo Ekspert
30. januar 2009 - 20:30 #34
Har du ikke fået upload delen til at virke ?
Hvad vis du tager mit upload script, og får det til at kunne uploade en fil først.
Avatar billede bigtime Nybegynder
30. januar 2009 - 20:35 #35
dit script har jeg fået til at virke men har ikke fået den til at lave den flv fil og tage et thumbnail af filmen
Avatar billede jakobdo Ekspert
30. januar 2009 - 21:49 #36
Efter korrekt upload, så prøve:

$uploadfile er så filens navn.
$new_flv = filens nye navn.
exec('ffmpeg -i '.$uploadfile.' -f flv -s 320x240 '.$new_flv.'');
exec('ffmpeg  -i '.$uploadfile.' -f mjpeg -vframes 1 -s 150x150 -an '.$new_image_path.'');
echo 'Thank You For Your Video!<br>';
Avatar billede bigtime Nybegynder
30. januar 2009 - 22:47 #37
hmm okay tror jeg er tabt en vogn til det :(
du kan se det script jeg har uploadet her på siden det virker bortset fra det ikke laver billedet eller laver filen om http://erjeggrim.dk/test/ffmpeg.php

og her er det script du har lavet det uploader også men laver ikke filen om http://erjeggrim.dk/test/index.php
Avatar billede bigtime Nybegynder
31. januar 2009 - 00:23 #38
øh forresten er der ikke et sted i filen hvor jeg skal fortælle hvor den finder /usr/local/bin/ffmpeg
Avatar billede jakobdo Ekspert
31. januar 2009 - 12:18 #39
Ikke nødvendigvis.
Du kan prøve at kalde exec('ffmpeg'); og smide output til skærmen.
Avatar billede bigtime Nybegynder
31. januar 2009 - 13:04 #40
det gør den også her men der er ikke noget billede http://erjeggrim.dk/test/ffmpeg.php
Avatar billede jakobdo Ekspert
01. februar 2009 - 12:01 #41
Mangler du ikke at angive: $new_image_path ??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester