Autor Zpráva
Martin Adámek
Profil
Zdravim,
snazim se vyuzit ffmpeg pro prevod videa na mensi rozliseni,
samozrejme se zachovanim spravneho pomeru stran,
pouzivam zapis
exec ("ffmpeg -i $vstup -ar $audiovzorkovani -ab $audiokbps -f $vystupniformat -s $vystupnirozmer $vystup", $ret);

ale funguje mi to jen pokud jako vystupni rozliseni zadam jakykoliv (i nestandardni) rozmer s pomerem 4:3
(prestoze vstupni video ma pomer cca. 16:8,84).

Kdyz zadam pomer stran odpovidajici skutecnemu pomeru stran videa, neudela to nic.
Kdyz zadam maly vystupni rozmer s pomerem stran 16:9, tak to taky neudela nic.

Kdyz zadam $vystupnirozmer='852x480' (jeden ze standardnich rozmeru ve skorospravnem pomeru), tak to funguje.
Ale je mi to na nic, kdyz chci video 670x370 zmensit.

Tusi nekdo, proc
prevod do libovolne velikosti ve spatnem pomeru 4:3 jde,
prevod do 852x480 jde,
ale prevod do velikosti 640x353 ve spravnem pomeru nejde
?

Menil jsem to uz natvrdo jako string, abych vyloucil chybu v automatickem vypoctu rozmeru,
zkousel jsem to pro flv, mpg i avi. Z Googlu jsem taky nic nevyzdimal.



Navic mi vubec nejde rozbehnout export filmu do gif animace
- zkousel jsem vsude zminovany zapis exec("ffmpeg -i $vstup $vystup");, zkousel jsem dopisovat parametry, zkousel jsem 3 vstupni formaty - nepomohlo nic.

Diky.

*Zkusil jsem i misto 'x' pouzit '*', ale nezabralo to...
peta
Profil
Martin Adámek:
Ffmpeg je program, co mas nahrany na svem pocitaci. Ma vlastni forum, ma vlastni napovedu. S PHP nema nic spolecneho. Ja treba pouzivam virtualdub.
Martin Adámek
Profil
K ffmpeg bližší fórum, než zdejší, jsem v cs prostředí nenašel. A není to jediné vlákno o ffmpegu na tomhle fóru - a většina jich je právě v sekci php.
Virtualdub je taky k dispozici pro použití na serveru?

Dokumentace ffmpegu mi to neřeší, a jako nejbližší fórum se mi jeví právě tohle...
Krakatoa
Profil
Martin Adámek:
A nemohl bys upnout kousek videa co ti nejde enkodovat? Člověk nemá na čem vyzkoušet.
Martin Adámek
Profil
Tak jsme si s tím ještě hodiny hráli a zkoušeli všechno možný, a aktuální závěr je,
že starší videa jdou převádět, jak je potřeba, a zloběj videa novější.
Momentálně máme asi 3 roky starou verzi ffmpegu, co nám na hostingu nainstalovali z repozitáře, tak zkusíme novější, a snad to pomůže.

Krakatoa:
Zatím díky.
Joker
Profil
Martin Adámek:
K ffmpeg bližší fórum, než zdejší, jsem v cs prostředí nenašel.
Což je dost zvláštní, tohle fórum mi přijde od tématu konverze videa asi podobně vzdálené, jako fórum o mobilních telefonech nebo o počítačových hrách.

Mámmm takový neblahý pocit, že tohle vlákno by sem mohlo přitáhnout další tazatele ohledně konverze videa, budeme to nějak řešit?
Zatím bych počkal, jestli se tu objeví nějaká užitečná odpověď.

