| arcanis | 
             | 
    
            
 
    
                Темы:
                
                    31
                
             
            
                Сообщения:
                
                    1496
                
             
            
                Участник с: 09 сентября 2012
             
            
         | 
        
            запилить аргументы, запилить парсинг передаваемых аргументов, папку можно удалить, про пробелы уже сказали (про мц не знаю, как там плагины делаются) ЗЫ а разве этот скрипт корректно воспримет sh? А то эт у нас sh - симлинк на bash. Например, строчки типа таких: $(dirname "$IN")  | 
    
| Natrio | 
             | 
    
| 
            
 
                Темы:
                
                    47
                
             
            
                Сообщения:
                
                    4763
                
             
            
                Участник с: 08 января 2011
             
            
         | 
        
            arcanisВерно, но будучи запущенным как sh, баш ограничивает свою функциональность, и некоторые специфически башевские возможности отключаются.  | 
    
| zalexi | 
             | 
    
            
 
    
                Темы:
                
                    17
                
             
            
                Сообщения:
                
                    185
                
             
            
                Участник с: 16 марта 2012
             
            
         | 
        
            Тема не про знания баша и т.д. Если есть РЕАЛЬНЫЕ варианты решения задачи (как, например, у Aivar) - выкладывайте. Во всех остальных случаях - пожалуйте в профильные ветки. 
                        Нужно умереть молодым и сделать это как можно позже.
                     
                
            
            
         | 
    
| Aivar | 
             | 
    
| 
            
 
                Темы:
                
                    4
                
             
            
                Сообщения:
                
                    6897
                
             
            
                Участник с: 17 февраля 2011
             
            
         | 
        
            nafanjaВсе верно, но, как обычно бывает: запостил, выключил комп и уж опосля приходит хорошая мысля. zalexiИ об этом тоже. Редко сталкиваюсь с необходимостью что-то сваять, но ваш скрипт в моем видении получился приблизительно таким: #!/bin/bash
in=$1
if [ ! -f $in ]; then echo No input parametr ; exit -1
fi
ffmpeg -i "$in" -vn -y in.wav
sox in.wav fast.wav tempo 1.6
name=`echo $in | awk -F . '{ print $1 }'`
ffmpeg -r 40 -i "$in" -i fast.wav -map 0:0 -map 1:0 -f mp4 -vcodec h264 -s 852x480 -r 25 -vb 500k -strict -2 -acodec aac -ab 128k -y "$name".mp4
rm in.wav fast.wavadd. Немного изменил скрипт: убрал копипастные кавычки в определении и обработке переменной in.  | 
    
| zalexi | 
             | 
    
            
 
    
                Темы:
                
                    17
                
             
            
                Сообщения:
                
                    185
                
             
            
                Участник с: 16 марта 2012
             
            
         | 
        
            Что-то не то получилось: - перезаписало оригинальный файл без предупреждения; - видео - статичная картинка, звук - ускоренный, как и надо было. вот вывод: $ sh avi2mkv_1.6-2.sh 002\ искажение\ истории.mp4
ffmpeg version 2.0.1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Sep 19 2013 23:56:17 with gcc 4.8.1 (GCC) 20130725 (prerelease)
  configuration: --enable-shared --disable-debug --disable-static --prefix=/usr --disable-asm --enable-avresample --enable-bzlib --enable-dxva2 --enable-fontconfig --enable-gnutls --enable-gpl --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libcdio --enable-libcelt --enable-libdc1394 --enable-libfaac --enable-libfdk-aac --enable-libfreetype --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-nonfree --enable-openal --enable-openssl --enable-postproc --enable-runtime-cpudetect --enable-vaapi --enable-vda --enable-vdpau --enable-version3 --enable-x11grab --enable-zlib
  libavutil      52. 38.100 / 52. 38.100
  libavcodec     55. 18.102 / 55. 18.102
  libavformat    55. 12.100 / 55. 12.100
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 79.101 /  3. 79.101
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '002 искажение истории.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-03-02 17:44:19
  Duration: 00:01:41.68, start: 0.000000, bitrate: 1503 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1308 kb/s, 25 fps, 25 tbr, 50 tbn, 50 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 192 kb/s
    Metadata:
      creation_time   : 2013-03-02 17:44:20
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Output #0, wav, to 'in.wav':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    ISFT            : Lavf55.12.100
    Stream #0:0(und): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
    Metadata:
      creation_time   : 2013-03-02 17:44:20
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Stream mapping:
  Stream #0:1 -> #0:0 (aac -> pcm_s16le)
Press [q] to stop, [?] for help
size=   17516kB time=00:01:41.68 bitrate=1411.2kbits/s
video:0kB audio:17516kB subtitle:0 global headers:0kB muxing overhead 0.000446%
ffmpeg version 2.0.1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Sep 19 2013 23:56:17 with gcc 4.8.1 (GCC) 20130725 (prerelease)
  configuration: --enable-shared --disable-debug --disable-static --prefix=/usr --disable-asm --enable-avresample --enable-bzlib --enable-dxva2 --enable-fontconfig --enable-gnutls --enable-gpl --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libcdio --enable-libcelt --enable-libdc1394 --enable-libfaac --enable-libfdk-aac --enable-libfreetype --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-nonfree --enable-openal --enable-openssl --enable-postproc --enable-runtime-cpudetect --enable-vaapi --enable-vda --enable-vdpau --enable-version3 --enable-x11grab --enable-zlib
  libavutil      52. 38.100 / 52. 38.100
  libavcodec     55. 18.102 / 55. 18.102
  libavformat    55. 12.100 / 55. 12.100
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 79.101 /  3. 79.101
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '002 искажение истории.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-03-02 17:44:19
  Duration: 00:01:41.68, start: 0.000000, bitrate: 1503 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1308 kb/s, 25 fps, 25 tbr, 50 tbn, 50 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 192 kb/s
    Metadata:
      creation_time   : 2013-03-02 17:44:20
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Guessed Channel Layout for  Input Stream #1.0 : stereo
Input #1, wav, from 'fast.wav':
  Duration: 00:01:03.55, bitrate: 1411 kb/s
    Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
[libx264 @ 0x838a0e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64 SlowShuffle
[libx264 @ 0x838a0e0] profile High, level 3.0
[libx264 @ 0x838a0e0] 264 - core 133 r2339 585324f - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '002 искажение истории.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    encoder         : Lavf55.12.100
    Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 852x480, q=-1--1, 500 kb/s, 12800 tbn, 25 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
      handler_name    : VideoHandler
    Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #1:0 -> #0:1 (pcm_s16le -> aac)
Press [q] to stop, [?] for help
frame=   11 fps=1.9 q=-1.0 Lsize=    1025kB time=00:01:03.55 bitrate= 132.2kbits/s dup=0 drop=2
video:18kB audio:995kB subtitle:0 global headers:0kB muxing overhead 1.206394%
[libx264 @ 0x838a0e0] frame I:1     Avg QP:29.43  size: 15983
[libx264 @ 0x838a0e0] frame P:4     Avg QP:33.82  size:   299
[libx264 @ 0x838a0e0] frame B:6     Avg QP:31.93  size:   140
[libx264 @ 0x838a0e0] consecutive B-frames: 27.3%  0.0%  0.0% 72.7%
[libx264 @ 0x838a0e0] mb I  I16..4: 30.1% 47.4% 22.5%
[libx264 @ 0x838a0e0] mb P  I16..4:  0.2%  0.1%  0.0%  P16..4:  8.0%  0.6%  0.4%  0.0%  0.0%    skip:90.7%
[libx264 @ 0x838a0e0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  7.9%  0.0%  0.0%  direct: 0.0%  skip:92.0%  L0:32.4% L1:67.5% BI: 0.1%
[libx264 @ 0x838a0e0] final ratefactor: 27.81
[libx264 @ 0x838a0e0] 8x8 transform intra:47.2% inter:90.0%
[libx264 @ 0x838a0e0] coded y,uvDC,uvAC intra: 48.0% 51.8% 19.3% inter: 0.2% 0.4% 0.0%
[libx264 @ 0x838a0e0] i16 v,h,dc,p: 49% 23% 17% 11%
[libx264 @ 0x838a0e0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 27% 18%  5%  4%  5%  6%  5%  7%
[libx264 @ 0x838a0e0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 26% 13%  6%  6%  7%  7%  5%  6%
[libx264 @ 0x838a0e0] i8c dc,h,v,p: 53% 25% 18%  4%
[libx264 @ 0x838a0e0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x838a0e0] ref P L0: 90.9%  3.0%  4.3%  1.8%
[libx264 @ 0x838a0e0] ref B L0: 94.0%  2.8%  3.2%
[libx264 @ 0x838a0e0] ref B L1: 98.3%  1.7%
[libx264 @ 0x838a0e0] kb/s:327.65
                        Нужно умереть молодым и сделать это как можно позже.
                     
                
            
            
         | 
    
| Aivar | 
             | 
    
| 
            
 
                Темы:
                
                    4
                
             
            
                Сообщения:
                
                    6897
                
             
            
                Участник с: 17 февраля 2011
             
            
         | 
        
            Так. Для начала вызов скрипта должен выглядеть так:sh avi2mkv_1.6-2.sh "002 искажение истории.mp4" zalexiДык, у вас же входное видео было *flv, и перезаписало (отсюда и статичная картинка), потому что в данном случае совпали расширения, а без предупреждения, потому что ключик был -y. Кстати, вот вам и вторая выгода от сохранения в другой директории. Перед тем как выложить скрипт, естественно, проверял и неоднократно. Попробуйте еще раз с корректным параметром на вводе. Ежели что не так - жалуйтесь. PS. Чуть подправил скрипт (см. выше). Функционал не пострадал.  | 
    
| zalexi | 
             | 
    
            
 
    
                Темы:
                
                    17
                
             
            
                Сообщения:
                
                    185
                
             
            
                Участник с: 16 марта 2012
             
            
         | 
        
            Aivar, благодарю за помощь! Дело в том, что расширение может быть любым (flv, mp4, avi), flv был выбран первым наугад, как пример. Название скрипта - рабочее :) (чтобы не запутаться) Попробовал mp4 (c youtube скачиваю в отличном качестве ролики, потом просматриваю на телефоне): $ sh avi2mkv_1.6-2.sh "008.\ Ответ\ по\ теме.\ Язычники.mp4" avi2mkv_1.6-2.sh: line 3: [: слишком много аргументов ffmpeg version 2.0.1 Copyright (c) 2000-2013 the FFmpeg developers built on Sep 19 2013 23:56:17 with gcc 4.8.1 (GCC) 20130725 (prerelease) configuration: --enable-shared --disable-debug --disable-static --prefix=/usr --disable-asm --enable-avresample --enable-bzlib --enable-dxva2 --enable-fontconfig --enable-gnutls --enable-gpl --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libcdio --enable-libcelt --enable-libdc1394 --enable-libfaac --enable-libfdk-aac --enable-libfreetype --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-nonfree --enable-openal --enable-openssl --enable-postproc --enable-runtime-cpudetect --enable-vaapi --enable-vda --enable-vdpau --enable-version3 --enable-x11grab --enable-zlib libavutil 52. 38.100 / 52. 38.100 libavcodec 55. 18.102 / 55. 18.102 libavformat 55. 12.100 / 55. 12.100 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 79.101 / 3. 79.101 libavresample 1. 1. 0 / 1. 1. 0 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 008.\ Ответ\ по\ теме.\ Язычники.mp4: No such file or directory sox FAIL formats: can't open input file `in.wav': No such file or directory ffmpeg version 2.0.1 Copyright (c) 2000-2013 the FFmpeg developers built on Sep 19 2013 23:56:17 with gcc 4.8.1 (GCC) 20130725 (prerelease) configuration: --enable-shared --disable-debug --disable-static --prefix=/usr --disable-asm --enable-avresample --enable-bzlib --enable-dxva2 --enable-fontconfig --enable-gnutls --enable-gpl --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libcdio --enable-libcelt --enable-libdc1394 --enable-libfaac --enable-libfdk-aac --enable-libfreetype --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-nonfree --enable-openal --enable-openssl --enable-postproc --enable-runtime-cpudetect --enable-vaapi --enable-vda --enable-vdpau --enable-version3 --enable-x11grab --enable-zlib libavutil 52. 38.100 / 52. 38.100 libavcodec 55. 18.102 / 55. 18.102 libavformat 55. 12.100 / 55. 12.100 libavdevice 55. 3.100 / 55. 3.100 libavfilter 3. 79.101 / 3. 79.101 libavresample 1. 1. 0 / 1. 1. 0 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 008.\ Ответ\ по\ теме.\ Язычники.mp4: No such file or directory rm: невозможно удалить «in.wav»: Нет такого файла или каталога rm: невозможно удалить «fast.wav»: Нет такого файла или каталога 
                        Нужно умереть молодым и сделать это как можно позже.
                     
                
            
            
         | 
    
| Aivar | 
             | 
    
| 
            
 
                Темы:
                
                    4
                
             
            
                Сообщения:
                
                    6897
                
             
            
                Участник с: 17 февраля 2011
             
            
         | 
        
            Во-первых, в кавычках пробелы экранировать уже не нужно, т.е. обратный слеш убирайте. Во-вторых, в скрипте точка в имени файла используется для отделения имени от расширения, т.е. допустима только между именем и расширением. Вообще, точка в имени файла, имхо, - дурной тон. Уж лучше пробелы. А_еще_лучше_-_подчеркивание. Об этом вам любой программист скажет. ) add. Для наглядности добавлю пример как должна выглядеть команда: $ sh avi2mkv_1.6-2.sh "008 Ответ по теме Язычники.mp4"  | 
    
| Aivar | 
             | 
    
| 
            
 
                Темы:
                
                    4
                
             
            
                Сообщения:
                
                    6897
                
             
            
                Участник с: 17 февраля 2011
             
            
         | 
        И, кстати, чтобы не было накладок с именами файлов, можете изменить окончание строки ffmpeg на "$name".MP4 и ключ перезаписи без вопроса убрать. | 
| zalexi | 
             | 
    
            
 
    
                Темы:
                
                    17
                
             
            
                Сообщения:
                
                    185
                
             
            
                Участник с: 16 марта 2012
             
            
         | 
        
            Aivar Почти получилось то, что было нужно! Осталось немного подправить и можно выкладывать как пункт контекстного меню МС. Вот оригинал, тот что у меня прописан: 9       Видео для Android
        set %t
        if [ "%d" = "%D" ]; then
        echo "Входная и выходная папки должны быть разными"
        exit 1
        fi
        while [ -n "$1" ]; do
        ext=`basename "$1"`
        ext="${ext##*.}"
        newname=`basename "$1" .$ext`.mp4
        ffmpeg -y -i %d/"$1" -f mp4 -vcodec h264 -s wvga -r 25 -b 500k -strict -2 -acodec aac -ac 2 -ar 44100 -ab 128k %D/"$newname"
        shift
        done#!/bin/bash
in=$1
if [ ! -f $in ]; then echo No input parametr ; exit -1
fi
ffmpeg -i "$in" -vn -y in.wav
sox in.wav fast.wav tempo 1.6
name=`echo $in | awk -F . '{ print $1 }'`
ffmpeg -r 40 -i "$in" -i fast.wav -map 0:0 -map 1:0 -f mp4 -vcodec h264 -s 852x480 -r 25 -vb 500k -strict -2 -acodec aac -ab 128k -y "$name".mp4
rm in.wav fast.wavВо-первых, в кавычках пробелы экранировать уже не нужно, т.е. обратный слеш убирайте.Он автоматом ставится в МС при Alt (Ctrl)+Enter Во-вторых, в скрипте точка в имени файла используется для отделения имени от расширения, т.е. допустима только между именем и расширением.Тут уж дело привычки и задач. У меня некоторые фильмы идут как обучающие, и присутствует сначала номер, а потом название. Поэтому я так и оставил. А с нижним подчеркиванием - неудобно для глаз. 
                        Нужно умереть молодым и сделать это как можно позже.
                     
                
            
            
         |