Это может быть сделано в ручном тормозе или FFMPEG
Просто удивляйтесь, что это можно сделать с помощью Handbrake или FFMPEG. Любое другое программное обеспечение для перекодировки в Windows или MacOS также будет приемлемым.
У меня есть много семейных видео, снятых с помощью DSLR/ экшн-камеры / телефона. И файлы действительно огромны без перекодирования. Есть кое-что, что я хотел бы иметь,
Метаданные должны быть все захвачены. Использование ручного тормоза не сможет захватить информацию об используемом устройстве. Кроме того, дата захвата станет датой транскодирования, что, безусловно, недопустимо.
Я хотел бы перекодировать их в HEVC (H.265)
Мне нужно их перекодировать, так как видео очень много.
Если это возможно (не обязательно), я также хотел бы, чтобы имя файла было "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 - посмотрите видеообъяснение:
Я придумал два разных способа пакетного перекодирования папки, полной видеофайлов, с помощью 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
звонит быстро.
Для начала все, что вам нужно сделать, это:
pip3 install scons
git checkout https://github.com/nuket/Shrinkr
- Копировать
ShrinkrArchive
в папку со всеми видео. (Если хотите, переименуйте файл.) - Отредактируйте эту строку, чтобы установить
ffmpeg
параметры, которые вам нужны. - Отредактируйте эту строку, чтобы собрать все нужные вам файлы (т.е.
*.mp4
или же*.mkv
). - Откройте в этой папке командную строку.
- Бежать
scons -f ShrinkrArchive
.
Вам понадобится копия
ffmpeg
где-то в вашей системе
PATH
, и, конечно же, рабочая копия Python 3.x.
В остальном пользоваться им довольно просто. Я использовал его для перекодирования скринкастов в более сжатые версии, прежде чем выгружать их в холодное хранилище и получать экономию размера файла от 66 до 75%. (Скринкасты обычно имеют низкую энтропию.)
@Takin - на ваш запрос:
Если это возможно (не обязательно), я бы также хотел, чтобы имя файла было "ГГГГММДД_ЧЧММСС".
Вы также можете сделать это в файле ShrinkrArchive (который представляет собой просто сценарий сборки SCons), вам нужно будет добавить файл
stat
вызовите эмиттер имени файла и измените эту строку, которая определяет, как вызывать выходной файл.
Однако это упражнение предоставляется читателю.
В любом случае, надеюсь, это поможет всем, кому нужно перекодировать кучу файлов и не хочет использовать для этого графический интерфейс.
Если у кого-то есть вопросы, не стесняйтесь открывать новую тему здесь или на GitHub.