Moderátor Alphard: Zdá se, že vlákno na nějakou chvílí spí.
Alphard
Profil
[#6] Joker
Jsem proti mazání, určité užitečné informace tady jsou.
A dokud Martin Adámek nenapíše, jestli pomohla nová verze, ani bych nezamykal.

[#8] Klidně dopiš, nebo to časem doplním sám.

Doplňuji, že občas se zde objeví dotazy, jak upravit video. I když se problém netýká přímo PHP, nebylo by špatné mít tady několik málo ukázet použití, na které se dá odkázat.
Joker
Profil
Alphard:
Nemusí se to hned mazat (hlavně pokud tu bude něco užitečného), může se třeba připsat do 1. příspěvku nějaké upozornění pro ty, kdo přišli z vyhledávače.
Krakatoa
Profil
Martin Adámek:
Nevím proč ti to blbne, já to teď zkoušel a mně to funguje. A proč nechceš udělat nějaký vzorek videa z nějakýho free videa z reklamy, upoutávky na film, big buck bunny atd., přiložit svůj ffmpeg a cmd? Takto to bude jen tipování.
Navíc myslím nemusíš dodržet poměr stran u rozlišení videa, ten není pro zobrazení poměru v přehravači důležitý, důležité pro nastavení poměru stran v přehravači je nastavení parametru DAR (Display aspect ratio) ve videu. ffmpeg bere defaultně to ze vstupního videa, pokud chceš nastavit jiné DAR než má vstupní video, nastavuje se to třeba takto: -vf setdar=16:9, todle by se tě ale netýkalo, jen naznačuju, že nemusíš převádět do 640x353 ale třeba do 640x400 a ten poměr stran DAR budeš mít u výstupního videa stejný, např. tv vysílá v rozlišení 720x576 (což je 5:4) přitom na obrazovce máme 16:9 (DAR).
Marek88
Profil
Martin Adámek:
Já jsem jednou někde použil něco takového:
ffmpeg -i $vstupni_video -s 528x496 -aspect 528:496 -b $bitrate ...

PS: Ten poměr stran tam zadávám proto, že jsem ho potřeboval změnit. Když jsem zadal jenom nové rozlišení, tak se zachoval původní poměr stran (to jsem nechtěl). Třeba ten -aspect pomůže i s tvým problémem...
Krakatoa
Profil
Marek88:
Že je možná změna poměru zobrazovaného videa (-vf setdar je myslím to samé co -aspect) i to že ffmpeg při změně rozlišení zachová defaultně původní poměr zobrazovaného videa jsem psal v příspěvku nad tebou. A -aspect mu určitě nepomůže, mu nejde o změnu zobrazovaného poměru stran (já u -vf setdar uvedl, že se ho ten parametr netýká) .-) nebo si myslíš, že když napíše jako titulek: "FFmpeg mi nedovolí zachovat poměr stran při převodu videa", že mu jde o změnu poměru zobrazovaného videa (i když to myslel na rozlišení a ne na DAR)?
Martin Adámek
Profil
Krakatoa:
Zlobilo mi to s tímhle videem: video.flv (27MB)
A běží to např. s tímhle: test3.avi (21MB)

Používám zápis exec ("ffmpeg -i $vstup -f $vystupniformat -s $vystupnirozmer -qscale 1 $vystup", $ret); a na ty starší videa je to ok - jako velikost můžu dát různý hodnoty, a běhá to.
Ukázalo se, že je dobrý nastavit kvalitu (parametr -qscale nastaví konstantní kvalitu a proměnlivej bitrate, tím je výhodnější než použití parametru pro nastavení bitrate), protože výchozí je dost malá.
Akorát jsem nikdy nic nenašel v $ret , takže vždycky když to nic neudělalo jsme mohli jen hádat proč.

Marek88, Krakatoa:
Při pokusech jsme se prokousali k použití -aspect a zjistili jsme, že dělá něco úplně jinýho než (poměr hodnot v) -s.
Při nahrání videa s čtvercovýma pixelama, který se zobrazovalo moc úzce, jsme použitím -aspect 16:9 roztáhli každej jednotlivej pixel, aniž by se změnilo rozlišení w x h v parametrech videa - a video se pro diváka v pžehrávači reálně rozšířilo (v daným případě to bylo dobře). Takže to vypadá, že aspect je užitečnej pro narovnání poměru stran, když je vše teoreticky správný (poměr čísel w x h), ale praktický zobrazení špatný.

Jestli je někde na jakpsatweb vhodnější sekce, tak to celý do ní klidně někdo přešópněte, hlavně ať to někde je :)
Až zkusíme novou verzi ffmpegu, dám vědět - ale nebude to asi hned, na tomhle děláme, když se neřeší nic urgentnějšího.
Marek88
Profil
[#11] Krakatoa
A psal jsem snad někde, že je to určitě 100% řešení? Měl problém s poměrem stran, tak jsem zmínil parametr, který to ovlivňuje. Se hned neposer...
Krakatoa
Profil
Martin Adámek:
zkoušel jsem to v cmd i přes exec a mně to nezlobí

ffmpeg -i video.flv -f avi -s 640x353 -qscale 1 video.avi
ffmpeg version N-41975-gb536e2f Copyright (c) 2000-2012 the FFmpeg developers
  built on Jun 26 2012 20:37:12 with gcc 4.7.1
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass
 --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable
-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libope
njpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libth
eora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-
libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --e
nable-zlib
  libavutil      51. 63.100 / 51. 63.100
  libavcodec     54. 29.101 / 54. 29.101
  libavformat    54. 11.100 / 54. 11.100
  libavdevice    54.  0.100 / 54.  0.100
  libavfilter     3.  0.100 /  3.  0.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
Input #0, flv, from 'video.flv':
  Metadata:
    audiodelay      : 0
    canSeekToEnd    : true
  Duration: 00:02:34.56, start: 0.000000, bitrate: 1442 kb/s
    Stream #0:0: Video: vp6f, yuv420p, 670x370, 1239 kb/s, 25 tbr, 1k tbn, 1k tb
c
    Stream #0:1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s
Please use -q:a or -q:v, -qscale is ambiguous
[graph 0 input from stream 0:0 @ 00000000046b2e40] w:670 h:370 pixfmt:yuv420p tb
:1/1000 fr:25/1 sar:0/1 sws_param:flags=2
[output stream 0:0 @ 00000000046b2f60] No opaque field provided
[scaler for output stream 0:0 @ 00000000046b2ec0] w:670 h:370 fmt:yuv420p sar:0/
1 -> w:640 h:353 fmt:yuv420p sar:0/1 flags:0x4
[graph 1 input from stream 0:1 @ 00000000046b3100] tb:1/1000 samplefmt:s16 sampl
erate:44100 chlayout:0x3
Output #0, avi, to 'video.avi':
  Metadata:
    audiodelay      : 0
    canSeekToEnd    : true
    ISFT            : Lavf54.11.100
    Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 640x353, q=2-31, 200
 kb/s, 25 tbn, 25 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, stereo, s16
Stream mapping:
  Stream #0:0 -> #0:0 (vp6f -> mpeg4)
  Stream #0:1 -> #0:1 (mp3 -> libmp3lame)
Press [q] to stop, [?] for help
frame=   77 fps=0.0 q=1.0 size=    1396kB time=00:00:03.00 bitrate=3806.8kbits/s
frame=  151 fps=150 q=1.0 size=    2513kB time=00:00:05.98 bitrate=3441.4kbits/s
frame=  225 fps=149 q=1.0 size=    3461kB time=00:00:08.93 bitrate=3174.0kbits/s
frame=  300 fps=150 q=1.0 size=    4498kB time=00:00:11.93 bitrate=3086.3kbits/s
frame=  378 fps=151 q=1.0 size=    5503kB time=00:00:15.02 bitrate=3001.3kbits/s
frame=  450 fps=150 q=1.0 size=    6440kB time=00:00:17.94 bitrate=2939.8kbits/s
frame=  527 fps=150 q=1.0 size=    7593kB time=00:00:21.00 bitrate=2961.7kbits/s
frame=  606 fps=151 q=1.0 size=    8596kB time=00:00:24.18 bitrate=2911.0kbits/s
frame=  689 fps=153 q=1.0 size=    9464kB time=00:00:27.48 bitrate=2821.2kbits/s
frame=  774 fps=155 q=1.0 size=   10382kB time=00:00:30.87 bitrate=2754.5kbits/s
frame=  856 fps=155 q=1.0 size=   11230kB time=00:00:34.14 bitrate=2694.4kbits/s
frame=  936 fps=156 q=1.0 size=   12085kB time=00:00:37.35 bitrate=2650.3kbits/s
frame= 1015 fps=156 q=1.0 size=   12974kB time=00:00:40.51 bitrate=2623.2kbits/s
frame= 1098 fps=156 q=1.0 size=   13832kB time=00:00:43.83 bitrate=2585.1kbits/s
frame= 1177 fps=156 q=1.0 size=   14738kB time=00:00:46.99 bitrate=2569.2kbits/s
frame= 1257 fps=157 q=1.0 size=   15751kB time=00:00:50.20 bitrate=2570.0kbits/s
frame= 1338 fps=157 q=1.0 size=   16692kB time=00:00:53.44 bitrate=2558.5kbits/s
frame= 1420 fps=157 q=1.0 size=   17655kB time=00:00:56.71 bitrate=2550.3kbits/s
frame= 1499 fps=157 q=1.0 size=   18736kB time=00:00:59.84 bitrate=2564.6kbits/s
frame= 1575 fps=157 q=1.0 size=   19937kB time=00:01:02.92 bitrate=2595.4kbits/s
frame= 1654 fps=157 q=1.0 size=   20943kB time=00:01:06.08 bitrate=2595.9kbits/s
frame= 1733 fps=157 q=1.0 size=   21903kB time=00:01:09.25 bitrate=2591.0kbits/s
frame= 1816 fps=157 q=1.0 size=   22906kB time=00:01:12.56 bitrate=2585.8kbits/s
frame= 1899 fps=158 q=1.0 size=   23920kB time=00:01:15.88 bitrate=2582.2kbits/s
frame= 1982 fps=158 q=1.0 size=   24977kB time=00:01:19.20 bitrate=2583.3kbits/s
frame= 2064 fps=158 q=1.0 size=   26049kB time=00:01:22.49 bitrate=2586.8kbits/s
frame= 2136 fps=158 q=1.0 size=   27413kB time=00:01:25.36 bitrate=2630.6kbits/s
frame= 2210 fps=157 q=1.0 size=   28674kB time=00:01:28.32 bitrate=2659.6kbits/s
frame= 2285 fps=157 q=1.0 size=   29729kB time=00:01:31.32 bitrate=2666.7kbits/s
frame= 2365 fps=157 q=1.0 size=   31311kB time=00:01:34.51 bitrate=2713.9kbits/s
frame= 2447 fps=157 q=1.0 size=   32904kB time=00:01:37.80 bitrate=2756.1kbits/s
frame= 2527 fps=157 q=1.0 size=   34481kB time=00:01:41.01 bitrate=2796.3kbits/s
frame= 2604 fps=157 q=1.0 size=   36060kB time=00:01:44.07 bitrate=2838.4kbits/s
frame= 2681 fps=157 q=1.0 size=   37752kB time=00:01:47.15 bitrate=2886.2kbits/s
frame= 2764 fps=157 q=1.0 size=   39201kB time=00:01:50.47 bitrate=2907.0kbits/s
frame= 2839 fps=157 q=1.0 size=   40818kB time=00:01:53.47 bitrate=2946.7kbits/s
frame= 2916 fps=157 q=1.0 size=   42251kB time=00:01:56.55 bitrate=2969.5kbits/s
frame= 2996 fps=157 q=1.0 size=   43910kB time=00:01:59.77 bitrate=3003.3kbits/s
frame= 3072 fps=157 q=1.0 size=   45721kB time=00:02:02.80 bitrate=3050.0kbits/s
frame= 3148 fps=157 q=1.0 size=   47438kB time=00:02:05.80 bitrate=3089.0kbits/s
frame= 3229 fps=157 q=1.0 size=   48283kB time=00:02:09.07 bitrate=3064.5kbits/s
frame= 3313 fps=157 q=1.0 size=   49436kB time=00:02:12.44 bitrate=3057.8kbits/s
frame= 3397 fps=157 q=1.0 size=   50854kB time=00:02:15.81 bitrate=3067.5kbits/s
frame= 3478 fps=157 q=1.0 size=   52528kB time=00:02:19.04 bitrate=3094.6kbits/s
frame= 3556 fps=157 q=1.0 size=   54222kB time=00:02:22.15 bitrate=3124.6kbits/s
frame= 3636 fps=157 q=1.0 size=   55846kB time=00:02:25.37 bitrate=3147.0kbits/s
frame= 3715 fps=157 q=1.0 size=   57561kB time=00:02:28.53 bitrate=3174.7kbits/s
frame= 3794 fps=157 q=1.0 size=   59280kB time=00:02:31.69 bitrate=3201.3kbits/s
frame= 3864 fps=157 q=1.0 Lsize=   61001kB time=00:02:34.59 bitrate=3232.5kbits/
s
video:58344kB audio:2416kB subtitle:0 global headers:0kB muxing overhead 0.39680
8%

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: