Укороченная версия:
- файлы повреждены, потому что вы прерываете, чтобы завершить кодирование
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 и случайной дешевой веб-камеры, которую я случайно обнаружил