Текущее время: 21 июн 2025, 07:24




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Cowon d2+/d2 +linux ubuntu 

Может быть JetAudio+wine
Да. 40%  40%  [ 4 ]
Нет. 50%  50%  [ 5 ]
Не работает Directx9.0. 10%  10%  [ 1 ]
Всего голосов : 10

Cowon d2+/d2 +linux ubuntu 
Автор Сообщение
Аватара пользователя

Зарегистрирован: 28 ноя 2009, 12:01
Сообщения: 21
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: D2+2.11
Наушники: iaudio
Сообщение Cowon d2+/d2 +linux ubuntu
Кто чем конвертирует и в какой формат.Подскажите.

_________________
Интернет - это инструмент для мозга. Вроде молотка. Одни люди, если дать им молоток, могут с помощью него сделать что-нибудь позитивное, а другие начинают бегать по улицам и бить по головам мирных граждан.[size=50][size=200]


08 май 2010, 11:33
Профиль
Модератор
Аватара пользователя

Зарегистрирован: 01 фев 2009, 11:43
Сообщения: 4508
Откуда: fairyland
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: FiiO X5
Наушники: UM Merlin
Сообщение Re: Cowon d2+/d2 +linux ubuntu
Ну если wine то вообще вариантов масса... xDDD

_________________
Лучше иметь храброе сердце и страдать от зла других, чем бояться того, что может случиться...
Хорошие художники копируют - великие художники воруют...


08 май 2010, 12:14
Профиль
Аватара пользователя

