Оптимизация видеофайлов без потери качества

Есть ли простой способ (в командной строке - я хочу написать скрипт, который сжимает все видео в папке), чтобы уменьшить размер файла видео (почти) без потери качества? Есть ли способ, который одинаково хорошо работает для разных видеоформатов (mp4, flv, m4v, mpg, mov, avi)?

Следует отметить, что большинство видео, которые я хотел бы сжать, видео (mp4, flv), поэтому неясно, есть ли место для дальнейшего сжатия.

5
задан 8 March 2011 в 19:55

16 ответов

Вы также можете выполнить это с помощью avconv на основе avconv -i <sourcefile> -c:v libx264 -crf 23 output.mp4, вы можете отрегулировать качество вверх, уменьшив коэффициент crf (23 в примере) и отрегулируйте вниз, увеличив его.

Вы можете установить значения от 0 до 51, где более низкие значения приведут к лучшему качеству (за счет более высоких размеров файлов). Значения Sane находятся между 18 и 28. Значение по умолчанию для x264 равно 23, поэтому вы можете использовать это как отправную точку.

Сценарий, который должен позволить вам перейти на другой формат без потери качества ( но мало или совсем не уменьшилось бы размер

#!/bin/bash echo "This script will attempt to copy the video and audio streams of all non-mkv files in the current directory to a mkv video container of the same name as the sources without overwriting." read -p "Press any key to continue or CTRL-C to cancel" for f in *.* do name=$(echo "$f" | sed 's/\.[^\.]*$//') ext=$(echo "$f" | sed 's/^.*\.//') echo "$f is made up of the base $name and ends with $ext" target="$name.mkv" echo target = $target if [ "$f" = "$target" ]; then echo "$f=$target skipping overwrite" else avconv -i "$f" -c:a copy -c:v copy "$name.mkv" fi done

. Обратите внимание, что аудио и видео кодеки, используемые в этом скрипте, являются copy, поэтому повторное кодирование не должно происходить. Любая экономия в размере будет минимальный и будет только результатом более эффективного контейнера, чем раньше. Чтобы получить уменьшение размера, требуется повторное кодирование, и вам нужно будет отрегулировать скрипт, заменив c:v copy на -c:v libx264 -crf 23 (настройка -ref значение для ваших потребностей, как указано выше). Не стесняйтесь комментировать или удалять лишние эхо-строки.

Примечание. Форматы, которые вы упоминаете «mp4, flv, m4v, mpg, mov, avi», являются контейнеры и практически не имеют отношения к кодекам, используемым для кодирования потоков внутри них. Обсуждение вопроса о перекодировке для уменьшения размера потребует знания кодеков, содержащихся в контейнеры и должны оцениваться в каждом конкретном случае.

Источники: тестирование и http://slhck.info/articles/crf

1
ответ дан 25 July 2018 в 22:22

В мистической стране PNG наиболее эффективным способом сжатия без потерь является сжатие изображения с почти любой возможной комбинацией настроек и сравнением вывода. Это то, что делают такие приложения, как pngcrush.

Нет причин, по которым подобный процесс не работал бы на бумаге. На практике есть несколько проблем:

Сжатие видео один раз уже намного длиннее, чем кодирование PNG-изображения. В конфигурациях с комбинацией примерно в 1000 раз больше. Эти два сговариваются, чтобы сделать процесс экспоненциально длиннее несколькими силами. Он также будет использовать необоснованное количество дискового пространства, памяти и процессорного времени. Фреймы смешиваются, если есть изменение частоты кадров и, очевидно, изменяются, если вы изменяете размер кадра или обрезку, что делает процесс сравнения еще сложнее

. В довершение всего, вы имеете дело с контентом, который уже отравлен артефактами и кодировкой отстой. Мой простой ответ на вопрос «Есть ли простой способ» должен быть №.

Но если у вас есть нагрузка на видео с низким сжатием, например FLV (довольно сжатое сжатие в моем опыте с форматом) возможно, стоит пойти с ffmpeg или mencoder для FLV. Что-то вроде этого может работать:

find -iname '*.flv' -exec \ mencoder {} -o {}.recomp.avi -ovc x264 -x264encopts threads=9:bitrate=400 -oac mp3lame -lameopts abr:br=52 \;

Но будет потеря. Вы просто должны судить о том, насколько это приемлемо.

3
ответ дан 25 July 2018 в 22:22
  • 1
    Я бы добавил компрессию Windows media в список мусора. ;-) – Elder Geek 10 March 2016 в 04:05

