Хорошо, поэтому то, что Вы хотите, для сценария, получаемого доступ через символьную ссылку, чтобы смочь использовать файлы относительно символьной ссылки, правильно? И чтобы это работал, даже если используемый путь является полным, относительным, относительным из того же каталога, родственника от подкаталога, и т.д.?
Это действительно не просто. Удивительно непростой, на самом деле - много языков программирования имеют функцию 'abspath', которая решила бы эту проблему во флэш-памяти. Однако я не полагаю, что в стандартном инструментарии сценария оболочки существует такая функция.
Однако можно создать тот вполне просто с sed остротой:
abspath() {
{ [[ "$1" =~ ^/ ]] && echo "$1" || echo "$(pwd)/$1"; } | sed -r ':. s#(/|^)\./#\1#g; t .; :: s#[^/]{1,}/\.\./##; t :'
}
foo_dir=$(dirname $(abspath $0))
Я полагаю, что это является совершенно общим, и будет работать на пути, содержащие любую сумму ./
и ../
.
Это действительно использует регулярные выражения немного, тем не менее,
Avidemux имеет полезный графический интерфейс, который позволит Вам изменить размер и транскодировать. mencoder
(часть MPlayer), может сделать это также, но это - также командная строка.
Я думаю ffmpeg
строка, которую Вы хотите, является чем-то вроде этого:
ffmpeg -s 640x360 -i in.mkv -vcodec libx264 -o new.mp4
-s
устанавливает выходной размер-i
входной файл-vcodec
устанавливает выходной кодек (см. ffmpeg -codecs
для Вашего полного списка)-o
устанавливает выходное имя файла (см. ffmpeg -formats
для Вашего полного списка) Разделение без перекодирования:
ffmpeg -ss [start-time] -t [length-time] -i [in-file-path] \
-vcodec copy -acodec copy [out-file-path]
Пример:
ffmpeg -ss 00:00:00.00 -t 00:10:00.00 -i "/some/path/to/file.mp4" \
-vcodec copy -acodec copy "/some/path/to/new file.mp4"