Разница между rmdir и rm -r

У меня есть рецепт, который я изначально придумал для себя, чтобы преобразовать видео в формате Motion JPEG, создаваемое моей старой камерой (это очень большие видео, поскольку каждый кадр представляет собой целое изображение JPEG) в формат h264. Вот адаптация для других видов видео (курсов и т. Д.).

Я использую не ffmpeg , а mplayer и mencoder . Во-первых, мы должны демультиплексировать звук с помощью mplayer:

mplayer -vo null -ao pcm:fast:file=<audio_pcm.wav> <video>
  • Параметры -vo null и -ao null указывают mplayer не извлекать видео.

В следующих шагах мы сделаем трехпроходное сжатие с помощью mencoder. На первом проходе мы выберем подходящее сжатие в режиме постоянного качества (параметр crf ) в качестве начальной точки:

mencoder <video> -ovc x264 \ 
         -x264encopts ratetol=100:preset=veryslow:crf=<value>:pass=1 \
         -nosound -o video1.h264
  • Вы можете добавить параметр slow_firstpass к параметру -x264encopts , если вас не устраивает конечное качество видео. В руководстве Mencoder сказано, что эта опция отключает некоторые параметры, которые «значительно улучшают скорость кодирования, практически не влияя на качество последнего прохода». Так что используйте его только на последнем этапе.

  • Вы должны попробовать несколько значений для crf - попробуйте, начиная с 25, и продолжайте увеличивать его, пока не заметите артефакты в результирующем видео (более высокие значения сжимают больше). Помните, что последующие проходы кодирования улучшат качество, которое вы выбрали для crf .

  • Альтернативы предустановке очень медленный : медленный , медленный , средний и т. Д. Полный список см. В руководстве Mencoder.

  • ratetol управляет изменением битрейта - я не уверен, правильно ли я поступаю здесь, но я установил максимальное значение, чтобы дать Mencoder полную свободу выбирать правильный битрейт для каждого сцена.

После первого прохода вы заметите, что последняя строка дает вам средний битрейт, который вы будете использовать на следующих шагах:

(...)
x264 [info]: kb/s:526.43

Измените параметр crf , рекомендованный на первом проходе, на битрейт , требуемый на последующих проходах:

mencoder <video> -ovc x264 \
       -x264encopts slow_firstpass:ratetol=100:preset=veryslow:bitrate=526:pass=3 \
       -nosound -o video2.h264

При кодировании второго прохода будет считываться статистика, сгенерированная на первом проходе ( divx2pass.log и divx2pass.log.mbtree ) для оптимизации сжатия.

  • Обратите внимание, что вы будете использовать тот же видеовход, а не сгенерированный при первом проходе. Выходное видео первого прохода полезно только для проверки исходного качества.

  • Обратите внимание, что pass = 3 ( not pass = 2 ) создаст новый файл статистики, поэтому вы можете повторять последний шаг столько раз, сколько захотите. . Обычно я выполняю pass = 3 дважды, всегда обращая внимание на битрейт результата.

Между тем, вы также можете сжимать аудио, используя lame или oggenc :

oggenc -q<n> <audio_pcm.wav>

Наконец, мы повторно объединим аудио и видео

mencoder -audiofile <audio>.ogg video2.h264 -oac copy -ovc copy \
         -of lavf -lavfopts format=mp4 -o <video>.mp4
  • The -of lavf -lavfopts format = mp4 создает файл формата mp4 с использованием мультиплексоров lavopts.
9
02.04.2018, 22:08
2 ответа

rm -r удаляет каталог и все его содержимое; rmdirудалит каталог, только если он пуст. Мне нравится использовать следующее для удаления каталога и всего его содержимого:

rm -rf <directory_to_be_removed>
18
27.01.2020, 20:05

Вы должны использовать rm -r, когда хотите рекурсивно удалить каталог и все его содержимое, или когда целью может быть каталог или файл, и вы хотите удалить его независимо от того, что это такое.

Вы должны использовать rmdir, если хотите удалить пустой каталог.

Команда rmdirполезна, поскольку она отказывается удалять не -пустые каталоги и файлы. Это служит предосторожностью в ситуациях, когда вы можете быть абсолютно уверены, что вы удаляете каталог, и что каталог пуст, прежде чем удалять его (, например, в сценарии ), и хотите обработать его. в противном случае как состояние ошибки.

1
27.01.2020, 20:05

Теги

Похожие вопросы