Зарегистрирован: 28 ноя 2009, 12:01
Сообщения: 21
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: D2+2.11
Наушники: iaudio
Сообщение Re: Cowon d2+/d2 +linux ubuntu
директ икс не пашет(((

_________________
Интернет - это инструмент для мозга. Вроде молотка. Одни люди, если дать им молоток, могут с помощью него сделать что-нибудь позитивное, а другие начинают бегать по улицам и бить по головам мирных граждан.[size=50][size=200]


08 май 2010, 12:15
Профиль
Аватара пользователя

Зарегистрирован: 03 фев 2009, 18:12
Сообщения: 227
Откуда: Минск
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: Cowon D2 | FW: 2.59
Наушники: Sennheiser CX300 II
Сообщение Re: Cowon d2+/d2 +linux ubuntu
А скинуть его либы из винды в вайн не пробовали?

_________________
COWON D2 8Gb black | FW:D2 2.59
Sennheiser CX300 II, Sennheiser eH250


08 май 2010, 12:35
Профиль
Модератор
Аватара пользователя

Зарегистрирован: 01 фев 2009, 11:43
Сообщения: 4508
Откуда: fairyland
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: FiiO X5
Наушники: UM Merlin
Сообщение Re: Cowon d2+/d2 +linux ubuntu
А поставить директ для линукса не пробывали?

_________________
Лучше иметь храброе сердце и страдать от зла других, чем бояться того, что может случиться...
Хорошие художники копируют - великие художники воруют...


08 май 2010, 12:52
Профиль
Аватара пользователя

Зарегистрирован: 28 ноя 2009, 12:01
Сообщения: 21
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: D2+2.11
Наушники: iaudio
Сообщение Re: Cowon d2+/d2 +linux ubuntu
пробывали игры пашут а транскодеры не пашут

_________________
Интернет - это инструмент для мозга. Вроде молотка. Одни люди, если дать им молоток, могут с помощью него сделать что-нибудь позитивное, а другие начинают бегать по улицам и бить по головам мирных граждан.[size=50][size=200]


10 май 2010, 12:29
Профиль
Аватара пользователя

Зарегистрирован: 02 фев 2009, 01:29
Сообщения: 1116
Откуда: Moscow 17
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: cowon X7, FIIO X3
Наушники: PSB Speakers M4U2
Сообщение Re: Cowon d2+/d2 +linux ubuntu
а зачем вам джетаудио? там же можно поставить какой нить кодер и просто скодировать в 320х240 без b-frame и по идее должно читаться, зачем извращаться с wine?

_________________
Eat paint!
PSB Speakers M4U2
cowon x7 - чтоб его...


10 май 2010, 12:37
Профиль
Модератор
Аватара пользователя

Зарегистрирован: 01 фев 2009, 11:43
Сообщения: 4508
Откуда: fairyland
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: FiiO X5
Наушники: UM Merlin
Сообщение Re: Cowon d2+/d2 +linux ubuntu
Вообще не понимаю... Читайте маны по менкодеру... + тут даже кто-то скрипты выкладывал, если поискать...

_________________
Лучше иметь храброе сердце и страдать от зла других, чем бояться того, что может случиться...
Хорошие художники копируют - великие художники воруют...


10 май 2010, 12:50
Профиль
Аватара пользователя

Зарегистрирован: 27 май 2010, 11:58
Сообщения: 1
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: Cowon D2+
Наушники: PX 100
Сообщение Re: Cowon d2+/d2 +linux ubuntu
Я кодирую с AVIDemux но можно и для ffmpeg написать команду, там не сложно.


27 май 2010, 13:58
Профиль

Зарегистрирован: 11 мар 2010, 07:40
Сообщения: 58
Откуда: Spb
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: Cowon d2+ 8gb
Наушники: SHP
Сообщение Re: Cowon d2+/d2 +linux ubuntu
vlc, mencoder, audacity

Добавлено спустя 1 минуту 3 секунды:

а для плеера я не конвертирую :%) рокбокс все и так играет вроде

Добавлено спустя 1 минуту 20 секунд:

хм, я не понял, тут что, про видео? Тогда видео я вообще на нем не смотрю =)

Если надо, могу скрипты для mencoder написать


27 май 2010, 17:17
Профиль ICQ
Супермодератор
Аватара пользователя

Зарегистрирован: 03 фев 2009, 19:45
Сообщения: 4032
Откуда: Харьков
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: i9295
Наушники: Sony XBA-C10
Сообщение Re: Cowon d2+/d2 +linux ubuntu
Будто бы D2 не определяется без JetAudio.. И как уже сказали, берете тот же mencoder и вперёд.


28 май 2010, 14:40
Профиль
Аватара пользователя

Зарегистрирован: 05 фев 2009, 19:59
Сообщения: 69
Благодарил(а): раз.
Поблагодарили: раз.
Плеер: D2, FW 3.59+Rockbox
 Re: Cowon d2+/d2 +linux ubuntu
wine - зло. Оно тебе надо, из своей системы полигон для вирусов делать?
Держи, пользуйся! ^_^
Сорри, форум не даёт выложить. Короче НЯ!
bash script показать
Код:
#! /bin/bash
# set -v
##################################
# D2 video encoder for Linux     #
# mencoder, mplayer, awk, XviD   #
# lavcodec and bash are requied! #
# Version 0.06 from 28 may 2010  #
# By Arago (Arago@inbox.ru)      #
##################################

# TODO: пофиксить баг с возможной пропажей саба и 5 секунд видео в середине файла при двухпоточном кодировании в мультисегментном режиме. Как - хз((
# TODO: пофиксить баг с раскраской в мультифайловом многопоточном режиме

# Инициализация
{
# Задание параметров кодирования, изменить при необходимости.
outputwidth=320
outputheight=240
videobitrate=400
audioobitrate=128

# Задание параметров тестового кусочка по умолчанию, изменить при необходимости.
ss=300
endpos=10

# Задание разричных внутренних параметров
aid=1
all=*
mode="XviD"
# Кодировка сабов по умолчанию (если -subcp enca не сможет определить кодировку автоматически)
subcp=cp1251
# Язык сабов для -subcp enca
enca_sublang="ru"
# Язык сабов для -slang
slang="ru,rus"
# Язык звука
alang="jpn,ja"
# Сдвиг сабов по умолчанию - не двигаем
subdelay=0
# -noautoexpand - для отключения автоматического рендеринга сабов
# -mc 0 - для обхода бага с Too many audio packets in the buffer
params="-alang $alang -noautoexpand -mc 0 -really-quiet "
# Путь для копирования готовых файлов по умолчанию
default_copy_path="/media/D2/VIDEO"
# Параметры скалирования изображения (по горизонтали - $outputwidth, по вертикали - согласно аспекту, округляя до +-16 пикселов)
vf="-vf scale=$outputwidth:-10,harddup"

# Раскраска скрипта (код не мой!)
black='\E[30m'
red='\E[31m'
green='\E[32m'
yellow='\E[33m'
blue='\E[34m'
magenta='\E[35m'
cyan='\E[36m'
white='\E[37m'
function cecho { echo -ne "$2"
       echo "$1"
       tput sgr0
      }
}

# Парсер командной строки
{
# Деинициализируем (на всякий случай) перепенную command_line - в неё будем складывать опции передаваемые рабочим процессам в пакетном режиме
unset command_line
# Разбор командной строки
until [[ "$1" == "" ]] ; do
case $1 in

-t )  if [[ "$2" == "-ss" ]]; then
      if [[ "$3" -gt "0" ]]; then
      ss=$3
      cecho "" $yellow
      shift
      shift
      else
      cecho "После $2 необходимо указать целое положительное число!" $red
      fi
      fi

      if [[ "$2" == "-endpos" ]]; then
      if [[ "$3" -gt "0" ]]; then
      endpos=$3
      cecho "" $yellow
      shift
      shift
      else
      cecho "После $2 необходимо указать целое положительное число!" $red
      fi
      fi

      cecho "Тестовый режим, кодируем кусочек в $endpos секунд начиная с $ss секунды" $yellow
      chunk1="-ss $ss -endpos $endpos "
      test="true"
      # Суффикс имени тестового файла
      testsuffix="[TEST ($chunk1) -aid $aid]"
      # Тест кодируем в однопоточном режиме (на всякий случай)
      unithread=":"
      command_line="$command_line -t" ;;

-aid ) if [[ "${2:0:1}" != "-" ]]; then
       cecho "Указана звуковая дорожка $2" $yellow
       aid=$2
       command_line="$command_line -aid $2"
       fi ;;

-r )  cecho "Используется кодек mpeg2 (RockBox)!" $yellow
      mode="mpeg2"
      # Похоже что многосегментная многопоточность не работает в этом режиме, нет звука и индекса в готовом файле. Форсируем unithread mode.
      cecho "Задан режим Rockbox, форсированно использую однопоточный режим!" $yellow
      unithread=":"
      command_line="$command_line -r" ;;

-s )  cecho "Используется кодек XviD, оптимизация под смарты Nokia с экраном qvga (CorePlayer)!" $yellow
      mode="6120"
      command_line="$command_line -s" ;;

-p )  cecho "Задан просмотр после обработки!" $yellow
      play="true"
      command_line="$command_line -p" ;;

-c )  # Проверка, не является ли следущий параметр ключом, если нет - считать его путём для копирования выходных файлов
      if [[ "${2:0:1}" != "-" ]]; then
      if [[ -d "$2" && "-w $2" ]]; then
      cecho "Копирую перекодированные файлы в каталог $2!" $green
      copy_path="$2"
      copy_flag="true"
      elif [[ -d "$2" ]]; then
      cecho "Задан параметр копирования перекодированных файлов в каталог $2, но $2 недоступен для записи!" $red
      elif [[ -f "$2" ]]; then
      cecho "Задан параметр копирования перекодированных файлов в каталог $2, но $2 является файлом!" $red
      elif [[ ! -e "$2" ]]; then
      cecho "Задан параметр копирования перекодированных файлов в каталог $2, но $2 не существует!" $red
      fi
      elif [[ -d "$default_copy_path" && -w "$default_copy_path" ]]; then
      cecho "Копирую перекодированные файлы в каталог по умолчанию $default_copy_path!" $green
      copy_path="$default_copy_path"
      copy_flag="true"
      elif [[ -d "$default_copy_path" ]]; then
      cecho "Задан параметр копирования перекодированных файлов в каталог по умолчанию $default_copy_path, но $default_copy_path недоступен для записи!" $red
      elif [[ -f "$default_copy_path" ]]; then
      cecho "Задан параметр копирования перекодированных файлов в каталог по умолчанию $default_copy_path, но $default_copy_path является файлом!" $red
      elif [[ ! -e "$default_copy_path" ]]; then
      cecho "Задан параметр копирования перекодированных файлов в каталог по умолчанию $default_copy_path, но $default_copy_path не существует!" $red
      else
      cecho "SHIT HAPPENED!" $blue
      exit 1
      fi ;;

-d )  cecho "Задан режим отладки!" $red
      debug=":"
      command_line="$command_line -d" ;;

-mv ) cecho "Задан параметр перещения перекодированных файлов!" $yellow
      move_flag="true"
      command_line="$command_line -mv" ;;

-u )  cecho "Использую однопоточный режим!" $yellow
      unithread=":"
      command_line="$command_line -u" ;;

-s )  cecho "Форсирую обработку субтитров!" $yellow
      force_subs="true"
      command_line="$command_line -s" ;;

-m )  cecho "Форсирую многосегментную многопоточность!" $yellow
      segmented_multithread="true"
      command_line="$command_line -m" ;;

-v )  cecho "Задан детальный режим!" $yellow
      verbose="true"
      command_lne="$command_line -v"
      # Убираем -really-quiet  из параметров mencoder
      params=${params//-really-quiet /} ;;

-a )  batch="true"
      # Проверка, не является ли следущий параметр ключом, если нет - считать его расширением файлов для пакетной обработки
      if [[ "${2:0:1}" != "-" && "$2" != "1" && "$2" != "2" && ! -f "$2" && "$2" != "" ]]; then
      all="*.$2"
      cecho "Задан пакетный режим. обрабатываю файлы с расширением $2!" $red
      else
      cecho "Задан пакетный режим. обрабатываю всё подряд!" $red
      fi ;;

-subcp )  # Проверка, не является ли следущий параметр ключом, если нет - считать его кодировкой сабов при сбое enca
     if [[ "${2:0:1}" != "-" && "$2" != "1" && "$2" != "2" && ! -f "$2" && "$2" != "" ]]; then
     cecho "Задана кодировка субтитров $2!" $yellow
     subcp=$2
     command_line="$command_line -subcp $2"
     else
     cecho "Ошибка в параметре -subcp - не указана кодировка, использую cp1251!" $red
     fi ;;

-subdelay )  # Проверка, не является ли следущий параметр ключом, если нет - считать его сдвигом сабов относительно видео (если сабы отстают от видео - положительное значение, если опережают - отрицательное).
     if [[ ! -f "$2" && "$2" != "" ]]; then
     cecho "Задана задержка субтитров в $2 секунд(ы)!" $yellow
     subdelay=$2
     command_line="$command_line -subdelay $2"
     subdelay_forced=true
     else
     cecho "Ошибка в параметре -subdelay - не указана задержка!" $red
     fi ;;

-savesubdelay    ) # Проверка сохранения задержки в файл
       cecho "Заданно сохранение задержки сабов!" $yellow
       command_line="$command_line -s"
       save_subdelay=true ;;

-ddfc       ) # Проверка отключения коррекции грязных FPS
       cecho "Коррекция грязных FPS отключена!" $yellow
       ddfc_disable=true
       command_line="$command_line -ddfc" ;;

-daid       ) # Проверка отключения использования -aid
       cecho "Использование -aid отключено!" $yellow
       aid_disable=true
       command_line="$command_line -daid" ;;

-o       ) if [[ "${2:0:1}" != "-" ]]; then
        if [[ -d "$2" && "-w $2" ]]; then
        cecho "Задан выходной каталог $2/" $green
        outdir=$2/
        export outdir
        elif [[ -d "$2" ]]; then
        cecho "Задан выходной каталогг $2, но $2 недоступен для записи!" $red
        elif [[ -f "$2" ]]; then
        cecho "Задан выходной каталог $2, но $2 является файлом!" $red
        elif [[ ! -e "$2" ]]; then
        cecho "Задан выходной каталог $2, но $2 не существует!" $red
        fi; shift
        else cecho "Не задан выходной каталог, использую значение по умолчанию!" $red
        fi ;;

-h )  echo 'Использование:
'`basename "$0"`' [-t [-ss startseconds] [-endpos lenght]] [1|2] [-r] [-p] [-d] [-u] [-m] [-h] [-v] [-s] [-subcp codepage] [-c [/path/] [-mv]] [-o /path/] (-a [ext])|input-video
где:
-t - тестовый режим (кодировать кусочек в '$endpos' секунд начиная с '$ss' секунды) (test)
-ss - начать тестовый кусочек с позиции startseconds от начала файла (в секундах)
-endpos - длина тестового кусочка (в секундах)
1|2 - номер звуковой дорожкм (по умолчанию 1)
-r - режим Rockbox (формат mpeg2) (rockbox)
-p - воспроизвести после кодирования (удобно совместно с -t, но не используйте в пакетном режиме!) (play)
-d - режим отладки (не запускать кодирование) (debug)
-u - запретить второй поток кодирования для мультисегментного режима (unithread) (безопасно!)
-v - детальный режим (не подавлять вывод mencoder, немного замедляет процесс!) (verbose)
-s - форсировать обработку с субтитрами, даже если файл сабов не найден (применительно для встроенных сабов mkv или если нужна картинка 320x240) (subtitles)
-a - пакетный режим (обрабатывать все файлы в текущем каталоге) (all)
ext - расширение для пакетной обработки, например -a avi (по умолчанию - *) (только последний параметр -a [ext] будет обработан!) (крайне рекомендуется установить если кодируем сериал с одинаковыми по длине сериями)
-m - форсировать многосегментную многопоточность для -a ext (включать желательно если кодируемые файлы сильно отличаются по длине) (multithread) (опасно!)
-subcp codepage - кодировка субтитров если автоопределение не срабатывает, например -subcp UTF8 (по умолчанию - cp1251) (как для mencoder)
-subdelay - установить сдвиг сабов относительно видео (если сабы отстают от видео - положительное значение, если опережают - отрицательное), например -subdelay 1.5
-savesubdelay - сохранить значение сдвига сабов в файл (после этого можно кодировать в автоматическом режиме, значение будет прочитано из файла)
-ddfc - Отключить коррекцию грязных FPS (если входное видео с FPS=119.880 и неправильно кодируется)
-daid - Отключить использования -aid (если нет звука при кодировании vob файлов)
-o /path/ - путь для сохранения выходных файлов и логов кодировщика
input-video - входной видео файл (полный путь, относительый путь или имя файла в текущем каталоге) (только последний указанный файл будет обработан!)
-c [/path/] - автоматическое копирование перекодированного файла в каталог /path/ (copy) (по умолчанию - '$default_copy_path', если невозможно копировать в указанный каталог - параметр игнорируется, если каталог копирования не указан и невозможно копировать в каталог по умолчанию - параметр игнорируется)
-mv - перемещать перекодированные файлы вместо копирования. Использовать имеет смысл только вместе с параметром -c. Если путь для копирования не определён - не делать ничего.
-h - справка (этот текст) (help)'
exit 0 ;;

* )   if [[ -f "$1" ]]; then
      cecho "Работаем с файлом $1" $green
      file=$1
      fi ;;
esac
shift
done

if [[ "$copy_flag" == "true" && "$move_flag" == "true" ]]; then
cecho "Перемещаю перекодированные файлы в каталог $copy_path!" $yellow
move_files="true"
elif [[ "$copy_flag" != "true" && "$move_flag" == "true" ]]; then
cecho "Игнорирую параметр перещения перекодированных файлов, путь для перемещения не определён!" $red
# На всякий случай
unset move_files
fi
}

# Пакетный режим
{
# Проверка на форсированную мультисегментность и пакетный режим с указанием расширения (иначе под раздачу в один поток может попасть саб и видяшка, что приведёт фактически к однопоточному кодированию)
if [[ "$batch" == "true" && "$all" != "*" && "$segmented_multithread" == "" ]]; then
cecho "Использую мультифайловую многопоточность!" $green
for i in $all; do
if [[ "$first" == "" ]]; then
# Если переменная $first не задана - запоминаем в неё имя первого потока и продолжаем обход
first="$i"
continue
else
# А иначе - инициируем запуск двух потоков одновременно в режиме unithread
second="$i"
if [[ "$copy_flag" == "true" ]] ; then
# sleep 5; надо чтобы обойти проблему состояния гонки при многопоточности (создание каталога Recoded например, когда при проверке его ещё не было, а в момент создания он уже есть, что приводит к ошибке создания и сбою, в результате чего второй поток при первом заходе гадит в ~) и при выводе сообщений на экран
($0 "$first" $command_line -u -c "$copy_path") & (sleep 5; $0 "$second" $command_line -u -c "$copy_path")
else
($0 "$first" $command_line -u) & (sleep 5; $0 "$second" $command_line -u)
fi
# И дожидаемся их завершения (если длинна паралельно обрабатываемых кусков разная будет ожидание более длинного перед продолжением).
# А затем чистим внутренние переменные
unset first
unset second
# И уходим на следущий заход
fi
done
# Если переменная $first не пуста - значит файлов было нечётное количество, обрабатываем последний файл (можно и без -u - будет быстрее но посередине может вывалиться кусок)
if [[ "$first" != "" ]]; then
if [[ "$copy_flag" == "true" ]] ; then
$0 "$first" $command_line -u -c "$copy_path"
else
$0 "$first" $command_line -u
fi
fi
exit 0
# Проверка на пакетный режим
elif [[ "$batch" == "true" ]]; then
if [[ "$unithread" == ":" ]]; then
cecho "Многопоточность не используется!" $red
else
cecho "Использую многосегментную многопоточность!" $yellow
fi
for i in $all
do
if [[ "$copy_flag" == "true" ]] ; then
$0 "$first" $command_line -c "$copy_path"
else
$0 "$first" $command_line
fi
done
exit 0
fi
}

