Заметки / Поваренная книга программиста 1

ffmpeg

Источник: 19 команд ffmpeg для любых нужд

Соединяем аудио и видео

$ ffmpeg -i input.mp3 -i input.mp4 -acodec copy -vcodec copy output.mp4

Вырезаем кадр из видео

Источник: https://habr.com/post/171213/#comment_6263189

$ ffmpeg -ss 00:00:02 -i file.flv -f image2 -vframes 1  file_out.jpg

Конвертируем видео в mp3

$ ffmpeg -i ./in.mp4 -codec:a libmp3lame -qscale:a 0 ./output.mp3

или

$ ffmpeg -i ./in.mp4 -codec:a libmp3lame -b:a 320k ./output.mp3
-i ./in.mp4 путь к файлу
-codec:a libmp3lame кодек libmp3lame
-qscale:a 0 VBR 0
-b:a 320k CBR 320kbps
./output.mp3 вывод файла

Вырезаем фрагмент из видео

$ ffmpeg -i ./in.mp4 -acodec copy -vcodec copy -ss 00:00:00 -t 00:02:45 ./out.mp4
-i ./in.mp4 путь к файлу
-acodec copy копируем аудио кодек
-vcodec copy копируем видео кодек
-ss 00:00:00 начало обрезка в hh:mm:ss
-t 00:02:45 длина обрезка в hh:mm:ss
./out.mp4 вывод нового файла

Повернуть видео на 90°

Источник: https://habr.com/post/171213/#comment_5940077

$ ffmpeg -vf transpose=1 -i file.avi file1.avi

Значение transpose: 0 — против часовой стрелки и зеркально; 1 — по часовой стрелке; 2 — против часовой стрелки; 3 — по часовой стрелке и зеркально

Конвертирование

# flac > alac
$ for f in ./*.flac; do ffmpeg -i "$f" -c:a alac "${f%.*}.m4a"; done
   
# wav > mp3
$ for f in ./*.wav; do ffmpeg -i "$f" -codec:a libmp3lame -qscale:a 0 "${f%.*}.mp3"; done
   
# flac > mp3
$ for f in ./*.flac; do ffmpeg -i "$f" -codec:a libmp3lame -qscale:a 0 "${f%.*}.mp3"; done

Конвертируем MIDI в MP3 (timidity + ffmpeg)

$ timidity input.mid -Ow -o - | ffmpeg -i - -acodec libmp3lame -b:a 128k output.mp3

Форматирование текста

Удалить “CR” из файла

$ sed -i -e 's/\r$//' ./file.txt

Убрать пустые строки в файле

$ grep -v '^$' input.txt > output.txt

Удаление пробелов и табуляций

$ sed -i 's/^[ \t]*//;s/[ \t]*$//' file_name.txt

Прочее

Форматирование в FAT32

$ mkfs.vfat -F32 -c sdXX

Проверка носителя на бэды с последующей пометкой (badblocks + e2fsck )

$ badblocks -svw /dev/sdXX > /path/to/bad.list
$ e2fsck -l /path/to/bad.list /dev/sdXX
-svw проходим тремя алгоритмами

OptiPNG - Максимальное сжатие png без записи IDAT, самый медленный метод

$ optipng -zc1-9 -zm1-9 -zs0-3 -f0-5 -nz file.png
-zc1-9 zlib compression levels (от 1 до 9)
-zm1-9 zlib memory levels (от 1 до 9)
-zs0-3 zlib compression strategies (от 0 до 3)
-f0-5 PNG delta filters (от 0 до 5)
-nz no IDAT recoding

То же самое, только короткой записью:

$ optipng -o7 -nz file.png

#№ Вопроизвести MIDI

$ aplaymidi --port 128:0 input.mid

#№ Найти все файлы “firefox” и вывести их пути в кавычках

$ locate firefox | sed 's/.*/"&"/' 

Сложное: команда с pipe, регулярками и xargs

  1. Найти всю музыку в “/music/”
  2. Вывести полные пути к файлам
  3. Выбрать все пути к файлам с расширением “.m4a”
  4. Запаковать всё это в tar
$ ls -R "/music/" | awk '/:$/&&f{s=$0;f=0}/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}NF&&f{print s$0}' | grep ".m4a" | sed 's/.*/"&"/' | xargs tar cvf music.tar

Смотрите также: