Сохраните аудио и видео в один файл с помощью GStreamer с камеры и микрофона

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

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

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 ответ

Вот:

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 если ваш компьютер не зверь.

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

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