Мне нужен способ записи видео с камеры и звука с микрофона одновременно, чтобы они сохранялись в одном файле.

В настоящее время я сейчас, как для записи видео ...

gst-launch-1.0 -e autovideosrc ! videoconvert ! matroskamux ! filesink location=recording.mkv

и аудио ...

gst-launch-1.0 -e autoaudiosrc ! audioconvert ! wavenc ! filesink location=recording.wav

...по отдельности.

Что мне нужно, это файл, который содержит видео с recording.mkv и аудио с recording.wav .


Я нашел что-то, что может работать, если немного подправить.
gst-launch-1.0 -e autovideosrc ! queue ! videoconvert ! mkv. autoaudiosrc ! queue ! audioconvert ! mkv. matroskamux name=mkv ! filesink location=test.mkv sync=false

Он записывает видео, но не аудио, хотя, как я уже сказал, я думаю, что для записи аудио нужно просто немного его настроить.

1 ответ1

1

Вот:

gst-launch-1.0 -e autovideosrc ! queue ! videoconvert ! mkv. autoaudiosrc ! queue ! audioconvert ! mkv. matroskamux name=mkv ! filesink location=test.mkv sync=false

Вот как это работает:

  1. Мы получаем видео с веб-камеры, используя autovideosrc .
  2. Затем мы помещаем этот канал в его собственный поток, выводя его в queue .
  3. Видеопоток из queue идет в videoconvert где он конвертируется (я не уверен, что этот шаг необходим).
  4. Наконец, видео поток переходит в элемент с именем mkv , который имеет тип matroskamux . Этот элемент преобразует видео канал в Matroska.
  5. После этого мы получаем аудио канал с помощью autoaudiosrc .
  6. Мы помещаем канал из autoaudiosrc в другой поток, используя queue .
  7. Из queue аудио идет в audioconvert где оно преобразуется (также не уверен, если это необходимо).
  8. Преобразованный звук идет на тот же элемент matroskamux mkv . Здесь аудио канал преобразуется в Matroska.
  9. Поскольку аудио- и видеопотоки идут к одному и тому же элементу, они объединяются в один канал Matroska.
  10. Наконец, этот канал Matroska сохраняется в файл с помощью filesink . Возможно, вам придется установить sync=false если ваш компьютер не зверь.

Вот и все. Кроме того, если кому-то интересно, почему я написал в вопросе, что эта команда не записывает звук, это потому, что я забыл включить микрофон.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .