Jump to content
php.lv forumi

ffmpeg klases optimizēšana.


eregi

Recommended Posts

M, iekš http://www.phpclasses.org dabūju ffmpeg klasi ar, kuras palīdzību varu konvertēt video uz flv formātu un uztaisīt titulbildi.

klase- http://paste.php.lv/6809

funkcijas - http://paste.php.lv/6810

 

funkcija atkārtojās veselas divas reizes, jo ar pirmo reizi video tiek pārkonvertēts, bet ar otro izņemta titulbilde.

 

1.) Vai ir iespējams, ka ar vienu reizi izveido uzreiz gan titulbildi gan pārkonvertē video? Jo līdz šim izmantoju 2 funkcijas, šķiet, ka iespējams tas ir, tik kā?

2.) Kā panākt, lai izgriež vairākas titulbildes, piem 4 15 40 sekundēs, itkā atradu, kā panākt, lai izgriež noteiktā periodā - $ffmpeg->extractFrames('00:00:02', '00:00:04', 1);

3.) Kā panākt pēc iespējas labāku effektu, lai samazinātu video izmērus, jo nereti sanāk, ka tas gandrīz ir pat lielāks, nekā pirms konvertēšanas, piem konvertējot 216 mb lielu failu sanāca 180 mb, nu iespējams, ka var labāk?

Link to comment
Share on other sites

1) ir iespejams izsauc to otru funkciju no pirmas. (optimizaacija nekaada, cik gars tik plats, bet pasam tev bus mazak jaraksta. Taka nav verts iepringt, nekada optimizaacija ipasa nebus (oky, vispar nebus).

 

 

2) nu re , pats jau atradi ka to dabut gatavu...

 

3)ffmpeg ir iespeejams noraadit faila izmeerus kad vinju konvertee.. paraknjaajies par savu klasi.

Link to comment
Share on other sites

Tur vienkārši norādi to periodu vienādu un tad 1 freimu, bet paskatījos tevis iedotajā klasē tur jau ir gatava metode $ffmpeg->extractFrame($extract_begin_timecode='00:00:00') , kas būtībā izdara to pašu ko es jau tev centos pateikt :

public function extractFrame($extract_begin_timecode='00:00:00')
{
 $this->extractFrames($extract_begin_timecode, $extract_begin_timecode, 1, 1);
}

 

#1, Cik sapratu no tevis tad 2 funckciju vietā vēlies to panākt ar vienu vai ne ? tjip:

function a() {
  echo 'a';
}

function b() {
  echo 'b';
}

 

gribi panākt tā ?

function ab() {
 a();
 b();
}

 

Ja tā ir, tad tur nu nekāda optimizācija nav, tikai īsām pašam kodējot jāraksta :)

Link to comment
Share on other sites

#1

$ffmpeg->extractFrames($extract_begin_timecode='00:00:01', $extract_end_timecode='00:00:40', $frames_per_second=1, $frame_limit=3);

mēģinot šād man izgriež tos trīs freimus bet visi no pirmajām sec - 1, 2, 3, nu itkā loģiski, bet kā tad ar to intervālu piem, limit 3 un int 10 sec.

 

#2

nu pašlaik ir -

function ab()
 {
  a();
  b();
 }

vet vajadzētu kaut kā panākt, ka ar a() viss izdarās, piem ievietot tajā a()

$ffmpeg->extractFrames($extract_begin_timecode='00:00:01', $extract_end_timecode='00:00:40', $frames_per_second=1, $frame_limit=3);

 

vai kādu citu rindiņu, kura atbildīga par freimiem.

Link to comment
Share on other sites

#1 Lasīt māki ? :) tur taču viss f-jā aprakstīts! Es pirmo reizi redzu to klasi un ir skaidrs ko no manis tā f-ja prasa.

 

$extract_begin_timecode='00:00:01', sākuma laiks no kura sāks griezt freimus.

$extract_end_timecode='00:00:40', beigu laiks līdz kuram tiks griezti freimi.

$frames_per_second=1, cik freimus izgriezt sekundē (škiet ka normāliem video bija 24 freimi sekundē)

$frame_limit=3 limits cik freimus izgriezt.

 

 

Ja negribi tos freimus pēc kārtas tad izmanto šo metodi:

extractFrame($extract_begin_timecode='00:00:00')

un nāksies vien 3x izsaukt šo f-ju ar dažādiem laikiem.

 

#2 un kur problēma ? F-jas nemāki definēt?

Link to comment
Share on other sites

#1

Tieši no šī es pirms topika veidošanas vēlējos izvairīties. sanāks kodā +60 rindas...

 

Bet, ja to funkciju izskauks trīs atsevišķas reizes, kā panākt, lai kad seivo pieseivo klāt tā freima numuru, piem pašlaik, ja seivo vairākus freimus uzreiz tad viņš noseivo ar freima numuru piem

 

nos-(freimanr).jpg

p;

199299292-1.jpg

199299292-2.jpg

199299292-3.jpg

 

ja laidīšu pa atsevišķām funkcijām, tad neseivos ar atsevišķo freimanr.

 

p.s tāds muļķīgs jaut vai man atsevišķi kāds eksteņšans jāliek priekš lighttpd, lai b'tu ajax atbalsts, jo man takā parasti ajax skripti neizpildās,

Link to comment
Share on other sites

Kāpēc +60 rindas? uztaisi pats savu f-ju kas extracto no norādītā video tos freimus.

 

Bāc tu laikam toč lasīt nemāki -> paskaties pats tajā klasē!

 

Citāts no tavas klases:

#
/**
* Returns the last outputted file that was processed by ffmpeg from this class.
*
* @return mixed array|string Will return an array if the output was a sequence, or string if it was a single file output
*/
public function getLastOutput()
{
return $this->files[0];
}

/**
* Returns all the outputted files that were processed by ffmpeg from this class.
*
* @return array
*/
public function getOutput()
{
return $this->files;
}

 

 

Nē, nav jainstalē atsevišķš extension. Ja tu zinātu kas ir ajax tad saprastu ka ajax veic no klienta pārlūkprogrammas pieprasījumu uz serveri saņem datus un tad vari ar tiem rīkoties.

Link to comment
Share on other sites

lasīt maku, tik dažreiz ar to koda izprašanu pieklibo.. (:

 

iekš funkcijas mēģināju -

$ffmpeg->extractFrame('00:00:01','00:00:10','00:00:40');

un iekš klases

extractFrame($extract_begin_timecode='00:00:00',$extract_second_timecode='00:00:00',$extract_third_timecode='00:00:00')
	{
		$this->extractFrames($extract_begin_timecode, $extract_begin_timecode, 1, 1);
		$this->extractFrames($extract_second_timecode, $extract_second_timecode, 1, 1);
		$this->extractFrames($extract_third_timecode, $extract_third_timecode, 1, 1);
	}

 

nekāds rez.

 

 

par ajax, saprotu, ka tas notiek starp serveri un lietotāju, bet mēģināju palaist parastu

<%
response.expires=-1
response.write(time)
%

nekāds rez.

Link to comment
Share on other sites

×
×
  • Create New...