Обява

Свий
Няма добавени обяви.

Кодиране на филми FFMpeq,Mencoder и т.н.

Свий
X
 
  • Филтър
  • Час
  • Покажи
Изчисти всичко
нови мнения

  • Кодиране на филми FFMpeq,Mencoder и т.н.

    Колеги, да обменим малкко опит с кодирането на филми под линукс използвайки наличните инструменти.
    LAME,MPlayer/MEncoder,FFmpeg.

    Може малко да разширим и темата - кодиране във MP4 формат за уеб.
    lib x.264, FFmpeg-PHP, PHP-cli,,FLVtool2, MP4-box.

    В първия пост искам да пусна малко информация, как да си компилираме ffmpeg с x.264 и прилежащите му библиотеки.

    /////lib x.264
    cd
    git clone git://git.videolan.org/x264.git
    cd x264
    ./configure
    make
    sudo checkinstall --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --backup=no --deldoc=yes --fstrans=no --install=yes --default
    /////Adding lavf support to x264///////
    cd ~/x264
    make distclean
    ./configure --enable-static
    make
    sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes --fstrans=no --default


    /////////Install libvpx//////////
    cd
    git clone http://git.chromium.org/webm/libvpx.git
    cd libvpx
    ./configure
    make
    sudo checkinstall --pkgname=libvpx --pkgversion="1:$(date +%Y%m%d%H%M)-git" --backup=no --deldoc=yes --fstrans=no --default


    ///////// Install LAME
    sudo apt-get remove libmp3lame-dev
    sudo apt-get install nasm
    cd
    wget http://downloads.sourceforge.net/pro...-3.98.4.tar.gz
    tar xzvf lame-3.98.4.tar.gz
    cd lame-3.98.4
    ./configure --enable-nasm --disable-shared
    make
    sudo checkinstall --pkgname=lame-ffmpeg --pkgversion="3.98.4" --backup=no --deldoc=yes --install=yes --fstrans=no --default

    ////////////Install libopencore-amr
    cd
    wget http://transact.dl.sourceforge.net/p...r-0.1.2.tar.gz
    tar xvf opencore-amr-0.1.2.tar.gz
    cd opencore-amr-0.1.2
    ./configure --disable-shared
    make
    sudo checkinstall --pkgname="libopencore-amr" --pkgversion="0.1.2" --backup=no --fstrans=no --install=yes --default

    //////////// Install libtheora
    sudo apt-get install libogg-dev
    cd
    wget http://downloads.xiph.org/releases/t...a-1.1.1.tar.gz
    tar xzvf libtheora-1.1.1.tar.gz
    cd libtheora-1.1.1
    ./configure --disable-shared
    make
    sudo checkinstall --pkgname=libtheora --pkgversion "1.1.1" --backup=no --fstrans=no --install=yes --default


    /////////Install FFmpeg////////////
    cd
    git clone --depth 1 git://source.ffmpeg.org/ffmpeg
    cd ffmpeg
    ./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libvpx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-version3 --enable-x11grab
    make
    sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(date +%Y%m%d%H%M)-git" --backup=no --deldoc=yes --fstrans=no --default
    hash x264 ffmpeg ffplay ffprobe


    Проверка на инсталацията - от команден ред.
    # ffmpeg - i ще получите нещо от сорта.

    ffmpeg version 0.7.12, Copyright (c) 2000-2011 the FFmpeg developers
    built on Apr 11 2012 07:30:33 with gcc 4.4.5
    configuration: --enable-libdc1394 --prefix=/usr --extra-cflags='-Wall -g ' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-avfilter --enable-libdirac --disable-decoder=libdirac --enable-libfreetype --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec --disable-armv5te --disable-armv6 --disable-vis
    libavutil 50. 43. 0 / 50. 43. 0
    libavcodec 52.123. 0 / 52.123. 0
    libavformat 52.111. 0 / 52.111. 0
    libavdevice 52. 5. 0 / 52. 5. 0
    libavfilter 1. 80. 0 / 1. 80. 0
    libswscale 0. 14. 1 / 0. 14. 1
    libpostproc 51. 2. 0 / 51. 2. 0


    Просто кодиране - използвайки същото качество като на сорс файла и libx264:

    ffmpeg -i input.avi -sameq -vcodec -libx264 -acodec libfaac ouput.mp4
    Последно редактирано от Daniel; 04-07-12, 09:09.

  • #2
    От: Кодиране на филми под линукс.

    Можеш ли да пуснеш последния ред с -threads 0 и да кажеш колко нишки пуска ? Откакто го добавих се родих - странното е че въпреки че кодирам в един и същ формат не винаги кодирането е многонишково явно зависи и от входящия формат , но то в ffmpeg е такава боза че оди разбери какво става.
    When I'm good, I'm very good. When I'm bad, I'm even better!

    Коментар


    • #3
      Re: Кодиране на филми под линукс.

      -threads 0
      е автоматично демек заема колкото ресурс има за да може да работят и другите приложения.
      ако искаш да е винаги многонишково ползвай -threads 4 например или колкото ядра има процесора или колко искаш да го натовариш.

      -threads 0 съм използвал при кодирането в тубето за да няма недостиг на ресурси.
      Последно редактирано от Daniel; 04-07-12, 10:58.

      Коментар


      • #4
        От: Кодиране на филми под линукс.

        Да ясно е това въпроса е че при мене не винаги работи - ако го пусна с 4 само един процес седи на 100 процента другите си седят на 0 процента cpu и си чакат явно нещо да се случи. Темата е интересна ще я следя с интерес.
        When I'm good, I'm very good. When I'm bad, I'm even better!

        Коментар


        • #5
          Re: Кодиране на филми под линукс.

          Това е интересно при мен си товари нормално и на двата сървера.

          Ок ако всичо работи добре можем да минем и на опциите -preset
          има няколко готови опции които може да се ползват по време на кодирането. Всяка опция съответно води до различно качество и различно време за кодиране.

          1. --preset <string> Use a preset to select encoding settings [medium]
          2. Overridden by user settings.
          3. - ultrafast:
          4. --no-8x8dct --aq-mode 0 --b-adapt 0
          5. --bframes 0 --no-cabac --no-deblock
          6. --no-mbtree --me dia --no-mixed-refs
          7. --partitions none --rc-lookahead 0 --ref 1
          8. --scenecut 0 --subme 0 --trellis 0
          9. --no-weightb --weightp 0
          10. - superfast:
          11. --no-mbtree --me dia --no-mixed-refs
          12. --partitions i8x8,i4x4 --rc-lookahead 0
          13. --ref 1 --subme 1 --trellis 0 --weightp 1
          14. - veryfast:
          15. --no-mixed-refs --rc-lookahead 10
          16. --ref 1 --subme 2 --trellis 0 --weightp 1
          17. - faster:
          18. --no-mixed-refs --rc-lookahead 20
          19. --ref 2 --subme 4 --weightp 1
          20. - fast:
          21. --rc-lookahead 30 --ref 2 --subme 6
          22. --weightp 1
          23. - medium:
          24. Default settings apply.
          25. - slow:
          26. --b-adapt 2 --direct auto --me umh
          27. --rc-lookahead 50 --ref 5 --subme 8
          28. - slower:
          29. --b-adapt 2 --direct auto --me umh
          30. --partitions all --rc-lookahead 60
          31. --ref 8 --subme 9 --trellis 2
          32. - veryslow:
          33. --b-adapt 2 --bframes 8 --direct auto
          34. --me umh --merange 24 --partitions all
          35. --ref 16 --subme 10 --trellis 2
          36. --rc-lookahead 60
          37. - placebo:
          38. --bframes 16 --b-adapt 2 --direct auto
          39. --slow-firstpass --no-fast-pskip
          40. --me tesa --merange 24 --partitions all
          41. --rc-lookahead 60 --ref 16 --subme 11
          42. --trellis 2


          Командата става ffmpeg -i input.avi -preset slow -vcodec libx264 -acodec libfaac ouput.mp4
          По нагоре са описани различните видове настройки.
          Последно редактирано от Daniel; 04-07-12, 11:22.

          Коментар


          • #6
            Re: Кодиране на филми под линукс.

            VGA 4:3 640 480 0.02 n/a
            SVGA 4:3 800 600 0.17 1.03
            WSVGA 17:10 1024 600 0.31 2.25
            XGA 4:3 1024 768 5.53 18.69
            XGA+ 4:3 1152 864 0.87 1.55
            WXGA 16:9 1280 720 1.51 1.54
            WXGA 5:3 1280 768 n/a 1.54
            WXGA 16:10 1280 800 4.25 12.97
            SXGA– (UVGA) 4:3 1280 960 0.72 0.72
            SXGA 5:4 1280 1024 10.66 7.49
            HD ~16:9 1360 768 2.36 2.28
            HD ~16:9 1366 768 17.19 19.14
            SXGA+ 4:3 1400 1050 0.18 n/a
            WXGA+ 16:10 1440 900 7.60 6.61
            HD+ 16:9 1600 900 6.82 3.82
            UXGA 4:3 1600 1200 0.53 n/a
            WSXGA+ 16:10 1680 1050 10.26 3.66
            FHD 16:9 1920 1080 25.04 5.09
            WUXGA 16:10 1920 1200 3.65 1.11
            QWXGA 16:9 2048 1152 0.13 n/a
            WQHD 16:9 2560 1440 0.72 0.36
            WQXGA 16:10 2560 1600 0.19 n/a
            3:4 768 1024 n/a 1.93
            16:9 1093 614 n/a 0.63
            ~16:9 1311 737 n/a 0.35
            Other 1.29 7.25
            Това са най-използваните резолюции от началото на 2012 година.
            Ето малко терминология.
            Display Aspect Ratio ( DAR) размера на дисплея на който се гледа видеото
            Pixel Aspect Ratio ( PAR ) размера на пикселите (не винаги са квадратни)
            Source Aspect Ratio ( SAR ) Размера на самото видео (не винаги е еднакъв с ( DAR))

            Най използваните ( DAR)
            1.33:1 = ( 4:3 )
            1.78:1 = ( 16:9 )
            1.85:1 = ( 37:20 )
            2.20:1 = ( 11:5 )
            2.35:1 = ( 47:20 )

            От толкокова много четене накрая ми стана ясно, че и тук няма никакъв стандарт или всеки си прави каквото си иска

            Преоразмеряването с ffmpeg става с видео филтъра scale, командата е -vf scale="W:H" където W - ширина на изходното видео, H - височина на изходното видео. Особенното е че и двата параметъра трябва да се делят на 2.
            Ако ще преоразмеряваме видеото е добре да си сметнем правилно изходния формат.
            Ето формулките по които се смята изходната резолюция.

            SAR * PAR = DAR
            PAR = DAR/SAR

            за да не се налага да смятате всяко видео има малка хитринка използвайки -vf scale="W:H". Независимо от входящото видео можете да използвате -vf scale="720:trunc(ow/a/2)*2" където 720- е изходната ширина на видеото, trunc- закръгляване до точката,ow - изходната ширина, разделена на а - което е равно на W/H на входящото видео/2 и резултата умножен по 2. По този начин атоматично се пресмята височината на изходното видео и тя винаги е делима на 2, не трябва да забравяме, че и ширината трябва да се дели на 2 без остатък, естствено 720 е желаната от вас резолюция на изходното видео.

            ffmpeg -i Hubble720p.mov -acodec libfaac -aq 100 -vcodec libx264 -preset slow -vf scale="720:trunc(ow/a/2)*2" -threads 4 Hubble_swol.mp4
            изходното видео ще бъде с ширина 720 по колкото е нужно, без да се нарушава формата му.

            П.С. зеленото е кодирането на аудиото което не разглеждаме за момента
            Последно редактирано от Daniel; 05-07-12, 07:42.

            Коментар


            • #7
              Re: Кодиране на филми под линукс.

              ffmpeg -i Hubble720p.mov -acodec libfaac -aq 100 -vcodec libx264 -preset slow -vf scale="720:trunc(ow/a/2)*2" -bufsize 1200k -maxrate 900k -r 23.976
              -threads 4 Hubble.mp4

              -acodec libfaac -aq 100 - кодиране на аудио с libfaac качество 100%, можете да изберете и брой канали с опцията -ac 2 например.
              -maxrate 900k - максимален битрейт на видеото - ако например кодирате 1080p видео с -maxrate 900k ще стане на четни квадрати няма да му достига битрейт за цялата информация.
              -bufsize 1200k - размер на буфера, винаги трябва да е по голям от -maxrate 900k.
              -r 23.976 - кадри в секунда.
              -threads 0 - нишки, 0 е автоматично взима колкото е възможно оставяйки ресурси и за другите приловения, настройва се в зависимост от процесора/ите.

              Коментар


              • #8
                Re: Кодиране на филми FFMpeq,Mencoder и т.н.

                Ще дам един много простичък пример за уеб приложение - написах си го набързо за да мога да тествам различни опции при кодиране.
                нужно ни е:
                Uber Uploader - http://uber-uploader.sourceforge.net/ или какъвто ви харесва.
                php,php-cli, ffmpeg - естествено и уеб сървер.

                Инсталирате си ъплоудъра и го конфигурирате, след това във файла uber_finished.php - взимаме файла и го пращаме за енкодинг, използваме php-cli към exec("binary > /dev/null &") за да не задържаме php процеси по време на енкодинга.

                PHP Код:
                 $config['base_dir'] = $config['base_dir'] = realpath('.');
                    
                $config['path_php']= "/usr/bin/php";
                for(
                $i 0$i count($_FILE_DATA); $i++){
                    
                $file_name $_FILE_DATA[$i]->getFileInfo('name');
                    
                $php_cgi = (strpos(php_sapi_name(), 'cgi')) ? 'env -i ' NULL;
                    
                $cmd $php_cgi.$config['path_php'].' '.$config['base_dir'].'/video_conversation.php '.$file_name;
                    
                exec($cmd'>/dev/null &');
                    } 
                съдържанието на video_conversation.php
                PHP Код:
                $config['base_dir'] = dirname dirname __FILE__ ) );
                include(
                'include/functions.php');
                $file_name $_SERVER['argv'][1]; 

                $ext explode("."$file_name);  
                $ext array_pop($ext);
                $mp4 str_replace($ext,"mp4",$file_name);

                $mflvdo_dir "/var/www/video_upload/media/converted";
                $file '/var/www/video_upload/media/'.$file_name;
                $config['path_ffmpeg']= "/usr/bin/ffmpeg";
                $conv $config['path_ffmpeg'].' -i '.$file.' -acodec libfaac -aq 100 -ac 2 -vcodec libx264 -preset slow -crf 25 -vf  "scale=trunc(oh*a/2)*2:720,crop=min(iw\,ih*(16/9)):ow/(16/9)" -bufsize 2500k -maxrate 1200k  -threads 0 -r 23.976 -y '.$mflvdo_dir.'/'.$mp4;
                if(
                exec($conv.' 2>&1'$enc_output)){
                log_files('/var/www/video_upload/media/''/video_' .$file_name'.log'implode("\n"$enc_output));

                съдържанието на include/functions.php - това си го оставих за дописване, но поради липса на време си остана само за създаване на лог файла.
                PHP Код:
                ///Log file creation///
                function log_files($path$str) {
                    
                $file_dir dirname($path);
                    if (!
                is_dir($file_dir) or !is_writable($file_dir)) return false;
                    
                $wm 'w';
                    if(
                is_file($path) && is_writable($path)) $wm 'a';
                    if(!
                $handle fopen($path$wm)) return false;
                    if(
                fwrite($handle$str"\n") == FALSE) return false;
                    @
                fclose($handle);

                п.с. Понеже ъплоудера позвалява качване на някокло файла на веднъж, скрипта ги взима всичките и ги праща едновременно за енкодинг.
                PHP Код:
                for($i 0$i count($_FILE_DATA); $i++){ 
                Последно редактирано от Daniel; 13-07-12, 07:26.

                Коментар


                • #9
                  Re: Кодиране на филми FFMpeq,Mencoder и т.н.

                  С тези скриптове първото 'script kiddie' ще ти затрие сървъра....

                  Вариант 1 ако не ползваш escapeshellarg: $file_name = "file.avi `rm -rf /`"
                  Вариант 2 ако не ползваш escapeshellcmd: $file_name = "file.avi | rm -rf / |"

                  PHP Код:
                  $config['base_dir'] = realpath('.');
                      
                  $config['path_php']= `which php`; // за преносимост
                  for($i 0$i count($_FILE_DATA); $i++){
                      
                  $file_name $_FILE_DATA[$i]->getFileInfo('name');
                      
                  $php_cgi = (strpos(php_sapi_name(), 'cgi')) ? 'env -i ' NULL;
                      
                  $cmd escapeshellcmd($php_cgi.$config['path_php'].' '.$config['base_dir'].'/video_conversation.php '.escapeshellarg($file_name));
                      
                  exec($cmd'>/dev/null &');
                      } 
                  Последно редактирано от Zarhi; 13-07-12, 09:03.
                  Jeep Grand Cherokee 2.7 CRD
                  Suzuki Grand Vitara 1.6
                  LZ1ZPM

                  Коментар


                  • #10
                    Re: Кодиране на филми FFMpeq,Mencoder и т.н.

                    Да но за тестове на локален сървер - няма никакво значение.
                    Както се вижда - скрипта е написан набързо.
                    Целата на приложението е бърз тест на енкодинга и анализиране на резултата.

                    Вариант 1 ако не ползваш escapeshellarg: $file_name = "file.avi `rm -rf /`"
                    Вариант 2 ако не ползваш escapeshellcmd: $file_name = "file.avi | rm -rf / |"
                    това е много полезно - добавих го при мен ей така да го има
                    Мерси

                    п.с. не съветвам никой да го използва в реални условия.
                    Последно редактирано от Daniel; 13-07-12, 09:42.

                    Коментар


                    • #11
                      Re: Кодиране на филми FFMpeq,Mencoder и т.н.

                      Аз бих си направил конверсията във вид на 'демон', така няма да се налага да викаш 'exec' и да се отваря дупка в сигурноста.

                      Ъплоад скрипта мести всичко качено примерно в '/tmp/upload'

                      Демона:

                      PHP Код:
                      $upload_path '/tmp/upload';
                      $converted_path '/tmp/converted';
                      $mp4_path '/tmp/mp4';

                      if(!
                      is_dir($upload_path)) 
                          if(!
                      mkdir($upload_path))
                              die(
                      "upload dir cannot be created");

                      if(!
                      is_dir($converted_path)) 
                          if(!
                      mkdir($converted_path))
                              die(
                      "converted dir cannot be created");

                      if(!
                      is_dir($mp4_path)) 
                          if(!
                      mkdir($mp4_path))
                              die(
                      "mp4 dir cannot be created");

                      while(
                      1){
                          if (
                      $dir opendir($upload_path) ) {
                              while((
                      $file readdir($dir))!==false) {
                                   if(
                      $file=='.' || $file == '..')
                                        continue;
                                   
                      $in_file $upload_path '/' $file;
                                   
                      $out_file $mp4_path '/' $file '.mp4';

                                   
                      // викаш ffmpeg с $in_file и $out_file

                                   // триеш входния файл: unlink($in_file);
                                   // или го местиш: rename($in_file, $converted_dir . '/' . $file);  
                              
                      }
                          }
                          
                      sleep (5); // проверяваш за нови файлове на всеки 5 секунди

                      Предимствата:
                      1. Не викаш 'exec', няма security дупка.
                      2. Конвертираш файловете един по един, няма как да ти засилят 100-тина малки файлове и да викнеш 100 пъти php+ffmpeg, което ще изяде цялата налична ram и swap. Можеш да съобразиш 'ffmpeg -threads' така, че да остава ядро/ядра за web сървъра.
                      3. Конветиращия скрипт може да работи с произволен user/group за да има достъп до всички ъплоадни файлове ( ако се ползва suPHP или mpm-itk примерно ).

                      Недостатъка на конкретния скрипт: ако ъплоаднеш файл с име което вече съществува ще презапишеш предишния.

                      Демона може да се пусне по два начина:
                      1. php -q convert.php &
                      2. screen php -q convert.php
                      Jeep Grand Cherokee 2.7 CRD
                      Suzuki Grand Vitara 1.6
                      LZ1ZPM

                      Коментар


                      • #12
                        Re: Кодиране на филми FFMpeq,Mencoder и т.н.

                        Да идеята е добра, има и много други начини за реализация,

                        1. записваш имената и пътя на качените файлове в някаква база с някакъв флаг, че чакат за кодиране.
                        2. пишеш си един шел скрип който изпълняваш на 5 минути например.
                        Така изнасяш цялата обработка на видеото извън системата. Няма как да има презапис на файловете.

                        Още по добра идея е
                        Пише се един малък енкодинг сървер на С който прави всички анализи и обработки - подаваш му файла на еди кой си порт.
                        Сървера си го енкодира и го слага където трябва сменя му фалага в ДБ и т.н.
                        Това го реализирахме с нашия сисадмин nikov - но поради липса на програмисти си остана само проект
                        По този начин можеш да изнесеш кодирането на друга машина/и което дава възможност за развитие.

                        -threads 0 - това е направено и работи добре, остават ресурси за всичко.
                        естествено ако качиш 20 файла имаш 20 ffmpega - но единствения недостатък е, че ще се кодират по бавно.

                        п.с. И при твоя вариант няма да има проблем с презапис на файловете, ъплоудера ги преименува автоматично ако има такъв качен в директорията и не е изтрит. А и винаги можеш да им направиш уникални имена.
                        Последно редактирано от Daniel; 13-07-12, 10:31.

                        Коментар


                        • #13
                          Re: Кодиране на филми FFMpeq,Mencoder и т.н.

                          $ ps auxm | grep ffm
                          zarhi 15050 97.4 0.6 194716 50936 pts/0 - 11:27 0:28 ffmpeg -i ....

                          т.е. един ffmpeg пуснат с '-i file.avi file.mp4' заема близо 200Mb виртуална памет ( шерната между всички ffmpeg ) и 50Mb за конкретния енкодинг. 20 ffmpeg-а * 50Mb = 1Gb ram.
                          Отделно купчина 'ffmpeg -threads 0' водят до страховито количество 'context switching' в кернела и времето няма да е 20 * 'всеки ffmpeg', а значително повече.
                          Освен това на хардовете ще им се завие свят да seek-ват между 40 файла, което ще забави нещата още повече.

                          Линейното енкодиране (файл по файл/на сървър) с -threads 0 ще значително по-бързо.

                          А писането на C wrapper е излишно усложняване. Има предостатъчно shared файлови системи: nfs, glusterfs, GFS/GFS2 ако машините са в клъстер.

                          Това е малко offtopic за темата, за което се извинявам
                          Jeep Grand Cherokee 2.7 CRD
                          Suzuki Grand Vitara 1.6
                          LZ1ZPM

                          Коментар


                          • #14
                            Re: Кодиране на филми FFMpeq,Mencoder и т.н.

                            Линейното енкодиране (файл по файл/на сървър) с -threads 0 ще значително по-бързо.
                            Това е най добрата идея и при натоварени системи ще работи най добре.

                            Сигурен съм, че при нужда и наличен ресурс от специалисти може да се напише супер система.

                            C wrapper е излишно усложняване
                            Тук не мога да се съглася при положение, че е много по лесно да се направи анализ на каченото от потребителя видео, да се направят нужните калкулации за кодиране, да се добави инфото във видеофайла, да се генерират лог файлове, да се пускат определен брой процеси и т.н. Сърверчето се грижи за всичко това.

                            Не опира само до ffmpeg - ползват се и mplayer,mencoder,mp4box и т.н

                            Но определено линеарно енкодиране на файл по файл без да се използва exec е най добрия вариант за реално работеща система.
                            Последно редактирано от Daniel; 13-07-12, 11:02.

                            Коментар


                            • #15
                              Re: Кодиране на филми FFMpeq,Mencoder и т.н.

                              без да се използва exec но аз пак ще го ползвам
                              добавяме във functions.php

                              PHP Код:
                              /// gen thumbnails
                              function gen_thumb_ffmpeg($video$vid$thumbnr) {
                                  
                              $pw 1093;
                                  
                              $ph 614;
                                  
                              $mtmb_dir="/var/www/video_upload/media/converted";
                                  
                              $rnd=substr(md5($vid),13,7);
                                  
                              $mdur 20;
                                  
                                  
                              //player thumb
                                  
                              $config['path_ffmpeg']= '/usr/bin/ffmpeg';
                                  
                              $cmd1 $config['path_ffmpeg'].' -i '.$video.' -s '.$pw.'x'.$ph.' -ss '.$mdur.' -an -r 1 -vframes '.$thumbnr.' -y '.$mtmb_dir.'/pl%d_'.$vid.$rnd.'.jpg';
                                  
                              exec($cmd1.' 2>&1'$enc_output1);
                                  
                              log_files('/var/www/video_upload/media/''/video_' .$vid'.log'implode("\n"$enc_output1));
                                  if ( 
                              file_exists ($mtmb_dir.'/pl1_'.$vid.$rnd.'.jpg')) {
                                  
                              rename ($mtmb_dir.'/pl1_'.$vid.$rnd.'.jpg'$mtmb_dir.'/pl_'.$vid.$rnd.'.jpg');
                                  }

                              и във video_conversation.php сед реда
                              PHP Код:
                              log_files('/var/www/video_upload/media/''/video_' .$file_name'.log'implode("\n"$enc_output)); 
                              добавяме
                              PHP Код:
                              gen_thumb_ffmpeg($file$file_name3); 
                              По този начин си взимаме няколко фрейма които евентуално да ползваме за плеъра, в случая 3.

                              Коментар

                              Активност за темата

                              Свий

                              В момента има 1 потребители онлайн. 0 потребители и 1 гости.

                              Най-много потребители онлайн 8,787 в 16:37 на 21-06-23.

                              Зареждам...
                              X