Avatar billede jkampmann Nybegynder
25. august 2008 - 21:05 Der er 48 kommentarer og
1 løsning

ffmpeg - thumb og convert til flv

Hejsa, nu har jeg læst en del omkring ffmpeg, og nåede frem til at kunne lave et thumb af den uploadede film - men men men..

Hvordan gør jeg så, således at den:
* Tager et screenshot 3 sekunder inde i filmen
* Uploader "thumb" billedet med størrelsen 412x300 (bredde og højde)
* Laver filmen i den bedste kvalitet
* Filmen kører flydenet (oplevede den "hakkede" i filmen med frames)


Håber virkelig en kan hjælpe her! I sær JakobDO!
Avatar billede jakobdo Ekspert
25. august 2008 - 22:13 #1
Screenshot kan gøres sådan her:

ffmpeg
-itsoffset -3 //Sekunder inde i videoen
-i video.ext  //Input video
-vcodec png  //Hvilket format skal billedet gemmes i
-vframes 1    //Hvor mange billeder
-an          //Disable sound recording
-f rawvideo  //Gennemtving format
-s 412x300    //Størrelse på billedet
dump.png      //Output fil

Læs meget mere om det forskellige ting her: http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html
Avatar billede jakobdo Ekspert
25. august 2008 - 22:14 #2
Skal køres uden alle mine kommentarer... (fjern // og teksten efter)
Avatar billede jakobdo Ekspert
25. august 2008 - 22:15 #3
Når du laver en flv fil som output, hakker den så i din egen player eller også i andre ?
Test evt. dine filer med FLVPlayer, hvis ikke allerede du har den.
Avatar billede jkampmann Nybegynder
26. august 2008 - 10:19 #4
Hej Jakob. Tusind tak for dit svar.

Kvaliteten på thumb billederne bliver rigtig ringe - kan dette ændres ?
Og den outputter ikke INPUT filmen til *.flv (da min webplayer kun understøtter det ! )

Kan du hjælpe ?
Avatar billede jakobdo Ekspert
26. august 2008 - 10:32 #5
Min kode herover, er kun til at lave screendump.
Avatar billede jkampmann Nybegynder
26. august 2008 - 11:03 #6
Ja - det ved jeg, men hvordan kan det være, at kvaliteten bliver så dårlig på billederne? Kan dette ændres ?

Og ville du være en venlig sjæl, at gøre sådan at ens "video.ext" bliver convertet til "video.flv" ?
Avatar billede jakobdo Ekspert
26. august 2008 - 11:18 #7
Sådan her bliver det konverteret til en flv fil:

ffmpeg -i video.avi -ar 22050 -ab 32 -f flv -s 320×240 video.flv

Fandt kommandoen her: http://www.bala-krishna.com/convert-video-files-to-flv-using-ffmpeg-command

Tjek commandoerne mod ffmpeg doc, som du fik tidligere.
Avatar billede jkampmann Nybegynder
26. august 2008 - 11:31 #8
Okay, tusind tak. Men output filen, får intet indhold ? Altså filen " . time() . ".vlc har 0KB, så der er intet indhold i - hvad gør jeg der ??

$cmd = "$ffmpeg -itsoffset -3 -i " . $Video . " -ar 22050 -ab 32 -f flv -s 320×240 " . time() . ".flv -vcodec png -vframes 1 -an -f rawvideo  -s

412x300 dump.png";
Avatar billede jakobdo Ekspert
26. august 2008 - 11:58 #9
Test disse samlinger:

$cmd_screenshot            = "ffmpeg -itsoffset -3 -i ".$Video." -an -y -s 320×240 " . time() . ".flv -vframes 1 dump.png";

$cmd_video_resize          = "ffmpeg -i ".$Video." -ar 22050 -ab 32 -f flv -s 320×240 ".time().".flv";
$cmd_video_resize_with_meta = "ffmpeg -i ".$Video." -ar 22050 -ab 32 -f flv -s 320×240 - | flvtool2 -U stdin ".time().".flv";

Du bliver nød til at kalde dem flere gange, da du ikke kan resize og lave screenshot af en gang.
Avatar billede jkampmann Nybegynder
26. august 2008 - 12:11 #10
Ingen af dem virker :+(

Min film i ".flv" format, står stadig om 0KB og kan ikke afspille den...
Avatar billede jkampmann Nybegynder
26. august 2008 - 12:14 #11
/** Først convert filmen til .FLV **/

      $cmd = $ffmpeg . " -i " . $Video . " -ar 22050 -ab 32 -f flv -s 320×240 " . $filmnavn . ".flv";
      $return = `$cmd`;

      /** Derefter tag et screendumb af filmen **/

      $cmd = $ffmpeg . "-itsoffset -3 -i " . $film_navn . ".flv -vcodec png -vframes 1 -an -f rawvideo -s 412x300 " . $file . ".png";
      $return = `$cmd`
Avatar billede jkampmann Nybegynder
26. august 2008 - 12:15 #12
Den laver intet billede og KB-størrelsen på outputtet af .flv bliver 0!
Avatar billede jakobdo Ekspert
26. august 2008 - 12:34 #13
Hvorfor skriver du $ foran ffmpeg ?
Avatar billede jkampmann Nybegynder
26. august 2008 - 13:17 #14
$ffmpeg = dirname(__FILE__) . "/ffmpeg.exe";
Avatar billede jakobdo Ekspert
26. august 2008 - 13:29 #15
.exe ?
Kører du med en windows version ?
Avatar billede jkampmann Nybegynder
26. august 2008 - 13:41 #16
Ja, det gør jeg til at teste på (min egen maskine), inden jeg køber en dedikeret server med linux.
Avatar billede jakobdo Ekspert
26. august 2008 - 13:49 #17
Jeg er desværre ikke så kendt med ffmpeg og windows, så du skal jo ihf. først sikre ffmpeg.exe kan åbnes korrekt.
Hvad hvis du bare smider en kommando med ffmpeg.exe.
Får du så et output i php ?

Test lige:

<?php
echo '<pre>';

// Outputs all the result of shellcommand "ls", and returns
// the last output line into $last_line. Stores the return value
// of the shell command in $retval.
$last_line = system('ffmpeg.exe', $retval);

// Printing additional info
echo '
</pre>
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
?>
Avatar billede jkampmann Nybegynder
26. august 2008 - 13:57 #18
Jamen, det virker jo fint, for fik jo et screendump og en convertet flv fil (dog uden indhold), apopros må det jo være... Så det rigtigt nok det vi gør..
Avatar billede jkampmann Nybegynder
26. august 2008 - 13:58 #19
usage: ffmpeg [[infile options] -i infile]... {[outfile options] outfile}...
Hyper fast Audio and Video encoder

Main options:
-L                  show license
-h                  show help
-version            show version
-formats            show available formats, codecs, protocols, ...
-f fmt              force format
-i filename        input file name
-y                  overwrite output files
-t duration        record or transcode "duration" seconds of audio/video
-fs limit_size      set the limit file size in bytes
-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
-genre string      set the genre
-album string      set the album
-v number          set the logging verbosity level
-target type        specify target file type ("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...)
-dframes number    set the number of data frames to record
-sn                disable subtitle
-scodec codec      force subtitle codec ('copy' to copy stream)
-newsubtitle        add a new subtitle stream to the current output stream
-slang code        set the ISO 639 language code (3 letters) of the current subtitle stream

Video options:
-b                  set bitrate (in bits/s)
-vb                set bitrate (in bits/s)
-vframes number    set the number of video frames to record
-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
-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
-newvideo          add a new video stream to the current output stream

Advanced Video options:
-pix_fmt format    set pixel format, 'list' as argument shows all the pixel formats supported
-intra              use only intra frames
-vdt n              discard threshold
-qscale q          use fixed video quantizer scale (VBR)
-qdiff q            max difference between the quantizer scale (VBR)
-rc_override override  rate control override for specific intervals
-me_threshold      motion estimaton threshold
-strict strictness  how strictly to follow the standards
-deinterlace        deinterlace pictures
-psnr              calculate PSNR of compressed frames
-vstats            dump video coding statistics to file
-vstats_file file  dump video coding statistics to file
-intra_matrix matrix  specify intra matrix coeffs
-inter_matrix matrix  specify inter matrix coeffs
-top                top=1/bottom=0/auto=-1 field first
-dc precision      intra_dc_precision
-vtag fourcc/tag    force video tag/fourcc
-qphist            show QP histogram
-vbsf bitstream filter 

Audio options:
-ab                set bitrate (in bits/s)
-aframes number    set the number of audio frames to record
-aq quality        set audio quality (codec-specific)
-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)
-vol volume        change audio volume (256=normal)
-newaudio          add a new audio stream to the current output stream
-alang code        set the ISO 639 language code (3 letters) of the current audio stream

Advanced Audio options:
-atag fourcc/tag    force audio tag/fourcc
-absf bitstream filter 

Subtitle options:
-sn                disable subtitle
-scodec codec      force subtitle codec ('copy' to copy stream)
-newsubtitle        add a new subtitle stream to the current output stream
-slang code        set the ISO 639 language code (3 letters) of the current subtitle stream
-sbsf bitstream filter 

Audio/Video grab options:
-vc channel        set video grab channel (DV1394 only)
-tvstd standard    set television standard (NTSC, PAL (SECAM))
-isync              sync read on input

Advanced options:
-map file:stream[:syncfile:syncstream]  set input stream mapping
-map_meta_data outfile:infile  set meta data information of outfile from infile
-benchmark          add timings for benchmarking
-dump              dump each input packet
-hex                when dumping packets, also dump the payload
-re                read input at native frame rate
-loop_input        loop (current only works with images)
-loop_output        number of times to loop output in formats that support looping (0 loops forever)
-threads count      thread count
-vsync              video sync method
-async              audio sync method
-adrift_threshold  audio drift threshold
-vglobal            video global header storage type
-copyts            copy timestamps
-shortest          finish encoding within shortest input
-dts_delta_threshold  timestamp discontinuity delta threshold
-programid          desired program number
-muxdelay seconds  set the maximum demux-decode delay
-muxpreload seconds  set the initial demux-decode delay
-sbsf bitstream filter 
AVCodecContext AVOptions:
-b                    E.V.. set bitrate (in bits/s)
-ab                  E..A. set bitrate (in bits/s)
-bt                  E.V.. set video bitrate tolerance (in bits/s)
-flags              EDVA.
  mv4                    E.V.. use four motion vector by macroblock (mpeg4)
  obmc                    E.V.. use overlapped block motion compensation (h263+)
  qpel                    E.V.. use 1/4 pel motion compensation
  loop                    E.V.. use loop filter
  gmc                    E.V.. use gmc
  mv0                    E.V.. always try a mb with mv=<0,0>
  part                    E.V.. use data partitioning
  gray                    EDV.. only decode/encode grayscale
  psnr                    E.V.. error[?] variables will be set during encoding
  naq                    E.V.. normalize adaptive quantization
  ildct                  E.V.. use interlaced dct
  low_delay              EDV.. force low delay
  alt                    E.V.. enable alternate scantable (mpeg2/mpeg4)
  trell                  E.V.. use trellis quantization
  bitexact                EDVAS use only bitexact stuff (except (i)dct)
  aic                    E.V.. h263 advanced intra coding / mpeg4 ac prediction
  umv                    E.V.. use unlimited motion vectors
  cbp                    E.V.. use rate distortion optimization for cbp
  qprd                    E.V.. use rate distortion optimization for qp selection
  aiv                    E.V.. h263 alternative inter vlc
  slice                  E.V..
  ilme                    E.V.. interlaced motion estimation
  scan_offset            E.V.. will reserve space for svcd scan offset user data
  cgop                    E.V.. closed gop
-me_method            E.V.. set motion estimation method
  zero                    E.V.. zero motion estimation (fastest)
  full                    E.V.. full motion estimation (slowest)
  epzs                    E.V.. EPZS motion estimation (default)
  log                    E.V.. log motion estimation
  phods                  E.V.. phods motion estimation
  x1                      E.V.. X1 motion estimation
  hex                    E.V.. hex motion estimation
  umh                    E.V.. umh motion estimation
  iter                    E.V.. iter motion estimation
-me                  E.V.. set motion estimation method (deprecated, use me_method instead)
  zero                    E.V.. zero motion estimation (fastest)
  full                    E.V.. full motion estimation (slowest)
  epzs                    E.V.. EPZS motion estimation (default)
  log                    E.V.. log motion estimation
  phods                  E.V.. phods motion estimation
  x1                      E.V.. X1 motion estimation
  hex                    E.V.. hex motion estimation
  umh                    E.V.. umh motion estimation
  iter                    E.V.. iter motion estimation
-g                    E.V.. set the group of picture size
-cutoff              E..A. set cutoff bandwidth
-frame_size          E..A.
-qcomp              E.V.. video quantizer scale compression (VBR)
-qblur              E.V.. video quantizer scale blur (VBR)
-qmin                E.V.. min video quantizer scale (VBR)
-qmax                E.V.. max video quantizer scale (VBR)
-qdiff                E.V.. max difference between the quantizer scale (VBR)
-bf                  E.V.. use 'frames' B frames
-b_qfactor          E.V.. qp factor between p and b frames
-rc_strategy          E.V.. ratecontrol method
-b_strategy          E.V.. strategy to choose between I/P/B-frames
-hurry_up            .DV..
-ps                  E.V.. rtp payload size in bits
-bug                .DV.. workaround not auto detected encoder bugs
  autodetect              .DV..
  old_msmpeg4            .DV.. some old lavc generated msmpeg4v3 files (no autodetection)
  xvid_ilace              .DV.. Xvid interlacing bug (autodetected if fourcc==XVIX)
  ump4                    .DV.. (autodetected if fourcc==UMP4)
  no_padding              .DV.. padding bug (autodetected)
  amv                    .DV..
  ac_vlc                  .DV.. illegal vlc bug (autodetected per fourcc)
  qpel_chroma            .DV..
  std_qpel                .DV.. old standard qpel (autodetected per fourcc/version)
  qpel_chroma2            .DV..
  direct_blocksize        .DV.. direct-qpel-blocksize bug (autodetected per fourcc/version)
  edge                    .DV.. edge padding bug (autodetected per fourcc/version)
  hpel_chroma            .DV..
  dc_clip                .DV..
  ms                      .DV.. workaround various bugs in microsofts broken decoders
-lelim                E.V.. single coefficient elimination threshold for luminance (negative values also consider dc coefficient)
-celim                E.V.. single coefficient elimination threshold for chrominance (negative values also consider dc coefficient)
-strict              .DVA. how strictly to follow the standards
  very                    E.V.. strictly conform to a older more strict version of the spec or reference software
  strict                  E.V.. strictly conform to all the things in the spec no matter what consequences
  normal                  E.V..
  inofficial              E.V.. allow inofficial extensions
  experimental            E.V.. allow non standardized experimental things
-b_qoffset          E.V.. qp offset between P and B frames
-er                  .DVA. set error resilience strategy
  careful                .DV..
  compliant              .DV..
  aggressive              .DV..
  very_aggressive        .DV..
-mpeg_quant          E.V.. use MPEG quantizers instead of H.263
-qsquish            E.V.. how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function)
-rc_qmod_amp        E.V.. experimental quantizer modulation
-rc_qmod_freq        E.V.. experimental quantizer modulation
-rc_eq              E.V.. set rate control equation
-maxrate              E.V.. set max video bitrate tolerance (in bits/s)
-minrate              E.V.. set min video bitrate tolerance (in bits/s)
-bufsize              E.VA. set ratecontrol buffer size (in bits)
-rc_buf_aggressivity  E.V.. currently useless
-i_qfactor          E.V.. qp factor between P and I frames
-i_qoffset          E.V.. qp offset between P and I frames
-rc_init_cplx      E.V.. initial complexity for 1-pass encoding
-dct                  E.V.. DCT algorithm
  auto                    E.V.. autoselect a good one (default)
  fastint                E.V.. fast integer
  int                    E.V.. accurate integer
  mmx                    E.V..
  mlib                    E.V..
  altivec                E.V..
  faan                    E.V.. floating point AAN DCT
-lumi_mask          E.V.. compresses bright areas stronger than medium ones
-tcplx_mask        E.V.. temporal complexity masking
-scplx_mask        E.V.. spatial complexity masking
-p_mask            E.V.. inter masking
-dark_mask          E.V.. compresses dark areas stronger than medium ones
-idct                EDV.. select IDCT implementation
  auto                    EDV..
  int                    EDV..
  simple                  EDV..
  simplemmx              EDV..
  libmpeg2mmx            EDV..
  ps2                    EDV..
  mlib                    EDV..
  arm                    EDV..
  altivec                EDV..
  sh4                    EDV..
  simplearm              EDV..
  simplearmv5te          EDV..
  h264                    EDV..
  vp3                    EDV..
  ipp                    EDV..
  xvidmmx                EDV..
  faani                  EDV.. floating point AAN IDCT
-ec                .DV.. set error concealment strategy
  guess_mvs              .DV.. iterative motion vector (MV) search (slow)
  deblock                .DV.. use strong deblock filter for damaged MBs
-pred                E.V.. prediction method
  left                    E.V..
  plane                  E.V..
  median                  E.V..
-aspect            E.V.. sample aspect ratio
-debug              EDVAS print specific debug info
  pict                    .DV.. picture info
  rc                      E.V.. rate control
  bitstream              .DV..
  mb_type                .DV.. macroblock (MB) type
  qp                      .DV.. per-block quantization parameter (QP)
  mv                      .DV.. motion vector
  dct_coeff              .DV..
  skip                    .DV..
  startcode              .DV..
  pts                    .DV..
  er                      .DV.. error resilience
  mmco                    .DV.. memory management control operations (H.264)
  bugs                    .DV..
  vis_qp                  .DV.. visualize quantization parameter (QP), lower QP are tinted greener
  vis_mb_type            .DV.. visualize block types
-vismv                .DV.. visualize motion vectors (MVs)
  pf                      .DV.. forward predicted MVs of P-frames
  bf                      .DV.. forward predicted MVs of B-frames
  bb                      .DV.. backward predicted MVs of B-frames
-mb_qmin              E.V.. obsolete, use qmin
-mb_qmax              E.V.. obsolete, use qmax
-cmp                  E.V.. full pel me compare function
  sad                    E.V.. sum of absolute differences, fast (default)
  sse                    E.V.. sum of squared errors
  satd                    E.V.. sum of absolute Hadamard transformed differences
  dct                    E.V.. sum of absolute DCT transformed differences
  psnr                    E.V.. sum of squared quantization errors (avoid, low quality)
  bit                    E.V.. number of bits needed for the block
  rd                      E.V.. rate distortion optimal, slow
  zero                    E.V.. 0
  vsad                    E.V.. sum of absolute vertical differences
  vsse                    E.V.. sum of squared vertical differences
  nsse                    E.V.. noise preserving sum of squared differences
  w53                    E.V.. 5/3 wavelet, only used in snow
  w97                    E.V.. 9/7 wavelet, only used in snow
  dctmax                  E.V..
  chroma                  E.V..
-subcmp              E.V.. sub pel me compare function
  sad                    E.V.. sum of absolute differences, fast (default)
  sse                    E.V.. sum of squared errors
  satd                    E.V.. sum of absolute Hadamard transformed differences
  dct                    E.V.. sum of absolute DCT transformed differences
  psnr                    E.V.. sum of squared quantization errors (avoid, low quality)
  bit                    E.V.. number of bits needed for the block
  rd                      E.V.. rate distortion optimal, slow
  zero                    E.V.. 0
  vsad                    E.V.. sum of absolute vertical differences
  vsse                    E.V.. sum of squared vertical differences
  nsse                    E.V.. noise preserving sum of squared differences
  w53                    E.V.. 5/3 wavelet, only used in snow
  w97                    E.V.. 9/7 wavelet, only used in snow
  dctmax                  E.V..
  chroma                  E.V..
-mbcmp                E.V.. macroblock compare function
  sad                    E.V.. sum of absolute differences, fast (default)
  sse                    E.V.. sum of squared errors
  satd                    E.V.. sum of absolute Hadamard transformed differences
  dct                    E.V.. sum of absolute DCT transformed differences
  psnr                    E.V.. sum of squared quantization errors (avoid, low quality)
  bit                    E.V.. number of bits needed for the block
  rd                      E.V.. rate distortion optimal, slow
  zero                    E.V.. 0
  vsad                    E.V.. sum of absolute vertical differences
  vsse                    E.V.. sum of squared vertical differences
  nsse                    E.V.. noise preserving sum of squared differences
  w53                    E.V.. 5/3 wavelet, only used in snow
  w97                    E.V.. 9/7 wavelet, only used in snow
  dctmax                  E.V..
  chroma                  E.V..
-ildctcmp            E.V.. interlaced dct compare function
  sad                    E.V.. sum of absolute differences, fast (default)
  sse                    E.V.. sum of squared errors
  satd                    E.V.. sum of absolute Hadamard transformed differences
  dct                    E.V.. sum of absolute DCT transformed differences
  psnr                    E.V.. sum of squared quantization errors (avoid, low quality)
  bit                    E.V.. number of bits needed for the block
  rd                      E.V.. rate distortion optimal, slow
  zero                    E.V.. 0
  vsad                    E.V.. sum of absolute vertical differences
  vsse                    E.V.. sum of squared vertical differences
  nsse                    E.V.. noise preserving sum of squared differences
  w53                    E.V.. 5/3 wavelet, only used in snow
  w97                    E.V.. 9/7 wavelet, only used in snow
  dctmax                  E.V..
  chroma                  E.V..
-dia_size            E.V.. diamond type & size for motion estimation
-last_pred            E.V.. amount of motion predictors from the previous frame
-preme                E.V.. pre motion estimation
-precmp              E.V.. pre motion estimation compare function
  sad                    E.V.. sum of absolute differences, fast (default)
  sse                    E.V.. sum of squared errors
  satd                    E.V.. sum of absolute Hadamard transformed differences
  dct                    E.V.. sum of absolute DCT transformed differences
  psnr                    E.V.. sum of squared quantization errors (avoid, low quality)
  bit                    E.V.. number of bits needed for the block
  rd                      E.V.. rate distortion optimal, slow
  zero                    E.V.. 0
  vsad                    E.V.. sum of absolute vertical differences
  vsse                    E.V.. sum of squared vertical differences
  nsse                    E.V.. noise preserving sum of squared differences
  w53                    E.V.. 5/3 wavelet, only used in snow
  w97                    E.V.. 9/7 wavelet, only used in snow
  dctmax                  E.V..
  chroma                  E.V..
-pre_dia_size        E.V.. diamond type & size for motion estimation pre-pass
-subq                E.V.. sub pel motion estimation quality
-me_range            E.V.. limit motion vectors range (1023 for DivX player)
-ibias                E.V.. intra quant bias
-pbias                E.V.. inter quant bias
-coder                E.V..
  vlc                    E.V.. variable length coder / huffman coder
  ac                      E.V.. arithmetic coder
  raw                    E.V.. raw (no encoding)
  rle                    E.V.. run-length coder
  deflate                E.V.. deflate-based coder
-context              E.V.. context model
-mbd                  E.V.. macroblock decision algorithm (high quality mode)
  simple                  E.V.. use mbcmp (default)
  bits                    E.V.. use fewest bits
  rd                      E.V.. use best rate distortion
-sc_threshold        E.V.. scene change threshold
-lmin                E.V.. min lagrange factor (VBR)
-lmax                E.V.. max lagrange factor (VBR)
-nr                  E.V.. noise reduction
-rc_init_occupancy    E.V.. number of bits which should be loaded into the rc buffer before decoding starts
-inter_threshold      E.V..
-flags2            EDVA.
  fast                    E.V.. allow non spec compliant speedup tricks
  sgop                    E.V.. strictly enforce gop size
  noout                  E.V.. skip bitstream encoding
  local_header            E.V.. place global headers at every keyframe instead of in extradata
  bpyramid                E.V.. allows B-frames to be used as references for predicting
  wpred                  E.V.. weighted biprediction for b-frames (H.264)
  mixed_refs              E.V.. one reference per partition, as opposed to one reference per macroblock
  dct8x8                  E.V.. high profile 8x8 transform (H.264)
  fastpskip              E.V.. fast pskip (H.264)
  aud                    E.V.. access unit delimiters (H.264)
  brdo                    E.V.. b-frame rate-distortion optimization
  skiprd                  E.V.. RD optimal MB level residual skipping
  ivlc                    E.V.. intra vlc table
  drop_frame_timecode        E.V..
  non_linear_q            E.V.. use non linear quantizer
  reservoir              E..A. use bit reservoir
-error                E.V..
-antialias            .DV.. MP3 antialias algorithm
  auto                    .DV..
  fastint                .DV..
  int                    .DV..
  float                  .DV..
-qns                  E.V.. quantizer noise shaping
-threads              EDV..
-mb_threshold        E.V.. macroblock threshold
-dc                  E.V.. intra_dc_precision
-nssew                E.V.. nsse weight
-skip_top            .DV.. number of macroblock rows at the top which are skipped
-skip_bottom          .DV.. number of macroblock rows at the bottom which are skipped
-profile              E.VA.
  unknown                E.VA.
  aac_main                E..A.
  aac_low                E..A.
  aac_ssr                E..A.
  aac_ltp                E..A.
-level                E.VA.
  unknown                E.VA.
-lowres              .DV.. decode at 1= 1/2, 2=1/4, 3=1/8 resolutions
-skip_threshold      E.V.. frame skip threshold
-skip_factor          E.V.. frame skip factor
-skip_exp            E.V.. frame skip exponent
-skipcmp              E.V.. frame skip compare function
  sad                    E.V.. sum of absolute differences, fast (default)
  sse                    E.V.. sum of squared errors
  satd                    E.V.. sum of absolute Hadamard transformed differences
  dct                    E.V.. sum of absolute DCT transformed differences
  psnr                    E.V.. sum of squared quantization errors (avoid, low quality)
  bit                    E.V.. number of bits needed for the block
  rd                      E.V.. rate distortion optimal, slow
  zero                    E.V.. 0
  vsad                    E.V.. sum of absolute vertical differences
  vsse                    E.V.. sum of squared vertical differences
  nsse                    E.V.. noise preserving sum of squared differences
  w53                    E.V.. 5/3 wavelet, only used in snow
  w97                    E.V.. 9/7 wavelet, only used in snow
  dctmax                  E.V..
  chroma                  E.V..
-border_mask        E.V.. increases the quantizer for macroblocks close to borders
-mblmin              E.V.. min macroblock lagrange factor (VBR)
-mblmax              E.V.. max macroblock lagrange factor (VBR)
-mepc                E.V.. motion estimation bitrate penalty compensation (1.0 = 256)
-bidir_refine        E.V.. refine the two motion vectors used in bidirectional macroblocks
-brd_scale            E.V.. downscales frames for dynamic B-frame decision
-crf                E.V.. enables constant quality mode, and selects the quality (x264)
-cqp                  E.V.. constant quantization parameter rate control method
-keyint_min          E.V.. minimum interval between IDR-frames (x264)
-refs                E.V.. reference frames to consider for motion compensation (Snow)
-chromaoffset        E.V.. chroma qp offset from luma
-bframebias          E.V.. influences how often B-frames are used
-trellis              E.VA. rate-distortion optimal quantization
-directpred          E.V.. direct mv prediction mode - 0 (none), 1 (spatial), 2 (temporal)
-complexityblur    E.V.. reduce fluctuations in qp (before curve compression)
-deblockalpha        E.V.. in-loop deblocking filter alphac0 parameter
-deblockbeta          E.V.. in-loop deblocking filter beta parameter
-partitions        E.V.. macroblock subpartition sizes to consider
  parti4x4                E.V..
  parti8x8                E.V..
  partp4x4                E.V..
  partp8x8                E.V..
  partb8x8                E.V..
-sc_factor            E.V.. multiplied by qscale for each frame and added to scene_change_score
-mv0_threshold        E.V..
-b_sensitivity        E.V.. adjusts sensitivity of b_frame_strategy 1
-compression_level    E.VA.
-use_lpc              E..A. sets whether to use LPC mode (FLAC)
-lpc_coeff_precision    E..A. LPC coefficient precision (FLAC)
-min_prediction_order    E..A.
-max_prediction_order    E..A.
-prediction_order_method    E..A. search method for selecting prediction order
-min_partition_order    E..A.
-max_partition_order    E..A.
-timecode_frame_start    E.V.. GOP timecode frame start number, in non drop frame format
-request_channels    .D.A. set desired number of audio channels
-drc_scale          .D.A. percentage of dynamic range compression to apply
AVFormatContext AVOptions:
-probesize            .D...
-muxrate              E.... set mux rate
-packetsize          E.... set packet size
-fflags            ED...
  ignidx                  .D... ignore index
  genpts                  .D... generate pts
-track                E....  set the track number
-year                E.... set the year
-analyzeduration      .D... how many microseconds are analyzed to estimate duration
-cryptokey          .D... decryption key
-indexmem            .D... max memory used for timestamp index (per stream)
-rtbufsize            .D... max memory used for buffering real-time frames
SWScaler AVOptions:
-sws_flags          E.V.. scaler/cpu flags
  fast_bilinear          E.V.. fast bilinear
  bilinear                E.V.. bilinear
  bicubic                E.V.. bicubic
  experimental            E.V.. experimental
  neighbor                E.V.. nearest neighbor
  area                    E.V.. averaging area
  bicublin                E.V.. luma bicubic, chroma bilinear
  gauss                  E.V.. gaussian
  sinc                    E.V.. sinc
  lanczos                E.V.. lanczos
  spline                  E.V.. natural bicubic spline
  print_info              E.V.. print info
  accurate_rnd            E.V.. accurate rounding
  mmx                    E.V.. MMX SIMD acceleration
  mmx2                    E.V.. MMX2 SIMD acceleration
  3dnow                  E.V.. 3DNOW SIMD acceleration
  altivec                E.V.. AltiVec SIMD acceleration
  bfin                    E.V.. Blackfin SIMD acceleration
  full_chroma_int        E.V.. full chroma interpolation
  full_chroma_inp        E.V.. full chroma input


Last line of the output: full_chroma_inp E.V.. full chroma input Return value: 1
Avatar billede jakobdo Ekspert
26. august 2008 - 14:07 #20
Betyder det så at det kun er video der fejler ?
Eller er der intet der virker nu ?
Avatar billede jkampmann Nybegynder
26. august 2008 - 14:10 #21
Med denne kode, laver den kun en .flv fil uden indhold.. Ikke engang et screendump, og her er det denne kode vi snakker om:

/** Først convert filmen til .FLV **/

      $cmd = $ffmpeg . " -i " . $Video . " -ar 22050 -ab 32 -f flv -s 320×240 " . $filmnavn . ".flv";
      $return = `$cmd`;

      /** Derefter tag et screendumb af filmen **/

      $cmd = $ffmpeg . "-itsoffset -3 -i " . $film_navn . ".flv -vcodec png -vframes 1 -an -f rawvideo -s 412x300 " . $file . ".png";
      $return = `$cmd`
Avatar billede jkampmann Nybegynder
26. august 2008 - 14:13 #22
function CreateMovieThumbAndFlvPlayer ( $Video )
{


      $ffmpeg = dirname(__FILE__) . "/ffmpeg.exe";
      $video  = dirname(__FILE__) . '/' . $Video;
      $image  = dirname(__FILE__) . '/' . $file;



      $second = 5;

      $navn = time();

      $cmd = "$ffmpeg -i $video 2>&1";

      if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', `$cmd`, $time))
      {

          $total = ($time[2] * 3600) + ($time[3] * 60) + $time[4];
          $second = rand(1, ($total - 1));
      }

      /** Først convert filmen til .FLV **/

      $cmd = $ffmpeg . " -i " . $Video . " -ar 22050 -ab 32 -f flv -s 320×240 " . $navn . ".flv";
      $return = `$cmd`;

      /** Derefter tag et screendumb af filmen **/

      $cmd = $ffmpeg . "-itsoffset -3 -i " . $navn . ".flv -vcodec png -vframes 1 -an -f rawvideo -s 412x300 " . $navn . ".png";
      $return = `$cmd`;
     
}

CreateMovieThumbAndFlvPlayer("Video000.3gp");
Avatar billede jakobdo Ekspert
26. august 2008 - 14:25 #23
Du blander rundt på: $navn og $Video ?
Og der er også forskel på Video og video ?
Avatar billede jkampmann Nybegynder
26. august 2008 - 15:09 #24
Nu tager den godt nok screenshots, men den outputter ingen .flv fil !


function CreateMovieThumbAndFlvPlayer ( $Fil )
{

      $ffmpeg = dirname(__FILE__) . "/ffmpeg.exe";
      $video  = dirname(__FILE__) . '/film/' . $Fil;
      $image  = dirname(__FILE__) . '/' . $file;

     
      echo "Converting " . $video. "<br />";

      $second = 5; $nyt_navn = time(); $cmd = "$ffmpeg -i $video 2>&1";

      echo "Vidoen " . $second . " (" . $total . ")<br />";


      /** Først tag screendump af filmen **/

      $cmd = $ffmpeg . " -itsoffset -3 -i " . $video . " -vcodec png -vframes 1 -an -f rawvideo -s 412x300 dumbs/" . $nyt_navn . ".png";
      $return = `$cmd`;

      /** Derefter convert filen til flv **/

      $cmd = "$ffmpeg -i $video 2>&1";

      $cmd = $ffmpeg . " -i " . $video . " -ar 22050 -ab 32 -f flv -s 320×240 - | flvtool2 -U stdin film/" . $nyt_navn . ".flv";
      $return = `$cmd`;

      /** Slet gammel video **/
      flush(); sleep(2); flush(); unlink($video);


     
}
Avatar billede jkampmann Nybegynder
26. august 2008 - 15:11 #25
Det løgn. Den outputter fint en .flv fil i mappen film/ nu også... men men men; igen er det en tom film !

Den viser 0 KB.

Bruger denne:
$cmd = $ffmpeg . " -i " . $video . " -ar 22050 -ab 32 -f flv -s 320×240 film/" . $nyt_navn . ".flv";
Avatar billede jakobdo Ekspert
26. august 2008 - 15:21 #26
$image  = dirname(__FILE__) . '/' . $file; <--- Hvor kommer $file fra ?
Avatar billede jakobdo Ekspert
26. august 2008 - 15:21 #27
Og kan du ikke prøve at lege med ffmpeg.exe uden at du arbejde gennem php ?

Altså fra en command-prompt.
Avatar billede jakobdo Ekspert
26. august 2008 - 15:21 #28
Hvilken video-type konvertere du fra ?
Avatar billede jkampmann Nybegynder
26. august 2008 - 15:26 #29
Har prøvet at converte fra .3gp, .avi osv.. Giver alle sammen 0 KB - men alt andet virker stortset, undtagen, at den ikke konverter til forrige film til .FLV.

$image bliver slet ikke benyttet, så det egentligt ligemeget. Den skal bare slettes.
Avatar billede jakobdo Ekspert
26. august 2008 - 15:50 #30
Da jeg ikke kunne finde ffmpeg.exe, hentede jeg en med GUI: http://www.winff.org/index.php?option=com_content&view=category&layout=blog&id=34&Itemid=60

Den konvertede fint en mpg til en flv fil.
Og flv filen kan afspilles med lyd og det hele.
Avatar billede jkampmann Nybegynder
26. august 2008 - 16:11 #31
okay jakob, nu har jeg lavet en klasse, men jeg forstår ikke helt hvorfor den ikke fylder indhold på min .flv.. og hvis jeg sætter det til .avi, laver den heller ikke noget indhold.

kan det være pga jeg kører 2 cmd 2 steder?

Jeg vil helst have det samplet ét sted, da jeg ved at ffmpeg sagtens kan lave .flv.

<?php
class VideoUpload
{
      var $ffmpeg = "./ffmpeg.exe";
      var $MB = 9;
      var $NewFileName;

      function __construct()
      {
            $this->ShowUploadFormular();
            $this->NewFileName = time();
      }

      function __destruct()
      {
      }

      function CreateMovie ()
      {
            $VideoName = strtolower ( $_FILES['film']['name'] );
            $Size      = $_FILES['film']['size'];

            $MoveTo = "./film/" . $VideoName;

            if ( $Size > ($this->MB*10000000) )
            {
                  $this->ErrorHandler('Din video må højest fylde 9MB!');
            } else {
                  move_uploaded_file($_FILES['film']['tmp_name'], $MoveTo);
                 
                  $this->VideoScreenDumb ( $VideoName );
            }
      }

      function ErrorHandler ( $Error )
      {
            echo "<h1>Der er sket en fejl!</h1>";
            echo "<p>" . $Error . "</p>";
      }

      function ShowUploadFormular()
      {
          echo '<form action="" method="post" enctype="multipart/form-data">';
          echo '<input type="file" name="film" /><br /><input type="submit" value="Indsend" name="sub"/>';
          echo '</form>';
      }
           
      function VideoScreenDumb( $VideoInput )
      {
        $video  = dirname(__FILE__) . '/film/' . $VideoInput;

        $cmd    = dirname(__FILE__) . "/" . $this->ffmpeg . " -itsoffset -3 -i " . $video . " -vcodec png -vframes 1 -an -f rawvideo -s 412x300 dumbs/" .

$this->NewFileName . ".png 2>&1";

        $return = `$cmd`;

        $this->ConvertVideoToFlv($VideoInput);

      }

      function ConvertVideoToFlv ( $VideoInput )
      {
        $video  = dirname(__FILE__) . '/film/' . $VideoInput;
        $ToWhere = dirname(__FILE__) . "/film/" . $this->NewFileName . ".avi";

        $cmd = dirname(__FILE__) . "/" . $this->ffmpeg . " -i " . $video . " -ar 22050 -ab 32 -f avi -s 320×240 " . $ToWhere . " 2>&1";

        $return = `$cmd`;

        $this->DeleteOldVideo($VideoInput);
      }

      function DeleteOldVideo($VideoInput)
      {
          unlink( "./film/" . $VideoInput );
      }

}


$Class = new VideoUpload;

if ( isset ( $_POST['sub'] ) )
{
    $Class->CreateMovie();
}

?>
Avatar billede jakobdo Ekspert
26. august 2008 - 17:22 #32
Prøv at stop med PHP, og få ffmpeg til at virke direkte i en command prompt, virker det ?
Avatar billede jkampmann Nybegynder
26. august 2008 - 17:38 #33
Så virker det heller ikke, og får denne meddelse:

WARNING: The bitrate parameter is set too low. It takes bits/s as argument, not
kbits/s

Console:

C:\xampp\htdocs\ffmpeg>ffmpeg.exe -i Video001.3gp -ar 22050 -ab 32 -f flv -s 320
Î240 film/test.flv  2>&1
FFmpeg version SVN-r12665, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --enable-gpl --enable-postproc --enable-swscale --enable-avfilt
er-lavf --enable-pthreads --enable-liba52 --enable-avisynth --enable-libfaac --e
nable-libfaad --enable-libgsm --enable-memalign-hack --enable-libmp3lame --enabl
e-libnut --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid
--cpu=i686 --extra-ldflags=-static
  libavutil version: 49.6.0
  libavcodec version: 51.54.0
  libavformat version: 52.13.0
  libavdevice version: 52.0.0
  built on Apr  2 2008 22:35:11, gcc: 4.2.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Video001.3gp':
  Duration: 00:00:07.4, start: 0.000000, bitrate: 143 kb/s
    Stream #0.0(eng): Video: h263, yuv420p, 176x144 [PAR 12:11 DAR 4:3], 29.97 t
b(r)
    Stream #0.1(eng): Audio: samr / 0x726D6173, 8000 Hz, mono
WARNING: The bitrate parameter is set too low. It takes bits/s as argument, not
kbits/s
Output #0, flv, to 'film/test.flv':
    Stream #0.0(eng): Video: flv, yuv420p, 320x240 [PAR 1:1 DAR 4:3], q=2-31, 20
0 kb/s, 29.97 tb(c)
    Stream #0.1(eng): Audio: libmp3lame, 22050 Hz, mono, 0 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Unsupported codec (id=73728) for input stream #0.1
Avatar billede jakobdo Ekspert
26. august 2008 - 17:44 #34
Prøv:
C:\xampp\htdocs\ffmpeg>ffmpeg.exe -i Video001.3gp -f flv -s 320x240 film/test.flv
Avatar billede jakobdo Ekspert
26. august 2008 - 17:44 #35
PS: Hvor har du fået ffmpeg til windows henne ?
Avatar billede jkampmann Nybegynder
26. august 2008 - 17:46 #36
Stadig det samme..

C:\xampp\htdocs\ffmpeg>ffmpeg.exe -i Video001.3gp -f flv -s 320x240 film/test.fl
v  2>&1
FFmpeg version SVN-r12665, Copyright (c) 2000-2008 Fabrice Bellard, et al.
  configuration: --enable-gpl --enable-postproc --enable-swscale --enable-avfilt
er-lavf --enable-pthreads --enable-liba52 --enable-avisynth --enable-libfaac --e
nable-libfaad --enable-libgsm --enable-memalign-hack --enable-libmp3lame --enabl
e-libnut --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid
--cpu=i686 --extra-ldflags=-static
  libavutil version: 49.6.0
  libavcodec version: 51.54.0
  libavformat version: 52.13.0
  libavdevice version: 52.0.0
  built on Apr  2 2008 22:35:11, gcc: 4.2.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Video001.3gp':
  Duration: 00:00:07.4, start: 0.000000, bitrate: 143 kb/s
    Stream #0.0(eng): Video: h263, yuv420p, 176x144 [PAR 12:11 DAR 4:3], 29.97 t
b(r)
    Stream #0.1(eng): Audio: samr / 0x726D6173, 8000 Hz, mono
Output #0, flv, to 'film/test.flv':
    Stream #0.0(eng): Video: flv, yuv420p, 320x240 [PAR 1:1 DAR 4:3], q=2-31, 20
0 kb/s, 29.97 tb(c)
    Stream #0.1(eng): Audio: libmp3lame, 8000 Hz, mono, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Unsupported codec (id=73728) for input stream #0.1
Avatar billede jkampmann Nybegynder
26. august 2008 - 17:54 #37
Jeg kan ikke huske hvor jeg hentede det..
Avatar billede jkampmann Nybegynder
26. august 2008 - 17:55 #38
Undskyld... fandt den her http://ffdshow.faireal.net/mirror/ffmpeg/
Avatar billede jakobdo Ekspert
26. august 2008 - 17:56 #39
Se fejlen her: Unsupported codec (id=73728) for input stream #0.1
Avatar billede jkampmann Nybegynder
26. august 2008 - 17:58 #40
Hvad vil det sige ?
Avatar billede jkampmann Nybegynder
26. august 2008 - 18:01 #41
Det fordi den ikke understøtter .3gp åbenbart !!! Ej, det kan sgu da ikke passe.. ?
Avatar billede jakobdo Ekspert
26. august 2008 - 18:03 #42
Avatar billede jkampmann Nybegynder
26. august 2008 - 18:10 #43
Så skal jeg have kendskab til C++ og skulle compile et nyt program med ekstra funktioner deri?

Det kan jeg ikke - har du mulighed for at få fat i "libamr_nb and libamr_wb, then rebuild ffmpeg" ?
Avatar billede jakobdo Ekspert
26. august 2008 - 18:18 #44
Det tætteste jeg kommer er en sådan søgning i google: http://www.google.dk/search?hl=da&q=amr+codec

Og jeg synes ikke resultaterne er så brugbare. :o(
Avatar billede jkampmann Nybegynder
26. august 2008 - 18:26 #45
Det var satans.. Problemet er jo bare, at de fleste skal kunne lægge deres .3gp (fra mobilen) på sitet, da de fleste unge skal bruge websiden, og derfor bruger de ofte deres telefon.

Hvad gør vi så?
Avatar billede jakobdo Ekspert
26. august 2008 - 18:30 #46
Det burde dog være muligt på en linux box... :o)
Avatar billede jkampmann Nybegynder
26. august 2008 - 18:31 #47
Er du sikker på det ? For i såfald, vil jeg benytte mig af dette jeg har kodet sammen nu, også vente med at smide det på, til linux versionen..

Smid lige svar og tusind tak for din hjælp... godt du gad at følge mig så langt..
Avatar billede jakobdo Ekspert
26. august 2008 - 18:37 #48
Jeg er ikke sikker.
Men skaf en prøve version af VMWARE og smid en Linux distro på.
Så kan du teste det hele af, inden du smider penge efter lortet.
Du bør også overveje at kigge på: http://ffmpeg-php.sourceforge.net/

Og så får du et svar.
Avatar billede jakobdo Ekspert
26. august 2008 - 18:52 #49
Takker for point.
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