рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реАрдбрд┐рдпреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ

рдЫрд╡рд┐
рд╢реБрдн рджрд┐рдиред
рдХрдИ рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реБрдИред
рдордВрдЪреЛрдВ рдФрд░ рдмреНрд▓реЙрдЧреЛрдВ рдкрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрдИ рд▓реЗрдЦ рд╣реИрдВ, рджреЛрдиреЛрдВ рд░реВрд╕реА-рднрд╛рд╖рд╛ рдФрд░ рд╡рд┐рджреЗрд╢реА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ред рд▓реЗрдХрд┐рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдо рдиреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ред рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдХрд╛рд░рдг рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрдИ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧреАред

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ


рд╕рдм рдХреБрдЫ рд░реВрдЯ рдкрд░ Ubuntu 11.04 (рдирдЯреНрдЯреА рдирд░рд╡рд╛рд▓) рдХреЗ рд╕рд╛рде рдПрдХ рдорд╢реАрди рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
root@r2d2:~# uname -a Linux r2d2 2.6.35-30-generic #57-Ubuntu SMP Tue Aug 9 18:00:33 UTC 2011 i686 GNU/Linux 

рдкрд╣рд▓реЗ рдкреБрд░рд╛рдиреЗ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдпрджрд┐ рдореМрдЬреВрдж рд╣реИ

 root@r2d2:~# apt-get remove ffmpeg x264 libx264-dev 

рд╕рдВрдХреБрд▓ рдХреА рд╕реВрдЪреА рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛

 root@r2d2:~# apt-get update && apt-get upgrade 

рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

 root@r2d2:~# apt-get install build-essential checkinstall git git-core libfaac-dev libfaad-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev subversion texi2html yasm zlib1g-dev libavcodec52 mencoder 

H.264 рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ рдкрдврд╝реЗрдВред
 root@r2d2:~# git clone git://git.videolan.org/x264.git root@r2d2:~# cd x264 root@r2d2:~/x264# ./configure --enable-shared 

рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрдм x264 рдХреЛ рдмрд┐рдирд╛ --enable-shared рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ --enable-shared рд╣реИ, рддреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдореЗрд░реЗ рдкрд╛рд╕ / usr / рд╕реНрдерд╛рдиреАрдп / рдмрд┐рди) рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬрдм ffmpeg рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ lib2264 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗрдЧрд╛:
рддреНрд░реБрдЯрд┐: libx264 рдирд╣реАрдВ рдорд┐рд▓реА

--enable-shared рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде, рдЪреЗрдХрдЗрдВрд╕реНрдЯ рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
 install -d /usr/local/bin install x264 /usr/local/bin install -d /usr/local/include install -d /usr/local/lib install -d /usr/local/lib/pkgconfig install -m 644 x264.h /usr/local/include install -m 644 x264_config.h /usr/local/include install -m 644 x264.pc /usr/local/lib/pkgconfig ln -f -s libx264.so.116 /usr/local/lib/libx264.so install -m 755 libx264.so.116 /usr/local/lib 

рдбреЗрдмрд┐рдпрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп libx264 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред
X264 рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп --prefix=/shared рд╡рд┐рдХрд▓реНрдк рдиреЗ рдорджрдж рдХреАред
 root@r2d2:~/x264# make root@r2d2:~/x264# checkinstall -fstrans=no -install=yes -pkgname=x264 -pkgversion ┬л1:0.svn`date +%Y%m%d`┬л -default 

Ffmpeg рдХреА рд╕реНрдерд╛рдкрдирд╛

рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ рдкрдврд╝реЗрдВред
 root@r2d2:~# svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg root@r2d2:~# cd ffmpeg root@r2d2:~# ./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab root@r2d2:~# make root@r2d2:~# checkinstall -fstrans=no -install=yes -pkgname=ffmpeg -pkgversion ┬л4:0.5+svn`date +%Y%m%d`┬л -default 

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕:
 root@r2d2:~# x264 --version x264 0.116.2074 2641b9e built on Sep 6 2011, gcc: 4.4.5 configuration: --bit-depth=8 x264 license: GPL version 2 or later 

 root@r2d2:~# ffmpeg -version FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers built on Sep 6 2011 09:26:49 with gcc 4.4.5 configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab libavutil 50.36. 0 / 50.36. 0 libavcore 0.16. 1 / 0.16. 1 libavcodec 52.108. 0 / 52.108. 0 libavformat 52.93. 0 / 52.93. 0 libavdevice 52. 2. 3 / 52. 2. 3 libavfilter 1.74. 0 / 1.74. 0 libswscale 0.12. 0 / 0.12. 0 libpostproc 51. 2. 0 / 51. 2. 0 FFmpeg SVN-r26402 libavutil 50.36. 0 / 50.36. 0 libavcore 0.16. 1 / 0.16. 1 libavcodec 52.108. 0 / 52.108. 0 libavformat 52.93. 0 / 52.93. 0 libavdevice 52. 2. 3 / 52. 2. 3 libavfilter 1.74. 0 / 1.74. 0 libswscale 0.12. 0 / 0.12. 0 libpostproc 51. 2. 0 / 51. 2. 0 

рдЕрдм, рдпрджрд┐ рдЖрдк рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ
 ffmpeg -threads 4 -y -i "video.avi" -vcodec libx264 -vpre "hq" -b 2000k -acodec libfaac -ar 44100 -ab 128k -ac 2 "video.flv" 
рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд░реВрдкрд╛рдВрддрд░рдг рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛

-i рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реИ;
-ar - рдзреНрд╡рдирд┐ рдирдореВрдирд╛рдХрд░рдг рдЖрд╡реГрддреНрддрд┐ (11kHz рдХреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП);
-рдм - рдСрдбрд┐рдпреЛ рдмрд┐рдЯрд░реЗрдЯ;
-рдПрд╕реА - рдзреНрд╡рдирд┐ рдЪреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (1 - рдореЛрдиреЛ, 2 - рд╕реНрдЯреАрд░рд┐рдпреЛ);
-f - рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рд╛рд░реВрдк;
-b - рд╡реАрдбрд┐рдпреЛ рдмрд┐рдЯрд░реЗрдЯ (30k, 200k, 512k, 1024k);
-рдореИрдХреНрд╕реНрд░реЗрдЯ - рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдЕрдзрд┐рдХрддрдо рдмрд┐рдЯ рджрд░ (9000k);
-рдЖрд░ - рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб (рдПрдлрдкреАрдПрд╕);
-s - рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдЖрдХрд╛рд░;
-fs - рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ;
-vpre - рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рд╡рд┐рдХрд▓реНрдк (рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд) рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓;
-рдПрд╕рдПрд╕ 00:02:00 - рд╕рдордп рдлрд╝рд╛рдЗрд▓ (рд╕реНрдерд┐рддрд┐) рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдСрдлрд╕реЗрдЯред рдпрд╣рд╛рдВ: рдкрд╣рд▓реЗ 2 рдорд┐рдирдЯ (рд╕реЗрдХрдВрдб рдореЗрдВ рд╢рд┐рдлреНрдЯ) рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред рд╕реЗрдХ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдпрд╛ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдордп: hh: mm: ss [.xxx];
-vframes - рд╡реАрдбрд┐рдпреЛ рдлреНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕реАрдорд╛;
-y - рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░реЗрдВ;
-рд╕реНрдкреЗрдХреНрдЯ - рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд (4: 3, 16: 9, 1.3333);
-рдЖрдХреЛрдбреЗрдХ - рдСрдбрд┐рдпреЛ рдХреЛрдбреЗрдХ (рд▓реАрдмрдлрд╛реЕрдХ, рдПрдПрд╕реА, рд▓рд┐рдмреЗрд╡рд┐рдХреНрд▓реЗрдо);
-vcodec - рд╡реАрдбрд┐рдпреЛ рдХреЛрдбреЗрдХ (libx264);
-рдереНрд░реЗрдбреНрд╕ 0 - рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдорд╛рди: 0 - 4. 0 - рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

ffmpeg рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рд╡реЗ ffmpeg / ffpresets рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ
 root@r2d2:~/ffmpeg/ffpresets# ls -al libx264-baseline.ffpreset libx264-faster.ffpreset libx264-faster_firstpass.ffpreset libx264-fast.ffpreset libx264-fast_firstpass.ffpreset libx264-ipod320.ffpreset libx264-ipod640.ffpreset libx264-lossless_fast.ffpreset libx264-lossless_max.ffpreset libx264-lossless_medium.ffpreset libx264-lossless_slower.ffpreset libx264-lossless_slow.ffpreset libx264-lossless_ultrafast.ffpreset libx264-main.ffpreset libx264-medium.ffpreset libx264-medium_firstpass.ffpreset libx264-placebo.ffpreset libx264-placebo_firstpass.ffpreset libx264-slower.ffpreset libx264-slower_firstpass.ffpreset libx264-slow.ffpreset libx264-slow_firstpass.ffpreset libx264-superfast.ffpreset libx264-superfast_firstpass.ffpreset libx264-ultrafast.ffpreset libx264-ultrafast_firstpass.ffpreset libx264-veryfast.ffpreset libx264-veryfast_firstpass.ffpreset libx264-veryslow.ffpreset libx264-veryslow_firstpass.ffpreset 

рдФрд░ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдХреЗ рдмрд╛рдж / usr / рд▓реЛрдХрд▓ / рд╢реЗрдпрд░ / ffmpeg / рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рд╕реЗ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЖрдк рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдВрдХ рдкрд░ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓
 root@r2d2:/usr/share/ffmpeg# cat libx264-hq.ffpreset coder=1 flags=+loop cmp=+chroma partitions=+parti8x8+parti4x4+partp8x8+partb8x8 me_method=umh subq=8 me_range=16 g=250 keyint_min=25 sc_threshold=40 i_qfactor=0.71 b_strategy=2 qcomp=0.6 qmin=10 qmax=51 qdiff=4 bf=3 refs=4 directpred=3 trellis=1 flags2=+wpred+mixed_refs+dct8x8+fastpskip 

рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рд╕реЗ рд░реЛрд▓рдмреИрдХ

 root@r2d2:~# apt-get remove build-essential checkinstall git git-core libfaac-dev libfaad-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev subversion texi2html yasm zlib1g-dev libavcodec52 mencoder x264 ffmpeg 

PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реАрдбрд┐рдпреЛ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рд╡реАрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдПрдХ рдереЛрдбрд╝рд╛ redone рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
 function get_video_size($videofile) { define('MAX_VIDEO_WIDTH', 200); $vwidth = 0; $vheight = 0; $owidth = 0; $oheight = 0; $duration = array(); $bitrate = 0; $audio_bitrate = 0; $sfrequency = 0; ob_start(); passthru('ffmpeg -i "' . $videofile . '" 2>&1 | egrep -e "(Duration|Stream)"'); $ffmpeg_output = ob_get_contents(); ob_end_clean(); if (sizeof($ffmpeg_output) == 0) { return null; } foreach (explode("\n", $ffmpeg_output) as $line) { $ma = array(); // get duration and video bitrate if (strpos($line, 'Duration:') !== false) { preg_match('/(?<hours>\d+):(?<minutes>\d+):(?<seconds>\d+)\.(?<fractions>\d+)/', $line, $ma); $duration = array( 'raw' => $ma['hours'] . ':' . $ma['minutes'] . ':' . $ma['seconds'], 'hours' => intval($ma['hours']), 'minutes' => intval($ma['minutes']), 'seconds' => intval($ma['seconds']), 'fractions' => intval($ma['fractions']), 'rawSeconds' => intval($ma['hours']) * 60 * 60 + intval($ma['minutes']) * 60 + intval($ma['seconds']) + (intval($ma['fractions']) != 0 ? 1 : 0) ); preg_match('/bitrate:\s(?<bitrate>\d+)\skb\/s/', $line, $ma); $bitrate = $ma['bitrate']; } // get video info if (strpos($line, 'Video:') !== false) { preg_match('/Stream #(?:[0-9\.]+)(?:.*)\: Video: (?P<videocodec>.*) (?P<width>[0-9]*)x(?P<height>[0-9]*)/', $line, $ma); $vheight = $oheight = $ma['width']; $vwidth = $owidth = $ma['height']; } // get audio info if (strpos($line, 'Audio:') !== false) { preg_match('/,\s(?<sfrequency>\d+)\sHz,/', $line, $ma); $sfrequency = $ma['sfrequency']; preg_match('/,\s(?<bitrate>\d+)\skb\/s/', $line, $ma); $audio_bitrate = $ma['bitrate']; } } // calculate new size of the video if ($vwidth > MAX_VIDEO_WIDTH) { $coef = $vheight / $vwidth; $vwidth = MAX_VIDEO_WIDTH; $vheight = round($vwidth * $coef); } // frame size must be a multiple of 2 $vwidth = $vwidth % 2 != 0 ? $vwidth - 1 : $vwidth; $vheight = $vheight % 2 != 0 ? $vheight - 1 : $vheight; return array( 'width' => $vwidth, 'height' => $vheight, 'srcWidth' => $owidth, 'srcHeight' => $oheight, 'duration' => $duration, 'bitrate' => $bitrate, 'audioBitrate' => $audio_bitrate, 'audioSampleFrequency' => $sfrequency ); } 

рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рддреИрдпрд╛рд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ

 $ffmpeg_path = 'ffmpeg'; //   ffmpeg $in = 'ATB - Let You Go.avi'; //   $out = 'ATB - Let You Go.flv'; //   $video = get_video_size($in); $hq = 'hq'; //      $command = $ffmpeg_path . ' -threads 0 -y -i "' . $in . '" -vcodec libx264 -vpre "' . $hq . '" -b ' . $video['bitrate'] . 'k -s ' . $video['width'] . 'x' . $video['height'] . ' -acodec libfaac -ar ' . $video['audioSampleFrequency'] . ' -ab ' . $video['audioBitrate'] . 'k -ac 2 "' . $out . '"'; $conv = exec($command); 

Source: https://habr.com/ru/post/In127910/


All Articles