Укороченная версия:
- файлы повреждены, потому что вы прерываете, чтобы завершить кодирование
mp4 , вместо этого переключитесь на что-то вроде mkv .
- 'не поврежден' путем смещения формата в другой контейнер
ffmpeg -i corrupt.mp4 -c copy not_corrupt.mkv
- не используйте
vfwcap как он устарел
Почему у меня возникают проблемы с записью с моей веб-камеры USB с помощью ffmpeg?
Из документации ffmpeg на vfwcap:
Примечание. Это устарело, в наши дни вы можете использовать устройство -f dshow для записи с устройства DirectShow.
Поскольку он устарел, используйте вместо него -f dshow . Из документации DirectShow:
FFmpeg может принимать данные от устройств "directshow" на вашем компьютере с Windows. См в FFmpeg DShow документации устройства ввода для официальной документации. Он может принимать входные данные от аудио, видеоустройств, устройств захвата видео, аналоговых устройств ТВ-тюнера.
Из связанной документации по dshow вы должны сначала узнать, что устройство находится под dshow:
ffmpeg.exe -list_devices true -f dshow -i dummy
Пример вывода:
[dshow @ 0000000002e9bb20] DirectShow video devices (some may be both video and audio devices)
[dshow @ 0000000002e9bb20] "PC Camera"
[dshow @ 0000000002e9bb20] Alternative name "@device_pnp_\\?\usb#vid_058f&pid_3880&mi_00#6&218cd81a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
используя "PC Camera" найденную предыдущей командой:
ffmpeg -f dshow -i video="PC Camera" -y output.mkv
(Я бы отступить на использование -rtbufsize изначально, так как есть некоторые оговорки , отмеченные для использования его с dshow devices`)
Я бы предложил использовать mkv вместо mp4 как я предполагаю, что вы не выполняете кодирование с фиксированным временем, а вместо этого завершаете ffmpeg с помощью Ctrl-C ; это препятствует тому, чтобы ffmpeg определенные атомы в контейнер видео и вероятно, почему файл поврежден 1. mkv может быть прерван по желанию 2.
1: Вы можете проверить это путем сдвига формата поврежденных файлов mp4s: ffmpeg -i corrupt.mp4 -c copy not_corrupt.mkv . Если это не сработает, другой ответ на SU от sparrowt рекомендует untrunc
2. Протестировано с использованием ffmpeg version N-72939-g5b0f55a для Windows и случайной дешевой веб-камеры, которую я случайно обнаружил