Это может быть сделано в ручном тормозе или FFMPEG

Просто удивляйтесь, что это можно сделать с помощью Handbrake или FFMPEG. Любое другое программное обеспечение для перекодировки в Windows или MacOS также будет приемлемым.

У меня есть много семейных видео, снятых с помощью DSLR/ экшн-камеры / телефона. И файлы действительно огромны без перекодирования. Есть кое-что, что я хотел бы иметь,

  1. Метаданные должны быть все захвачены. Использование ручного тормоза не сможет захватить информацию об используемом устройстве. Кроме того, дата захвата станет датой транскодирования, что, безусловно, недопустимо.

  2. Я хотел бы перекодировать их в HEVC (H.265)

  3. Мне нужно их перекодировать, так как видео очень много.

Если это возможно (не обязательно), я также хотел бы, чтобы имя файла было "YYYYMMDD_HHMMSS".

Я думаю, что и 1 и 3 довольно часто задаваемые вопросы. Эта ветка будет весьма полезна для всех людей, которые ищут одинаковый ответ. Большое спасибо!

3 ответа

Вам нужно поместить свои видео в папку «inputs» в каталоге FFmpeg. Затем запустите этот файл .bat из того же каталога, в котором существует FFmpeg:

      @echo off
mkdir inputs
mkdir outputs
set "InputFolder=%~dp0inputs"

:Begin
echo.
set /P fileformati=Insert the input format: 

echo.
set /P fileformato=Insert the output format: 

echo.
echo Press 1 to select CRF 16
echo Press 2 to select CRF 18
echo Press 3 to select CRF 20
echo Press 4 to select CRF 23
echo.

choice /c 1234 /M "Select: "
if %errorlevel% EQU 4 set crfnumber="23"
if %errorlevel% EQU 3 set crfnumber="20"
if %errorlevel% EQU 2 set crfnumber="18"
if %errorlevel% EQU 1 set crfnumber="16"

echo.
echo Press 1 to select the "YUV 4:2:0 planar 8-bits color format"
echo Press 2 to select the "YUV 4:2:0 planar 10-bits color format"
echo Press 3 to select the "YUV 4:2:0 planar 12-bits color format"
echo Press 4 to select the "YUV 4:2:2 planar 8-bits color format"
echo Press 5 to select the "YUV 4:2:2 planar 10-bits color format"
echo Press 6 to select the "YUV 4:2:2 planar 12-bits color format"
echo Press 7 to select the "YUV 4:4:4 planar 8-bits color format"
echo Press 8 to select the "YUV 4:4:4 planar 10-bits color format"
echo Press 9 to select the "YUV 4:4:4 planar 12-bits color format"
echo.

choice /c 123456789 /M "Select: "
if %errorlevel% EQU 9 set colorformat="yuv444p12le"
if %errorlevel% EQU 8 set colorformat="yuv444p10le"
if %errorlevel% EQU 7 set colorformat="yuv444p"
if %errorlevel% EQU 6 set colorformat="yuv422p12le"
if %errorlevel% EQU 5 set colorformat="yuv422p10le"
if %errorlevel% EQU 4 set colorformat="yuv422p"
if %errorlevel% EQU 3 set colorformat="yuv420p12le"
if %errorlevel% EQU 2 set colorformat="yuv420p10le"
if %errorlevel% EQU 1 set colorformat="yuv420p"

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%%MM%%DD%_%HH%%Min%%Sec%"
echo fullstamp: "%fullstamp%"

for /R "%InputFolder%" %%i in (*.%fileformati%) do (ffmpeg -n -i "%%~dpni.%fileformati%" -c:v libx265 -preset:v slow -crf %crfnumber% -vf format=%colorformat% -c:a copy -movflags use_metadata_tags -map_metadata 0 "outputs\%fullstamp% - %%~ni.%fileformato%")

timeout /t 10

Я бы сказал нет.

Традиционно обработка метаданных в видео выполняется довольно плохо - в отличие от неподвижных изображений. У меня есть похожая проблема, и, вероятно, в конечном итоге, моя собственная Я предполагаю, что вы хотели бы перейти на MP4 или MOV, который имеет несколько различных стилей метаданных: MP4, QuickTime, стиль iTunes, 3gpp, встроенный ID3 (аналогично MP3) и т. Д. Поскольку поддержка записи метаданных видео сделана плохо - так читает метаданные видео. Вы можете записать в файл более одного стиля - надеясь, что инструменты, которые его не понимают, будут игнорировать неизвестные метаданные.

На данный момент я бы транскодировал в MOV/H.265 и использовал метаданные в стиле Apple, чтобы они правильно работали на моем iPhone/iPad/AppleTV и Mac.

К сожалению - иногда ответ таков, что ответа нет, но я бы хотел, чтобы его ошиблись.

tl;dr - посмотрите видеообъяснение:

https://youtu.be/ZiGeVvNGn9c

Я придумал два разных способа пакетного перекодирования папки, полной видеофайлов, с помощью ffmpeg. Насколько мне известно, ffmpeg скопирует все метаданные без изменений.

Чистый путь Python

https://github.com/nuket/Shrinkr#shrinkr-batch-transcode-python-edition

SCons Way

https://github.com/nuket/Shrinkr#shrinkr-batch-transcode-scons-edition

Один использует чистый Python, другой использует скрипты сборки SCons. Транскодирование видео может быть концептуально похоже на компиляцию программного обеспечения, поэтому я попробовал это.

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

Из двух способов я предпочитаю метод SCons, потому что он использует систему сборки SCons для проверки изменений во входных / выходных файлах. Единственным недостатком SCons является то, что по какой-то причине запуск работы занимает некоторое время, но как только он выясняет, что ему нужно сделать, он выполнит все ffmpeg звонит быстро.

Для начала все, что вам нужно сделать, это:

  1. pip3 install scons
  2. git checkout https://github.com/nuket/Shrinkr
  3. Копировать ShrinkrArchiveв папку со всеми видео. (Если хотите, переименуйте файл.)
  4. Отредактируйте эту строку, чтобы установить ffmpeg параметры, которые вам нужны.
  5. Отредактируйте эту строку, чтобы собрать все нужные вам файлы (т.е. *.mp4 или же *.mkv).
  6. Откройте в этой папке командную строку.
  7. Бежать scons -f ShrinkrArchive.

Вам понадобится копия ffmpeg где-то в вашей системе PATH, и, конечно же, рабочая копия Python 3.x.

В остальном пользоваться им довольно просто. Я использовал его для перекодирования скринкастов в более сжатые версии, прежде чем выгружать их в холодное хранилище и получать экономию размера файла от 66 до 75%. (Скринкасты обычно имеют низкую энтропию.)

@Takin - на ваш запрос:

Если это возможно (не обязательно), я бы также хотел, чтобы имя файла было "ГГГГММДД_ЧЧММСС".

Вы также можете сделать это в файле ShrinkrArchive (который представляет собой просто сценарий сборки SCons), вам нужно будет добавить файл statвызовите эмиттер имени файла и измените эту строку, которая определяет, как вызывать выходной файл.

Однако это упражнение предоставляется читателю.

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

Если у кого-то есть вопросы, не стесняйтесь открывать новую тему здесь или на GitHub.

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