Вы также можете выполнить это с помощью avconv на основе avconv -i <sourcefile> -c:v libx264 -crf 23 output.mp4, вы можете отрегулировать качество вверх, уменьшив коэффициент crf (23 в примере) и отрегулируйте вниз, увеличив его.

Вы можете установить значения от 0 до 51, где более низкие значения приведут к лучшему качеству (за счет более высоких размеров файлов). Значения Sane находятся между 18 и 28. Значение по умолчанию для x264 равно 23, поэтому вы можете использовать это как отправную точку.

Сценарий, который должен позволить вам перейти на другой формат без потери качества ( но мало или совсем не уменьшилось бы размер

#!/bin/bash echo "This script will attempt to copy the video and audio streams of all non-mkv files in the current directory to a mkv video container of the same name as the sources without overwriting." read -p "Press any key to continue or CTRL-C to cancel" for f in *.* do name=$(echo "$f" | sed 's/\.[^\.]*$//') ext=$(echo "$f" | sed 's/^.*\.//') echo "$f is made up of the base $name and ends with $ext" target="$name.mkv" echo target = $target if [ "$f" = "$target" ]; then echo "$f=$target skipping overwrite" else avconv -i "$f" -c:a copy -c:v copy "$name.mkv" fi done

. Обратите внимание, что аудио и видео кодеки, используемые в этом скрипте, являются copy, поэтому повторное кодирование не должно происходить. Любая экономия в размере будет минимальный и будет только результатом более эффективного контейнера, чем раньше. Чтобы получить уменьшение размера, требуется повторное кодирование, и вам нужно будет отрегулировать скрипт, заменив c:v copy на -c:v libx264 -crf 23 (настройка -ref значение для ваших потребностей, как указано выше). Не стесняйтесь комментировать или удалять лишние эхо-строки.

Примечание. Форматы, которые вы упоминаете «mp4, flv, m4v, mpg, mov, avi», являются контейнеры и практически не имеют отношения к кодекам, используемым для кодирования потоков внутри них. Обсуждение вопроса о перекодировке для уменьшения размера потребует знания кодеков, содержащихся в контейнеры и должны оцениваться в каждом конкретном случае.

Источники: тестирование и http://slhck.info/articles/crf

1
ответ дан 31 July 2018 в 12:35

В мистической стране PNG наиболее эффективным способом сжатия без потерь является сжатие изображения с почти любой возможной комбинацией настроек и сравнением вывода. Это то, что делают такие приложения, как pngcrush.

Нет причин, по которым подобный процесс не работал бы на бумаге. На практике есть несколько проблем:

Сжатие видео один раз уже намного длиннее, чем кодирование PNG-изображения. В конфигурациях с комбинацией примерно в 1000 раз больше. Эти два сговариваются, чтобы сделать процесс экспоненциально длиннее несколькими силами. Он также будет использовать необоснованное количество дискового пространства, памяти и процессорного времени. Фреймы смешиваются, если есть изменение частоты кадров и, очевидно, изменяются, если вы изменяете размер кадра или обрезку, что делает процесс сравнения еще сложнее

. В довершение всего, вы имеете дело с контентом, который уже отравлен артефактами и кодировкой отстой. Мой простой ответ на вопрос «Есть ли простой способ» должен быть №.

Но если у вас есть нагрузка на видео с низким сжатием, например FLV (довольно сжатое сжатие в моем опыте с форматом) возможно, стоит пойти с ffmpeg или mencoder для FLV. Что-то вроде этого может работать:

find -iname '*.flv' -exec \ mencoder {} -o {}.recomp.avi -ovc x264 -x264encopts threads=9:bitrate=400 -oac mp3lame -lameopts abr:br=52 \;

Но будет потеря. Вы просто должны судить о том, насколько это приемлемо.

3
ответ дан 31 July 2018 в 12:35
  • 1
    Я бы добавил компрессию Windows media в список мусора. ;-) – Elder Geek 10 March 2016 в 04:05

