VirtualDub MP4 Encoder/Decoder

Category: Прочее
Posted on: 08.06.2020 в 01:52 - 4 комментария - Visited 5149 times

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

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

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

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

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

Скачиваем последнюю версию VirtualDub
Скачиваем FFMpeg Input Plugin (любой на выбор):
Virtualdub FFMpeg Plugin v1.9.0.5 (X86_X64) (я использую этот)
Virtualdub FFMpeg Plugin v2.0.0.0 (X86_X64)

Скачиваем Zeranoe FFmpeg Encoder (разработка прекращена 18 сентября 2020 года, последняя версия за 31 августа 2020 года):

FFmpeg latest (win64)  shared|static
FFmpeg v4.3.1 (win64) shared|static
FFmpeg v4.2.3 (win64) shared|static
FFmpeg v3.4.2 (win64) shared|static

FFmpeg latest (win32)  shared|static
FFmpeg v4.3.1 (win32) shared|static
FFmpeg v4.2.3 (win32) shared|static
FFmpeg v3.4.2 (win32) shared|static

Разница между Общей/Статической заключается в том, что в статической все компоненты включены в один исполняемый файл, который устанавливает всё необходимое. Общие сборки содержат все компоненты и библиотеки отдельно, предназначены для разработчиков. Лично у меня установлена статическая 4.2.3b.

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

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

Устанавливаем Zeranoe 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, можно добавить свои предустановки в файлик сторонних экспортёров.

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

4 комментария on “VirtualDub MP4 Encoder/Decoder”

1
Роман

Отличная статья! сделал все по ней, отлично работает. Хочу поделится дополнительной информацией — https://sourceforge.net/projects/vdfiltermod/files/VirtualDub%20pack/version%2015/ отсюда можно скачать архив VirtualDub с плагинами импорта. Остаётся установить FFmpeg https://sourceforge.net/projects/ffdshow-tryout/ запустить файл из этой статьи и все работает! Спасибо!

14.11.2022 on 15:19
2
Роман

Поправил адрес ссылки на архив https://sourceforge.net/projects/vdfiltermod/files/latest/download

14.11.2022 on 15:22
3
Alexzz

Где взять плагин для импорта в VirtualDub? Ссылка выше в тексе не работает, отсылает на список, в котором нет плагина.

15.05.2023 on 17:48
4
ptipti

Исправлено. Всё ушло в веб архив, перезалил к себе.

15.05.2023 on 20:01

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

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