Я пытаюсь конвертировать видео из .raw в .mp4. По этой причине я скачал, собрал и установил x264 и ffmpeg. Тем не менее, команда:
ffmpeg -f h264 -i output.raw -vcodec copy output.mp4
не удается с ошибкой (показано на рисунке ниже). Есть ли способ это исправить?
Команды, которые я также запускаю:
1
root@beagleboard:/# v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : MJPEG
2
root@beagleboard:/dev# v4l2-ctl --set-fmt-video=pixelformat=0
ffmpeg -i output.raw
если вы пытаетесь конвертироватьoutput.raw
. Также, если вы попробуете,ffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4
что такое вывод консоли?output.raw
и как вы его создали?./capture -f -c 100 -o > output.raw
. capture.c скачано с: linuxtv.org/downloads/v4l-dvb-apis/capture-example.html .Ответы:
Ваш ввод просто не является потоком h264, но вы говорите ffmpeg, что он один.
Вы должны сообщить ffmpeg, что это на самом деле: поток v4l2 в формате mjpeg или yuyv (в зависимости от того, какой формат был установлен вашей камерой на момент съемки, из двух перечисленных
v4l2-ctl --list-formats
). Если вы хотите, чтобы ffmpeg транскодировал его в h264, вам также нужно сообщить об этом.Если входными данными являются необработанные кадры YUYV, вы хотите:
Замените 640x480 и 25 размерами и частотой кадров вашего видео.
Если ввод MJPEG, вы можете просто пропустить,
-f
и ffmpeg должен это выяснить:Кстати, вам не нужен другой инструмент захвата; ffmpeg может записывать с устройств v4l2 просто отлично:
источник