Вы также можете выполнить это с помощью avconv на основе avconv -i <sourcefile> -c:v libx264 -crf 23 output.mp4, вы можете отрегулировать качество вверх, уменьшив коэффициент crf (23 в примере) и отрегулируйте вниз, увеличив его.

Вы можете установить значения от 0 до 51, где более низкие значения приведут к лучшему качеству (за счет более высоких размеров файлов). Значения Sane находятся между 18 и 28. Значение по умолчанию для x264 равно 23, поэтому вы можете использовать это как отправную точку.

Сценарий, который должен позволить вам перейти на другой формат без потери качества ( но мало или совсем не уменьшилось бы размер

#!/bin/bash echo "This script will attempt to copy the video and audio streams of all non-mkv files in the current directory to a mkv video container of the same name as the sources without overwriting." read -p "Press any key to continue or CTRL-C to cancel" for f in *.* do name=$(echo "$f" | sed 's/\.[^\.]*$//') ext=$(echo "$f" | sed 's/^.*\.//') echo "$f is made up of the base $name and ends with $ext" target="$name.mkv" echo target = $target if [ "$f" = "$target" ]; then echo "$f=$target skipping overwrite" else avconv -i "$f" -c:a copy -c:v copy "$name.mkv" fi done

. Обратите внимание, что аудио и видео кодеки, используемые в этом скрипте, являются copy, поэтому повторное кодирование не должно происходить. Любая экономия в размере будет минимальный и будет только результатом более эффективного контейнера, чем раньше. Чтобы получить уменьшение размера, требуется повторное кодирование, и вам нужно будет отрегулировать скрипт, заменив c:v copy на -c:v libx264 -crf 23 (настройка -ref значение для ваших потребностей, как указано выше). Не стесняйтесь комментировать или удалять лишние эхо-строки.

Примечание. Форматы, которые вы упоминаете «mp4, flv, m4v, mpg, mov, avi», являются контейнеры и практически не имеют отношения к кодекам, используемым для кодирования потоков внутри них. Обсуждение вопроса о перекодировке для уменьшения размера потребует знания кодеков, содержащихся в контейнеры и должны оцениваться в каждом конкретном случае.

Источники: тестирование и http://slhck.info/articles/crf

1
ответ дан 2 August 2018 в 03:50

В мистической стране PNG наиболее эффективным способом сжатия без потерь является сжатие изображения с почти любой возможной комбинацией настроек и сравнением вывода. Это то, что делают такие приложения, как pngcrush.

Нет причин, по которым подобный процесс не работал бы на бумаге. На практике есть несколько проблем:

Сжатие видео один раз уже намного длиннее, чем кодирование PNG-изображения. В конфигурациях с комбинацией примерно в 1000 раз больше. Эти два сговариваются, чтобы сделать процесс экспоненциально длиннее несколькими силами. Он также будет использовать необоснованное количество дискового пространства, памяти и процессорного времени. Фреймы смешиваются, если есть изменение частоты кадров и, очевидно, изменяются, если вы изменяете размер кадра или обрезку, что делает процесс сравнения еще сложнее

. В довершение всего, вы имеете дело с контентом, который уже отравлен артефактами и кодировкой отстой. Мой простой ответ на вопрос «Есть ли простой способ» должен быть №.

Но если у вас есть нагрузка на видео с низким сжатием, например FLV (довольно сжатое сжатие в моем опыте с форматом) возможно, стоит пойти с ffmpeg или mencoder для FLV. Что-то вроде этого может работать:

find -iname '*.flv' -exec \ mencoder {} -o {}.recomp.avi -ovc x264 -x264encopts threads=9:bitrate=400 -oac mp3lame -lameopts abr:br=52 \;

Но будет потеря. Вы просто должны судить о том, насколько это приемлемо.

3
ответ дан 2 August 2018 в 03:50
  • 1
    Я бы добавил компрессию Windows media в список мусора. ;-) – Elder Geek 10 March 2016 в 04:05

Вы также можете выполнить это с помощью avconv на основе avconv -i <sourcefile> -c:v libx264 -crf 23 output.mp4, вы можете отрегулировать качество вверх, уменьшив коэффициент crf (23 в примере) и отрегулируйте вниз, увеличив его.

Вы можете установить значения от 0 до 51, где более низкие значения приведут к лучшему качеству (за счет более высоких размеров файлов). Значения Sane находятся между 18 и 28. Значение по умолчанию для x264 равно 23, поэтому вы можете использовать это как отправную точку.

Сценарий, который должен позволить вам перейти на другой формат без потери качества ( но мало или совсем не уменьшилось бы размер

#!/bin/bash echo "This script will attempt to copy the video and audio streams of all non-mkv files in the current directory to a mkv video container of the same name as the sources without overwriting." read -p "Press any key to continue or CTRL-C to cancel" for f in *.* do name=$(echo "$f" | sed 's/\.[^\.]*$//') ext=$(echo "$f" | sed 's/^.*\.//') echo "$f is made up of the base $name and ends with $ext" target="$name.mkv" echo target = $target if [ "$f" = "$target" ]; then echo "$f=$target skipping overwrite" else avconv -i "$f" -c:a copy -c:v copy "$name.mkv" fi done

. Обратите внимание, что аудио и видео кодеки, используемые в этом скрипте, являются copy, поэтому повторное кодирование не должно происходить. Любая экономия в размере будет минимальный и будет только результатом более эффективного контейнера, чем раньше. Чтобы получить уменьшение размера, требуется повторное кодирование, и вам нужно будет отрегулировать скрипт, заменив c:v copy на -c:v libx264 -crf 23 (настройка -ref значение для ваших потребностей, как указано выше). Не стесняйтесь комментировать или удалять лишние эхо-строки.

Примечание. Форматы, которые вы упоминаете «mp4, flv, m4v, mpg, mov, avi», являются контейнеры и практически не имеют отношения к кодекам, используемым для кодирования потоков внутри них. Обсуждение вопроса о перекодировке для уменьшения размера потребует знания кодеков, содержащихся в контейнеры и должны оцениваться в каждом конкретном случае.

Источники: тестирование и http://slhck.info/articles/crf

1
ответ дан 4 August 2018 в 19:54

В мистической стране PNG наиболее эффективным способом сжатия без потерь является сжатие изображения с почти любой возможной комбинацией настроек и сравнением вывода. Это то, что делают такие приложения, как pngcrush.

Нет причин, по которым подобный процесс не работал бы на бумаге. На практике есть несколько проблем:

Сжатие видео один раз уже намного длиннее, чем кодирование PNG-изображения. В конфигурациях с комбинацией примерно в 1000 раз больше. Эти два сговариваются, чтобы сделать процесс экспоненциально длиннее несколькими силами. Он также будет использовать необоснованное количество дискового пространства, памяти и процессорного времени. Фреймы смешиваются, если есть изменение частоты кадров и, очевидно, изменяются, если вы изменяете размер кадра или обрезку, что делает процесс сравнения еще сложнее

. В довершение всего, вы имеете дело с контентом, который уже отравлен артефактами и кодировкой отстой. Мой простой ответ на вопрос «Есть ли простой способ» должен быть №.

Но если у вас есть нагрузка на видео с низким сжатием, например FLV (довольно сжатое сжатие в моем опыте с форматом) возможно, стоит пойти с ffmpeg или mencoder для FLV. Что-то вроде этого может работать:

find -iname '*.flv' -exec \ mencoder {} -o {}.recomp.avi -ovc x264 -x264encopts threads=9:bitrate=400 -oac mp3lame -lameopts abr:br=52 \;

Но будет потеря. Вы просто должны судить о том, насколько это приемлемо.

3
ответ дан 4 August 2018 в 19:54
  • 1
    Я бы добавил компрессию Windows media в список мусора. ;-) – Elder Geek 10 March 2016 в 04:05

В мистической стране PNG наиболее эффективным способом вблизи - без потерь сжатия является сжатие изображения с почти любой возможной комбинацией настроек и сравнение выхода. Это то, что делают такие приложения, как pngcrush .

Нет причин, по которым подобный процесс не сработает, на бумаге. На практике существует несколько проблем:

  • Сжатие видео один раз уже намного длиннее, чем кодирование PNG-изображения.
  • В конфигурации с комбинациями в 1000 раз больше .
  • Эти два сговариваются, чтобы сделать процесс экспоненциально длиннее несколькими степенями.
  • Он также использовал бы необоснованный объем дискового пространства, памяти и процессорного времени.
  • Рамки смещаются, если есть изменение частоты кадров и, очевидно, изменяются, если вы изменяете размер кадра или обрезку, делая процесс сравнения еще сложнее

Чтобы все это вышло, вы имеете дело с контентом, который уже отравлен артефактами и кодирующим илом. Мой простой ответ на вопрос «Есть ли простой способ»? Нет.

Но если у вас есть нагрузка на видео с низким сжатием, например FLV (довольно сжатое сжатие в моем опыте с форматом) возможно, стоит пойти с ffmpeg или mencoder для FLV. Что-то вроде этого может работать:

  find -iname '* .flv' -exec \ mencoder {} -o {} .recomp.avi -ovc x264 -x264encopts threads = 9: bitrate = 400  -oac mp3lame -lameopts abr: br = 52 \;   

Но будут потери. Вы просто должны судить, насколько это приемлемо.

3
ответ дан 6 August 2018 в 03:56

Вы также можете выполнить это с помощью avconv на основе avconv -i & lt; sourcefile & gt; -c: v libx264 -crf 23 output.mp4 вы можете отрегулировать качество вверх, уменьшив коэффициент crf (23 в примере) и отрегулируйте его вниз, увеличив его.

Вы можете установить значения от 0 до 51, где более низкие значения приведут к лучшему качеству (за счет более высоких размеров файлов). Значения Sane находятся между 18 и 28. Значение по умолчанию для x264 равно 23, поэтому вы можете использовать это как отправную точку.

Сценарий, который должен позволить вам перейти в другой формат без потери качества ( но мало или вообще не уменьшилось бы размер

  #! / bin / bash echo "Этот скрипт попытается скопировать видео и аудиопотоки всех не-mkv-файлов в текущем каталоге на  mkv video с тем же именем, что и источники без перезаписи. «read -p» Нажмите любую клавишу, чтобы продолжить, или CTRL-C, чтобы отменить «для f в *. * do name = $ (echo« $ f »| sed  /\.[^\.]*$// ') ext = $ (echo "$ f" | sed' s /^.*\.// ') echo "$ f состоит из базового $ name и  заканчивается с $ ext "target =" $ name.mkv "echo target = $ target, если [" $ f "=" $ target "], затем echo" $ f = $ target skipping overwrite "else avconv -i" $ f "  -c: копия -c: v copy «$ name.mkv» fi done  

Обратите внимание, что аудио- и видеокодеки, используемые в этом скрипте, являются copy поэтому никакого повторного кодирования не должно быть. Любая экономия в размере будет минимальной al и будет только результатом более эффективного контейнера, чем раньше. Чтобы получить уменьшение размера, требуется повторное кодирование, и вам нужно будет отредактировать скрипт, заменив c: v copy на -c: v libx264 -crf 23 (корректировка значения -crf для ваших нужд, как указано выше). Не забудьте прокомментировать или удалить лишние эхо-строки.

Примечание. Форматы, которые вы упоминаете «mp4, flv, m4v, mpg, mov, avi», являются контейнерами и практически не имеют отношения к используемым кодекам для кодирования потоков внутри них. Обсуждение вопроса о перекодировке для уменьшения размера потребует знания кодеков, содержащихся в контейнерах, и их необходимо будет оценивать в каждом конкретном случае.

Источники: тестирование и http: // slhck.info/articles/crf

1
ответ дан 6 August 2018 в 03:56

В мистической стране PNG наиболее эффективным способом вблизи - без потерь сжатия является сжатие изображения с почти любой возможной комбинацией настроек и сравнение выхода. Это то, что делают такие приложения, как pngcrush .

Нет причин, по которым подобный процесс не сработает, на бумаге. На практике существует несколько проблем:

  • Сжатие видео один раз уже намного длиннее, чем кодирование PNG-изображения.
  • В конфигурации с комбинациями в 1000 раз больше .
  • Эти два сговариваются, чтобы сделать процесс экспоненциально длиннее несколькими степенями.
  • Он также использовал бы необоснованный объем дискового пространства, памяти и процессорного времени.
  • Рамки смещаются, если есть изменение частоты кадров и, очевидно, изменяются, если вы изменяете размер кадра или обрезку, делая процесс сравнения еще сложнее

Чтобы все это вышло, вы имеете дело с контентом, который уже отравлен артефактами и кодирующим илом. Мой простой ответ на вопрос «Есть ли простой способ»? Нет.

Но если у вас есть нагрузка на видео с низким сжатием, например FLV (довольно сжатое сжатие в моем опыте с форматом) возможно, стоит пойти с ffmpeg или mencoder для FLV. Что-то вроде этого может работать:

  find -iname '* .flv' -exec \ mencoder {} -o {} .recomp.avi -ovc x264 -x264encopts threads = 9: bitrate = 400  -oac mp3lame -lameopts abr: br = 52 \;   

Но будут потери. Вы просто должны судить, насколько это приемлемо.

3
ответ дан 7 August 2018 в 21:54

Вы также можете выполнить это с помощью avconv на основе avconv -i & lt; sourcefile & gt; -c: v libx264 -crf 23 output.mp4 вы можете отрегулировать качество вверх, уменьшив коэффициент crf (23 в примере) и отрегулируйте его вниз, увеличив его.

Вы можете установить значения от 0 до 51, где более низкие значения приведут к лучшему качеству (за счет более высоких размеров файлов). Значения Sane находятся между 18 и 28. Значение по умолчанию для x264 равно 23, поэтому вы можете использовать это как отправную точку.

Сценарий, который должен позволить вам перейти в другой формат без потери качества ( но мало или вообще не уменьшилось бы размер

  #! / bin / bash echo "Этот скрипт попытается скопировать видео и аудиопотоки всех не-mkv-файлов в текущем каталоге на  mkv video с тем же именем, что и источники без перезаписи. «read -p» Нажмите любую клавишу, чтобы продолжить, или CTRL-C, чтобы отменить «для f в *. * do name = $ (echo« $ f »| sed  /\.[^\.]*$// ') ext = $ (echo "$ f" | sed' s /^.*\.// ') echo "$ f состоит из базового $ name и  заканчивается с $ ext "target =" $ name.mkv "echo target = $ target, если [" $ f "=" $ target "], затем echo" $ f = $ target skipping overwrite "else avconv -i" $ f "  -c: копия -c: v copy «$ name.mkv» fi done  

Обратите внимание, что аудио- и видеокодеки, используемые в этом скрипте, являются copy поэтому никакого повторного кодирования не должно быть. Любая экономия в размере будет минимальной al и будет только результатом более эффективного контейнера, чем раньше. Чтобы получить уменьшение размера, требуется повторное кодирование, и вам нужно будет отредактировать скрипт, заменив c: v copy на -c: v libx264 -crf 23 (корректировка значения -crf для ваших нужд, как указано выше). Не забудьте прокомментировать или удалить лишние эхо-строки.

Примечание. Форматы, которые вы упоминаете «mp4, flv, m4v, mpg, mov, avi», являются контейнерами и практически не имеют отношения к используемым кодекам для кодирования потоков внутри них. Обсуждение вопроса о перекодировке для уменьшения размера потребует знания кодеков, содержащихся в контейнерах, и их необходимо будет оценивать в каждом конкретном случае.

Источники: тестирование и http: // slhck.info/articles/crf

1
ответ дан 7 August 2018 в 21:54

Вы также можете выполнить это с помощью avconv на основе avconv -i & lt; sourcefile & gt; -c: v libx264 -crf 23 output.mp4 вы можете отрегулировать качество вверх, уменьшив коэффициент crf (23 в примере) и отрегулируйте его вниз, увеличив его.

Вы можете установить значения от 0 до 51, где более низкие значения приведут к лучшему качеству (за счет более высоких размеров файлов). Значения Sane находятся между 18 и 28. Значение по умолчанию для x264 равно 23, поэтому вы можете использовать это как отправную точку.

Сценарий, который должен позволить вам перейти в другой формат без потери качества ( но мало или вообще не уменьшилось бы размер

  #! / bin / bash echo "Этот скрипт попытается скопировать видео и аудиопотоки всех не-mkv-файлов в текущем каталоге на  mkv video с тем же именем, что и источники без перезаписи. «read -p» Нажмите любую клавишу, чтобы продолжить, или CTRL-C, чтобы отменить «для f в *. * do name = $ (echo« $ f »| sed  /\.[^\.]*$// ') ext = $ (echo "$ f" | sed' s /^.*\.// ') echo "$ f состоит из базового $ name и  заканчивается с $ ext "target =" $ name.mkv "echo target = $ target, если [" $ f "=" $ target "], затем echo" $ f = $ target skipping overwrite "else avconv -i" $ f "  -c: копия -c: v copy «$ name.mkv» fi done  

Обратите внимание, что аудио- и видеокодеки, используемые в этом скрипте, являются copy поэтому никакого повторного кодирования не должно быть. Любая экономия в размере будет минимальной al и будет только результатом более эффективного контейнера, чем раньше. Чтобы получить уменьшение размера, требуется повторное кодирование, и вам нужно будет отредактировать скрипт, заменив c: v copy на -c: v libx264 -crf 23 (корректировка значения -crf для ваших нужд, как указано выше). Не забудьте прокомментировать или удалить лишние эхо-строки.

Примечание. Форматы, которые вы упоминаете «mp4, flv, m4v, mpg, mov, avi», являются контейнерами и практически не имеют отношения к используемым кодекам для кодирования потоков внутри них. Обсуждение вопроса о перекодировке для уменьшения размера потребует знания кодеков, содержащихся в контейнерах, и их необходимо будет оценивать в каждом конкретном случае.

Источники: тестирование и http: // slhck.info/articles/crf

1
ответ дан 10 August 2018 в 10:09

В мистической стране PNG наиболее эффективным способом вблизи - без потерь сжатия является сжатие изображения с почти любой возможной комбинацией настроек и сравнение выхода. Это то, что делают такие приложения, как pngcrush .

Нет причин, по которым подобный процесс не сработает, на бумаге. На практике существует несколько проблем:

  • Сжатие видео один раз уже намного длиннее, чем кодирование PNG-изображения.
  • В конфигурации с комбинациями в 1000 раз больше .
  • Эти два сговариваются, чтобы сделать процесс экспоненциально длиннее несколькими степенями.
  • Он также использовал бы необоснованный объем дискового пространства, памяти и процессорного времени.
  • Рамки смещаются, если есть изменение частоты кадров и, очевидно, изменяются, если вы изменяете размер кадра или обрезку, делая процесс сравнения еще сложнее

Чтобы все это вышло, вы имеете дело с контентом, который уже отравлен артефактами и кодирующим илом. Мой простой ответ на вопрос «Есть ли простой способ»? Нет.

Но если у вас есть нагрузка на видео с низким сжатием, например FLV (довольно сжатое сжатие в моем опыте с форматом) возможно, стоит пойти с ffmpeg или mencoder для FLV. Что-то вроде этого может работать:

  find -iname '* .flv' -exec \ mencoder {} -o {} .recomp.avi -ovc x264 -x264encopts threads = 9: bitrate = 400  -oac mp3lame -lameopts abr: br = 52 \;   

Но будут потери. Вы просто должны судить, насколько это приемлемо.

3
ответ дан 10 August 2018 в 10:09

В мистической стране PNG наиболее эффективным способом вблизи - без потерь сжатия является сжатие изображения с почти любой возможной комбинацией настроек и сравнение выхода. Это то, что делают такие приложения, как pngcrush .

Нет причин, по которым подобный процесс не сработает, на бумаге. На практике существует несколько проблем:

  • Сжатие видео один раз уже намного длиннее, чем кодирование PNG-изображения.
  • В конфигурации с комбинациями в 1000 раз больше .
  • Эти два сговариваются, чтобы сделать процесс экспоненциально длиннее несколькими степенями.
  • Он также использовал бы необоснованный объем дискового пространства, памяти и процессорного времени.
  • Рамки смещаются, если есть изменение частоты кадров и, очевидно, изменяются, если вы изменяете размер кадра или обрезку, делая процесс сравнения еще сложнее

Чтобы все это вышло, вы имеете дело с контентом, который уже отравлен артефактами и кодирующим илом. Мой простой ответ на вопрос «Есть ли простой способ»? Нет.

Но если у вас есть нагрузка на видео с низким сжатием, например FLV (довольно сжатое сжатие в моем опыте с форматом) возможно, стоит пойти с ffmpeg или mencoder для FLV. Что-то вроде этого может работать:

  find -iname '* .flv' -exec \ mencoder {} -o {} .recomp.avi -ovc x264 -x264encopts threads = 9: bitrate = 400  -oac mp3lame -lameopts abr: br = 52 \;   

Но будут потери. Вы просто должны судить, насколько это приемлемо.

3
ответ дан 13 August 2018 в 16:30
  • 1
    Я бы добавил компрессию Windows media в список мусора. ;-) – Elder Geek 10 March 2016 в 04:05

Вы также можете выполнить это с помощью avconv на основе avconv -i & lt; sourcefile & gt; -c: v libx264 -crf 23 output.mp4 вы можете отрегулировать качество вверх, уменьшив коэффициент crf (23 в примере) и отрегулируйте его вниз, увеличив его.

Вы можете установить значения от 0 до 51, где более низкие значения приведут к лучшему качеству (за счет более высоких размеров файлов). Значения Sane находятся между 18 и 28. Значение по умолчанию для x264 равно 23, поэтому вы можете использовать это как отправную точку.

Сценарий, который должен позволить вам перейти в другой формат без потери качества ( но мало или вообще не уменьшилось бы размер

  #! / bin / bash echo "Этот скрипт попытается скопировать видео и аудиопотоки всех не-mkv-файлов в текущем каталоге на  mkv video с тем же именем, что и источники без перезаписи. «read -p» Нажмите любую клавишу, чтобы продолжить, или CTRL-C, чтобы отменить «для f в *. * do name = $ (echo« $ f »| sed  /\.[^\.]*$// ') ext = $ (echo "$ f" | sed' s /^.*\.// ') echo "$ f состоит из базового $ name и  заканчивается с $ ext "target =" $ name.mkv "echo target = $ target, если [" $ f "=" $ target "], затем echo" $ f = $ target skipping overwrite "else avconv -i" $ f "  -c: копия -c: v copy «$ name.mkv» fi done  

Обратите внимание, что аудио- и видеокодеки, используемые в этом скрипте, являются copy поэтому никакого повторного кодирования не должно быть. Любая экономия в размере будет минимальной al и будет только результатом более эффективного контейнера, чем раньше. Чтобы получить уменьшение размера, требуется повторное кодирование, и вам нужно будет отредактировать скрипт, заменив c: v copy на -c: v libx264 -crf 23 (корректировка значения -crf для ваших нужд, как указано выше). Не забудьте прокомментировать или удалить лишние эхо-строки.

Примечание. Форматы, которые вы упоминаете «mp4, flv, m4v, mpg, mov, avi», являются контейнерами и практически не имеют отношения к используемым кодекам для кодирования потоков внутри них. Обсуждение вопроса о перекодировке для уменьшения размера потребует знания кодеков, содержащихся в контейнерах, и их необходимо будет оценивать в каждом конкретном случае.

Источники: тестирование и http: // slhck.info/articles/crf

1
ответ дан 13 August 2018 в 16:30

Другие вопросы по тегам:

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