Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Как восстановить поврежденный VOB файл (http://forum.oszone.net/showthread.php?t=350442)

lost8923142 08-01-2022 14:22 2976983

Как восстановить поврежденный VOB файл
 
Как восстановить одновременно несколько поврежденных VOB файлов с помощью FFmpeg и командной строки?

alpap 08-01-2022 17:23 2976997

как делаете для одного?

alpap 09-01-2022 00:13 2977015

исходя из предшествующей темы (за основу взят код предложенный коллегой Iska) можно попробовать такой вариант:
(Я не силен в ffmpeg, но утилита мощная и точно знаю что может работать с массивом, поэтому зная хорошо ее синтаксис вероятно можно обойтись без for и пр., утилита сама справится с разбором из папки и это будет конечно быстрее)
Код:

@echo off
set "foldVOB=C:\folderVOB"
set "ff=Путь к папке\ffmpeg.exe"
set "outFold=C:\outFolder"

if not exist "%outFold%" md "%outFold%"
pushd "%foldVOB%"
  for /f "delims=" %%a in ('dir /a-d/b "*.VOB"') do (
    "%ff%" -i "%%a" -c copy "%outFold%\%%~na.mkv"
  )
popd
pause


lost8923142 09-01-2022 02:17 2977023

Вместо C:\folderVOB указывать папку, а не файл?
То есть в моём случае мне нужно ввести такой код?:
Код:

@echo off
set "foldVOB=C:\Users\Ал\Desktop\Downloads\DVD"
set "ff=C:\Users\Ал\Desktop\1\bin\ffmpeg.exe"
set "outFold=C:\Users\Ал\Desktop"

if not exist "%outFold%" md "%outFold%"
pushd "%foldVOB%"
  for /f "delims=" %%a in ('dir /a-d/b "*.VOB"') do (
    "%ff%" -i "%%a" -c copy "%outFold%\%%~na.mkv"
  )
popd
pause


Iska 09-01-2022 05:56 2977026

lost8923142, да, примерно так.

lost8923142 09-01-2022 06:54 2977027

Не получилось.
Код:

Microsoft Windows [Version 6.3.9600]
(c) Корпорация Майкрософт (Microsoft Corporation), 2013. Все права защищены.

C:\Users\Александр>@echo off
set "foldVOB=C:\Users\Ал\Desktop\Downloads\DVD"
set "ff=C:\Users\Ал\Desktop\1\bin\ffmpeg.exe"
set "outFold=C:\Users\Ал\Desktop"

if not exist "%outFold%" md "%outFold%"
pushd "%foldVOB%"
  for /f "delims=" %%a in ('dir /a-d/b "*.VOB"') do (
Непредвиденное появление: %%a.
    "%ff%" -i "%%a" -c copy "%outFold%\%%~na.mkv"
ffmpeg version 2022-01-03-git-68d0a7e446-essentials_build-www.gyan.dev Copyright
 (c) 2000-2022 the FFmpeg developers
  built with gcc 11.2.0 (Rev5, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32thr
eads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --e
nable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-l
ibsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-l
ibwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enab
le-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable
-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-l
ibzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enabl
e-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-
libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enab
le-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb
--enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      57. 13.100 / 57. 13.100
  libavcodec    59. 15.102 / 59. 15.102
  libavformat    59. 12.100 / 59. 12.100
  libavdevice    59.  1.100 / 59.  1.100
  libavfilter    8. 21.100 /  8. 21.100
  libswscale      6.  1.102 /  6.  1.102
  libswresample  4.  0.100 /  4.  0.100
  libpostproc    56.  0.100 / 56.  0.100
%%a: No such file or directory
  )
popd
pause


Iska 09-01-2022 07:11 2977028

lost8923142, приведённый код нужно было сохранить в виде пакетного файла в кодировке OEM/866, каковой уже и исполнять.

DJ Mogarych 09-01-2022 11:08 2977040

Powershell:
Код:

dir "c:\Users\*.vob" |% {
& ffmpeg -i "$($_.fullname)" -c copy "$($_.DirectoryName)\$($_.Basename).mkv"
}


lost8923142 09-01-2022 11:16 2977041

Цитата:

Цитата Iska
lost8923142, приведённый код нужно было сохранить в виде пакетного файла в кодировке OEM/866, каковой уже и исполнять. »

Можно поподробнее пожалуйста.

Iska 09-01-2022 12:10 2977044

Вложений: 1
lost8923142, возьмите готовый пакетный файл из этого архива: Файл 165970.

lost8923142 09-01-2022 13:37 2977050


Текст файла:
Код:

@echo off
set "foldVOB=C:\Users\Ал\Desktop\Downloads\DVD"
set "ff=C:\Users\Ал\Desktop\1\bin\ffmpeg.exe"
set "outFold=C:\Users\Ал\Desktop"

if not exist "%outFold%" md "%outFold%"
pushd "%foldVOB%"
  for /f "delims=" %%a in ('dir /a-d/b "*.VOB"') do (
    "%ff%" -i "%%a" -c copy "%outFold%\%%~na.mkv"
  )
popd
pause


alpap 09-01-2022 15:30 2977071

после строки
@echo off
вставьте строку
>nul chcp 1251

lost8923142 10-01-2022 00:27 2977116

Цитата:

Цитата alpap
после строки
@echo off
вставьте строку
>nul chcp 1251 »

Да, с этим кодом всё получилось.
Iska и alpap, большое вам спасибо!
Код:

@echo off
>nul chcp 1251
set "foldVOB=C:\Users\Ал\Desktop\Downloads\DVD"
set "ff=C:\Users\Ал\Desktop\1\bin\ffmpeg.exe"
set "outFold=C:\Users\Ал\Desktop"

if not exist "%outFold%" md "%outFold%"
pushd "%foldVOB%"
  for /f "delims=" %%a in ('dir /a-d/b "*.VOB"') do (
    "%ff%" -i "%%a" -c copy "%outFold%\%%~na.mkv"
  )
popd
pause



Время: 23:46.

Время: 23:46.
© OSzone.net 2001-