# Всякие проверки
{
# Проверка, задан ли файл для обработки
if [[ "$file" == "" ]]; then
cecho "Не задан файл для работы!" $red
exit 1
fi

# Получение пути к файлу, имени файла и его расширения
temp=${file/*\//}
sourcedir=${file::$((${#file}-${#temp}))}
ext=${temp/*./.}
sourcefilename=${temp::$((${#temp}-${#ext}))}
# Если скрипт вызван без пути к файлу - считать что файл находится в текущем каталоге
if [[ "$sourcedir" == "" ]]
then sourcedir="`pwd`/"
fi

# Определяем, куда складывать выходные файлы
if [[ -d "$outdir" && -w "$outdir" ]]
then cecho "Будем складывать выходные файлы в каталог $outdir" $green
elif [[ -d "$sourcedir"Recoded && -w "$sourcedir"Recoded ]]
then cecho "Каталог ${sourcedir}Recoded найден - будем складывать выходные файлы в него" $green
outdir="$sourcedir"Recoded/
elif [[ -d "$sourcedir"Recoded &&  -d ~ && -w ~ ]]
then cecho "Каталог ${sourcedir}Recoded найден, но недоступен для записи - будем складывать выходные файлы в ~/" $yellow
outdir=~/
elif mkdir ${sourcedir}Recoded&>/dev/null
then cecho "Создан каталог ${sourcedir}Recoded" $green
outdir="$sourcedir"Recoded/
elif [[ -d ~ && -w ~ ]]
then cecho "Создание ${sourcedir}Recoded провалено, будем складывать выходные файлы в ~/" $yellow
outdir=~/
else cecho "Не знаю куда складывать выходные файлы, аварийное завершение" $red
exit 1
fi

# Сокращения для имён файлов
source=$sourcedir$sourcefilename$ext
out=$outdir$sourcefilename$ext$testsuffix
}

# Получение информации об исходном файле
{
# Идентификация файла
IDENTIFY=`mplayer -frames 0 -ao null -vo null -identify "$source" 2>/dev/null`
# Получение длительности входного файла (для двухпоточного режима)
ID_LENGTH=`echo "$IDENTIFY"|awk -F '=' '/ID_LENGTH/ {print $2}'`
# Получение имён внешних файлов субтитров (по одному на строку)
ID_FILE_SUB_FILENAME=`echo "$IDENTIFY"|awk -F '=' '/ID_FILE_SUB_FILENAME/ {print $2}'`
# Получение номеров внутренних дорожек субтитров (по одному на строку)
ID_SUBTITLE_ID=`echo "$IDENTIFY"|awk -F '=' '/ID_SUBTITLE_ID/ {print $2}'`
# Получение языков внутренних дорожек субтитров (по одному на строку)
ID_SID_=`echo "$IDENTIFY"|awk -F '=' '/ID_SID_/ {print $2}'`
# Получение частоты кадров (во избежание грязных хаков типа varable fps с fps=119.880 и всех радостей связанных с этим тиапа ускорения видео и недокодированных файлов)
ID_VIDEO_FPS=`echo "$IDENTIFY"|awk -F '=' '/ID_VIDEO_FPS/ {print $2}'`
}

# Работа с сабами
{
# Проверка на наличие файла для задержки сабов
if [[ -f "$source.subdelay" && ! "$subdelay_forced" == "true" ]]
then subdelay=`cat "$source.subdelay"`
cecho "Найден файл задержки сабов $source.subdelay - используем задержку сабов в $subdelay секунд(ы)!" $yellow
fi
# Сохранение задержки при необходимости
if [[ "$save_subdelay" == "true" ]] ; then
rm "$source.subdelay"
echo $subdelay|tee "$source.subdelay" >/dev/null
fi
# Параметры сабов, при необходимости/желании -  настроить
subset="-subfont-text-scale 3 -subfont-blur 8 -subfont-outline 8 -subcp enca:$enca_sublang:$subcp -slang $slang -subdelay $subdelay"
# subset="-subcp enca:$enca_sublang:$subcp -slang $slang -ass -ass-force-style Fontsize=25,PrimaryColour=&H00ffffff,BackColour=&H00000000,OutlineColour=&H00000000,Bold=0,Italic=0,BorderStyle=1,Outline=5"
# PlayResX=512,PlayResY=320,Name=Default,Alignment=2,Shadow=0,MarginL=20,MarginR=20,MarginV=15
# По умолчанию - /dev/null, чтоб менкодер не ругался на тему option 'sub' must have a parameter.
subfile="/dev/null"
# Функиция инициализации субтитров (вызов: initsubs)
function initsubs { subsetup=$subset
          # Задаём фильтр expand для добавления чёрной полосы внизу изображения под сабы
          # Увеличиваем высоту картинки после expand на 10 лишних пикселов
          let expand=$outputheight+10
          # Рендерим сабы и обрезаем нижние лишние 10 пикселов (сдвигаем сабы на 10 пикселов вниз)
#          vf=$vf,expand=$outputwidth:$outputheight:0:0,crop=320:240:0:0
          vf=$vf,expand=$outputwidth:$expand:0:0:1,crop=0:$outputheight:0:0
         }

# Сохраняем перменную IFS - щна нам ещё пригодится
ifs=$IFS
# И назначаем разделителем \n
IFS='
'
# Перебираем файлы внешних сабов, последний из них будет использоваться
for subfile in `echo "$ID_FILE_SUB_FILENAME"`; do
cecho "Нашёл файл субтитров $subfile" $green
done
# Вот и пригодилась...
IFS=$ifs

if [[ "$subfile" != "/dev/null" || "$1" == "force" ]]; then initsubs; fi

# Если не нашли сабы - проверяем  отказываемся от них, иначе - сообщаем, какой файл сабов будет использоваться
if [[ "$subfile" == "/dev/null" ]]; then
if [[ "$ID_SUBTITLE_ID" != "" ]]; then
cecho "Найдена внутренняя дорожка субтитров, использую её!" $green
initsubs
elif [[ "$force_subs" == "true" ]]; then
cecho "Не нашёл субтитры, форсированно обрабатываю их!" $yellow
initsubs
else cecho "Не нашёл субтитры, продолжаю без них!" $yellow
fi
else cecho "Использую файл субтитров $subfile" $yellow
# Задаём sid=10 чтобы форсировать использование внешнего файла сабов при их наличии
subsetup="$subsetup -sid 10"
fi
# С сабами разобрались.
}

# Режимы кодирования
{
# Функция проверки входного fps на валидность, если не валидный (24/30) - принять равным 24 (?). Вызов - check_dirty_fps
function check_dirty_fps {  if [[ "$ID_VIDEO_FPS" == "119.880" ]]; then
             fps=24
               if [[ "$ddfc_disable" != "true" ]]; then
            params="$params -fps $fps"
               fi
             # А вот тут A/V синхронизация как раз и потребуется, без неё падает
             params=${params//-mc 0/}
             fi
          }
# Функция проверки необходимости использования -aid. Вызов - check_aid
function check_aid    {  if [[ "$aid_disable" == "true" ]]; then
             oac=${oac//-aid $aid /}
            fi
         }

case $mode in
mpeg2 ) # Режим mpeg2
   # Настройки кодека видео. Изменить при необходимости
   ovc="-of mpeg -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=$videobitrate:vmax_b_frames=4:vb_strategy=0:brd_scale=3:turbo:trell:qns=3:vpass="
   # Настройки фильтров аудио. Изменить при необходимости
   af="-af volnorm,resample=44100:0:0"
   # Настройки кодека аудио. Изменить при необходимости
   oac="-aid $aid -oac lavc -lavcopts acodec=libmp3lame:abitrate=$audioobitrate"
   outext="mpg"
   params="$params -ofps 25"
   check_dirty_fps
   check_aid ;;

XviD )  # Режим XviD
   # Настройки кодека видео. Изменить при необходимости
   ovc="-ffourcc XVID -ovc xvid -xvidencopts trellis:vhq=4:hq_ac:max_bframes=0:bitrate=$videobitrate:turbo:pass="
   # Настройки фильтров аудио. Изменить при необходимости
   af="-af volnorm,resample=44100:0:0"
   # Настройки кодека аудио. Изменить при необходимости
   oac="-aid $aid -oac mp3lame -lameopts mode=0:cbr:br=$audioobitrate"
   outext="avi"
   check_dirty_fps
   check_aid ;;

6120 )   # Режим 6120
   # Настройки кодека видео. Изменить при необходимости
   ovc="-ffourcc XVID -ovc xvid -xvidencopts trellis:vhq=4:hq_ac:bitrate=$videobitrate:turbo:pass="
   # Настройки фильтров аудио. Изменить при необходимости
   af="-af volnorm,resample=44100:0:0"
   # Настройки кодека аудио. Изменить при необходимости
   oac="-aid $aid -oac mp3lame -lameopts mode=0:cbr:br=$audioobitrate"
   outext="avi"
   check_dirty_fps
   check_aid ;;

*    )  cecho "SHIT HAPPENED!" $blue
esac
}

# Мультисегментная многопоточность
{
if [[ "$unithread" == ":" ]]; then
# Если задан однопоточный режим - считать серединой конец файла
middlepos=$ID_LENGTH
else
# А иначе - середину
middlepos=`echo $ID_LENGTH| awk '{ print $1 / 2 }'`
fi

# Если тестовый режим не задан - определяем границы участков для потоков:
if [[ "$test" != "true" ]]; then
# Для первого - от начала и до середины.
chunk1="-endpos $middlepos "
# Для второго - от середины и до конца.
chunk2="-ss $middlepos "
fi
}

# Свистелки
{
# Функция для показа клмандной строки кодирования (вызов: show firstpass|secondpass)
function show { # Устанавливаем флаг проверки
      show=":"
      # Сохраняем флаг debug
      olddebug=$debug
      echo -ne "$yellow"
      # И включаем флаг debug в положение echo
      debug="echo"
      # Вызываем функции кодирования с флагом debug
      echo -----------------------------------------
      $1 1 "$chunk1"
      echo -----------------------------------------
      if [[ "$unithread" != ":" ]]; then
      $1 2 "$chunk2"
      echo -----------------------------------------
      fi
      # И восстанавливаем флаг debug обратно
      debug=$olddebug
      unset olddebug
      # А также убираем флаг проверки
      unset show
      tput sgr0
         }

# Функция вывода таймстампа (вызов; timestamp)
function timestamp { echo
           echo -ne "$yellow"
           date
           tput sgr0
           echo
         }
}

# Собственно кодирование
{
# Функция первого прохода (вызов: firstpass номер_части "границы части"  [unithread_flag])
function firstpass  { $show $3 cecho "Processing pass 1 of part $1!" $green
            $debug $3 mencoder -nosound "$source" $params $subsetup -sub "$subfile" $vf $ovc\1 -passlogfile "$out part$1.log" -o /dev/null $2
            $show $3 cecho "Pass 1 of part $1 done!" $green
            $show $3 timestamp
          }

# Функция второго прохода (вызов: secondpass номер_части "границы части"  [unithread_flag])
function secondpass { $show $3  cecho "Processing pass 2 of part $1!" $green
            $debug $3 mencoder "$source" $params $subsetup -sub "$subfile" $af $oac $vf $ovc\2 -passlogfile "$out part$1.log" -o "$out part$1.$outext" $2
            $show $3 cecho "Pass 2 of part $1 done!" $green
            $show $3 timestamp
          }

# Показываем команды кодирования частей
cecho "First pass:" $green
show firstpass
cecho "Second pass:" $green
show secondpass

# И начинаем процесс
timestamp
# sleep 2 - во избежание состояния гонки при выводе сообщений
(firstpass 1 "$chunk1"; secondpass 1 "$chunk1") & (sleep 2; firstpass 2 "$chunk2" $unithread; secondpass 2 "$chunk2" $unithread)
# Хорошо бы дождаться завершения обоих частей прежде чем склеивать их...
wait
}

# Постобработка
{
# Если задан флаг debug - дальше нам делать нечего...
if [[ "$debug" == ":" ]]; then
exit 1
fi

# Если не задан однопоточный режим - надо бы по быстрому слепить оба куска и прибраться за собой пока никто не видит...
if [[ "$unithread" != ":" ]]; then
cecho "$file Joining" $green
time mencoder "$out part1.$outext" "$out part2.$outext" -oac copy -ovc copy -o "$out.$outext" $quiet
rm "$out part1.$outext" "$out part2.$outext" "$out part1.log" "$out part2.log"
else
# А иначе - просто переименовать первый кусок в выходной файл и прибраться.
mv "$out part1.$outext" "$out.$outext"
rm "$out part1.log"
fi

# Просмотр после кодирования
if [[ "$play" == "true" ]]; then
mplayer "$out.$outext"
fi

# Проверка на необходимость копирования готовых файлов и отсутствие необходимости перемещения
if [[ "$copy_flag" == "true" && "$move_files" != "true" ]]; then
cecho "Копирую $out.$outext в $copy_path" $green
# И если надо - запускаем копирование в фоновом режиме
cp "$out.$outext" "$copy_path" &
# Проверка на необходимость перемещения готовых файлов
elif [[ "$copy_flag" == "true" && "$move_files" == "true" ]]; then
cecho "Перемещаю $out.$outext в $copy_path" $green
# И если надо - запускаем пермещение в фоновом режиме
mv "$out.$outext" "$copy_path"&
fi
}

_________________
Сеть не должна пересекаться с настоящим миром... Эксперименты Лэйн, уровень 02, 20.10


04 июн 2010, 22:41
Профиль WWW
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron