Удаление видео с использованием сценария
Как я могу отказаться от своего видео?
Я пытаюсь использовать транскод:
transcode -J stabilize --mplayer_probe -i "input.MTS"
Но это вызывает segfault.
Попытка использовать фильтры ffmpeg:
ffmpeg -i "input.MTS" -vf vidstabdetect=shakiness=5:show=1 out.avi
ffmpeg -i "input.MTS" -vf deshake out.avi
Но всегда есть ошибка "Нет такого фильтра".
Я хочу создать для этого простой скрипт наутилуса.
3 ответа
В настоящее время, ffmpeg
из репозитория поддерживает только более простой фильтр deshake, но не поддерживает лучшие фильтры vidstab.
У вас есть несколько вариантов получения поддержки vidstab: скомпилируйте или используйте PPA.
составление
Это лучший вариант, если вы также хотите настроить свой ffmpeg
или используйте последнюю версию.
Сначала вам нужно скомпилировать libvidstab или использовать пакет libvidstab-dev. В настоящее время этот пакет предоставляется только 19.04 Disco Dingo и новее. Кроме того, 16.04 пользователи Xenial Xerus могут использовать пакет libvidstab-dev из PPA mc3man).
Чтобы скомпилировать libvidstab:
$ sudo apt-get install build-essential cmake
$ mkdir ~/ffmpeg_sources ~/ffmpeg_build
$ cd ~/ffmpeg_sources
$ wget -O https://github.com/georgmartius/vid.stab/archive/master.zip
$ unzip master.zip
$ cd vid.stab-master
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=~/ffmpeg_build .
$ make
$ make install
Теперь следуйте инструкциям Как скомпилировать FFmpeg в Ubuntu. Когда вы дойдете до шага, где ffmpeg
настроен потом добавить --enable-libvidstab
к списку параметров настройки.
mc3man PPA
FFmpeg текущий выпуск плюс git PPA для 16.04 Xenial Xerus:
sudo add-apt-repository ppa:mc3man/ffmpeg-test
sudo apt-get update
sudo apt-get install ffmpeg-static
Теперь беги ffmpeg2
(обратите внимание на "2").
использование
Смотрите инструкции по использованию vid.stab.
Также см
- Документация по фильтру deshake, vidstabdetect и vidstabtransform FFmpeg.
Как уже упоминалось выше, PPA Дуга не поддерживает Zesty (17.04) - по состоянию на 19.08.2017. Поскольку 17.10 выйдет в октябре, 16.04 решения будут все более и более устаревшими. Два возможных решения для пользователей Zesty:
- Проще: просто используйте статическую сборку https://www.johnvansickle.com/ffmpeg/
- Больше работы: установите
vid.stab
из github ( https://github.com/georgmartius/vid.stab прочитайте инструкции по компиляции, очень просто), а затем скомпилируйтеffmpeg
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
Так как у меня не так много времени, мне нравится первое решение, сработало безупречно.
Первый проход vidstab работает только на 1 ядре, но так как мои кадры GoPro состоят из множества блоков, я мог бы обрабатывать 4 видео одновременно, если бы я хотел 100% загрузки системы. Второй проход использует все 4 ядра.
Мой ноутбук i7-6820HK, но оба пропускают только прогресс со скоростью около 0,12x. Так что это довольно медленно, но мне все равно, будет ли результат хорошим.
Обновление: мой материал крепления шлема кажется настолько шатким, что шаткости 10 недостаточно. Я не знаю, что делать, это максимум...
Я думаю, что многие люди (включая меня) нашли этот вопрос, пытаясь просто использовать ffmpeg с фильтром.
Эти ответы о компиляции отличные, но они отнимают много времени и могут быть трудными для некоторых людей.
В настоящее время существует простой способ использовать образ Docker, который уже собран со многими фильтрами, кодеками и многим другим.
Лично я использовал это изображение https://github.com/jrottenberg/ffmpeg
Пример использования очень прост для фильтра deshake:
docker run -v $PWD:/temp/ \
jrottenberg/ffmpeg \
-i /temp/input.MTS \
-vf deshake \
/temp/out.avi
А также для фильтра vidstab:
# create vectors from input file
docker run -v $PWD:/temp/ jrottenberg/ffmpeg \
-i /temp/input.MTS \
-vf vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=/temp/transform_vectors.trf -f null -
# process file using vectors from step 1
docker run -v $PWD:/temp/ jrottenberg/ffmpeg \
-i /temp/input.MTS \
-vf vidstabtransform=input=/temp/transform_vectors.trf:zoom=1:smoothing=30,unsharp=5:5:0.8:3:3:0.4 \
/temp/out.avi
Просто учтите, что созданный файл "out.avi" будет иметь root
владелец и это должно быть изменено.