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.wav add. Немного изменил скрипт: убрал копипастные кавычки в определении и обработке переменной 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 Во-вторых, в скрипте точка в имени файла используется для отделения имени от расширения, т.е. допустима только между именем и расширением.Тут уж дело привычки и задач. У меня некоторые фильмы идут как обучающие, и присутствует сначала номер, а потом название. Поэтому я так и оставил. А с нижним подчеркиванием - неудобно для глаз.
Нужно умереть молодым и сделать это как можно позже.
|