Запись и отображение аудио и видео Kinect через avconv

Я пытаюсь записать аудио и видео с Kinect, используя avconv, но у меня, похоже, возникают проблемы с выбором правильных опций.

avconv -f video4linux2 -video_size 640x480 -c:v h264 -c:a ac3 -i /dev/video1 test.mp4

приводит к:

avconv: /build/buildd/libav-extra-0.8.3ubuntu0.12.04.1/libav/libavutil/mathematics.c:79: av_rescale_rnd: Assertion `c > 0' failed.
Aborted (core dumped)

Сыр совершенно счастлив, записывая аудио и видео с Kinect, так что это не проблема установки. Для дополнительного удовольствия мне также нужно показывать видео одновременно.

2
задан 12 July 2012 в 16:26

2 ответа

Я не смог заставить работать описанный выше метод, но мне удалось заставить работать стример.

streamer -q -c /dev/video0 -f rgb24 -r 3 -t 00:30:00 -o ~/outfile.avi

Я также играю с Kinect. У меня еще нет звука.

0
ответ дан 12 July 2012 в 16:26

Правильное использование avconv:

avconv [global options] [input options] -i input [output options] output

Вы ставите все параметры перед вводом, поэтому avconv рассматривает их как параметры ввода. Это было бы лучше:

avconv -f video4linux2 -i /dev/video1 -s 640x480 -c:v libx264 -c:a ac3 test.mp4

Настройки по умолчанию могут быть не идеальными для вас; для libx264 вы можете установить значение -crf (от 0 до 51, 23 по умолчанию, 18-28 - нормальный диапазон для использования, ниже = лучшее качество, но файл большего размера) и -preset (я обычно использую очень быстро) , Для получения дополнительной информации смотрите здесь . Обычно я бы рекомендовал использовать кодирование VBR для звука, но я не знаю, что такое кодирование AC3, поэтому вам, возможно, придется использовать фиксированный битрейт (-b: для стереозвука, вероятно, подойдет 192k).

Кроме того, изменение размера видео может не потребоваться, используйте только -s 640x480, если вам нужно уменьшить больший вход до этого размера.

Что касается просмотра во время записи, я могу придумать два решения. Во-первых, просто откройте файл, который вы создаете, с помощью предпочитаемого программного обеспечения видеоплеера. Это будет означать небольшую задержку в просмотре.

Второе решение состоит в том, чтобы отправить второй вывод из avconv в stdout, а затем использовать перенаправление ввода / вывода для ввода информации в видеопроигрыватель. Это будет быстрее, но это займет примерно вдвое большую вычислительную мощность, поскольку в существующем состоянии avconv может сделать это только путем повторного кодирования (это может измениться в будущем).

avconv -f video4linux2 -i /dev/video1 -s 640x480 -c:v libx264 -c:a ac3 test.mp4 \
-s 640x480 -c:v libx264 -c:a ac3 -f mp4 - | vlc -

Я использую VLC в качестве примера, но все известные мне видеоплееры linux могут это делать. Так как avconv обычно определяет, какой формат контейнера использовать из расширения файла, но - (stdout) не имеет его, вы должны объявить формат контейнера с помощью -f mp4.

0
ответ дан 12 July 2012 в 16:26

Другие вопросы по тегам:

Похожие вопросы: