VirtualDub MP4 Encoder/Decoder

Рубрика: Прочее
Posted on: 08.06.2020 в 01:52 - Комментариев нет - Visited 282 times

Понадобилось мне скачать видео с YouTube, вырезать от туда кусок и загрузить себе…

Загрузить видео с Youtube помог Download Master, к слову, у товарищей с Вестбайт раньше были серьёзные проблемы с этим, но они их успешно решили, за что большое спасибо.

Я терпеть не могу всякие «суперпроги», которые созданы для сбора денег и так далее, у нас есть замечательный VirtualDub, который хоть и закончился в 2013 году, но до сих пор актуален. К слову, VirtualDub поддерживает кучу расширений, сторонних рендеров и прочее и прочее и прочее.

И так, приступим.

Изначально VirtualDub не умеет не открывать, не сохранять MP4. Давайте научим его!

Скачиваем последнюю версию VirtualDub
Скачиваем FFMpeg Input Plugin
Скачиваем FFmpeg Encoder

FFMpegInputPlugin (в зависимости от скачанной версии) нужно распаковать в папку расширений VirtualDub (это plugins32 или plugins64 в зависимости от разрядности), либо просто установить. Расширение без проблем умеет импортировать видео в разрешении максимум 720p, что больше — чревато большими проблемами, зависаниями или прочими неприятностями, вплоть до вылета самого VirtualDub. Здесь всё просто, расширение интегрируется даже в диалог открытия файлов или просто можно перетащить желаемый файл в окно VirtualDub.

С экспортом посложнее.

Устанавливаем FFmpeg Encoder. Теперь нужно научить VirtualDub с ним работать. Решение из Интернета выглядит так:

  1. Создаём файл ffmpeg-1.vdprof
  2. Вписываем содержимое:
    {
    "description": "VirtualDub external encoder profile collection",
    "externalEncoders": {
      "sets": {
      "mov ff x264 r18+pcm": {
      "videoEncoder": "V ff 264 r18",
      "audioEncoder": "A ff pcm",
      "multiplexer": "M ff mov",
      "description": "mov",
      "extension": "mov",
      "processPartial": true,
      "useOutputAsTemp": false
      },
      "mp4 ff mpeg4 q1+ac3": {
      "videoEncoder": "V ff mpeg4 q1",
      "audioEncoder": "A ff ac3 192k",
      "multiplexer": "M ff mov",
      "description": "mp4",
      "extension": "mp4",
      "processPartial": true,
      "useOutputAsTemp": false
      },
      "mov ff mjpeg+pcm": {
      "videoEncoder": "V ff mjpeg q1",
      "audioEncoder": "A ff pcm",
      "multiplexer": "M ff mov",
      "description": "mov",
      "extension": "mov",
      "processPartial": true,
      "useOutputAsTemp": false
      }
      },
      "profiles": {
      "M ff mov": {
      "name": "M ff mov",
      "program": "C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe",
      "commandArguments": "-i \"%(tempvideofile)\" -i \"%(tempaudiofile)\"  -c:v copy -c:a copy -r %(fps) -f mov \"%(outputname)\"",
      "outputFilename": "%(outputname).audio",
      "type": 2,
      "inputFormat": 0,
      "checkReturnCode": true,
      "logStdout": true,
      "logStderr": true,
      "bypassCompression": false,
      "predeleteOutputFile": true
      },
      "V ff 264 r18": {
      "name": "V ff 264 r18",
      "program": "C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe",
      "commandArguments": "-f rawvideo -s %(width)x%(height) -r %(fps) -i - -vcodec libx264 -pix_fmt yuv420p -crf 18 -preset veryfast -x264opts colormatrix=bt709:vbv-maxrate=62500:vbv-bufsize=78125  \"%(tempvideofile)\"",
      "outputFilename": "video.mov",
      "type": 0,
      "inputFormat": 0,
      "checkReturnCode": true,
      "logStdout": true,
      "logStderr": true,
      "bypassCompression": false,
      "predeleteOutputFile": true
      },
      "V ff 264 r22": {
      "name": "V ff 264 r22",
      "program": "C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe",
      "commandArguments": "-f rawvideo -s %(width)x%(height) -r %(fps) -i - -vcodec libx264 -pix_fmt yuv420p -crf 22 -preset medium -x264opts colormatrix=bt709:vbv-maxrate=62500:vbv-bufsize=78125  \"%(tempvideofile)\"",
      "outputFilename": "video.mov",
      "type": 0,
      "inputFormat": 0,
      "checkReturnCode": true,
      "logStdout": true,
      "logStderr": true,
      "bypassCompression": false,
      "predeleteOutputFile": true
      },
      "A ff pcm": {
      "name": "A ff pcm",
      "program": "C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe",
      "commandArguments": "-i - -vn -c:a pcm_s16le -f wav \"%(tempaudiofile)\"",
      "outputFilename": "%(outputname).wav",
      "type": 1,
      "inputFormat": 1,
      "checkReturnCode": true,
      "logStdout": true,
      "logStderr": true,
      "bypassCompression": true,
      "predeleteOutputFile": true
      },
      "V ff mpeg4 q1": {
      "name": "V ff mpeg4 q1",
      "program": "C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe",
      "commandArguments": "-f rawvideo -s %(width)x%(height) -r %(fps) -i - -c:v mpeg4 -q:v 1 -pix_fmt yuv420p  \"%(tempvideofile)\"",
      "outputFilename": "video.mp4",
      "type": 0,
      "inputFormat": 0,
      "checkReturnCode": true,
      "logStdout": true,
      "logStderr": true,
      "bypassCompression": false,
      "predeleteOutputFile": true
      },
      "M ff mp4": {
      "name": "M ff mp4",
      "program": "C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe",
      "commandArguments": "-i \"%(tempvideofile)\" -i \"%(tempaudiofile)\"  -c:v copy -c:a copy -r %(fps) -f mp4 \"%(outputname)\"",
      "outputFilename": "%(outputname).audio",
      "type": 2,
      "inputFormat": 0,
      "checkReturnCode": true,
      "logStdout": true,
      "logStderr": false,
      "bypassCompression": false,
      "predeleteOutputFile": false
      },
      "M ff avi": {
      "name": "M ff avi",
      "program": "C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe",
      "commandArguments": "-i \"%(tempvideofile)\" -i \"%(tempaudiofile)\"  -c:v copy -c:a copy -r %(fps) -f avi \"%(outputname)\"",
      "outputFilename": "%(outputname).audio",
      "type": 2,
      "inputFormat": 0,
      "checkReturnCode": true,
      "logStdout": true,
      "logStderr": true,
      "bypassCompression": false,
      "predeleteOutputFile": true
      },
      "A ff ac3 192k": {
      "name": "A ff ac3 192k",
      "program": "C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe",
      "commandArguments": "-i - -vn  -f ac3 -acodec ac3 -b:a 192k -ar 48000 -ac 2 \"%(tempaudiofile)\"",
      "outputFilename": "%(outputname).ac3",
      "type": 1,
      "inputFormat": 1,
      "checkReturnCode": true,
      "logStdout": true,
      "logStderr": true,
      "bypassCompression": true,
      "predeleteOutputFile": true
      },
      "V ff mjpeg q1": {
      "name": "V ff mjpeg q1",
      "program": "C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe",
      "commandArguments": "-f rawvideo -s %(width)x%(height) -r %(fps) -i - -c:v mjpeg -q:v 1 -pix_fmt yuv420p  \"%(tempvideofile)\"",
      "outputFilename": "%(outputname).mp4",
      "type": 0,
      "inputFormat": 0,
      "checkReturnCode": true,
      "logStdout": true,
      "logStderr": true,
      "bypassCompression": false,
      "predeleteOutputFile": true
      }
      }
    }
    }
  3. Сохраняем файл (на всякий случай, ссылка)

Далее идём в Options -> External Encoders в VirtualDub. Нажимаем Import и выбираем наш файлик. Видим, что появились новые возможности экспорта.

Обязательно запоминаем, что использование сторонних кодеков несовместимо с функцией Direct Strem Copy и работает только в режиме Full processing Mode

После всех необходимых мероприятий с нарезкой, чтобы сохранить готовый файл, необходимо выбрать в меню пункт File -> Export -> Using External Encoder и выбрать предустановку. Меня интересовала на тот момент связка mpeg4 + ac3, как по волшебству, получил желаемый MP4 файл.

К слову, если изучить файл с предустановками и почитать про возможности FFmpeg, можно добавить свои предустановки в файлик сторонних экспортёров.

Благодарю за внимание!

Добавить комментарий

Включите изображения, чтобы увидеть вопрос *