Сохраните аудио и видео в один файл с помощью 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
Вот как это работает:
- Мы получаем видео с веб-камеры, используя
autovideosrc
, - Затем мы помещаем этот канал в его собственный поток, выводя его в
queue
, - Видеопоток от
queue
идет кvideoconvert
где он конвертируется (я не уверен, что этот шаг необходим). - Наконец, видео канал переходит в элемент с именем
mkv
, который имеет типmatroskamux
, Этот элемент преобразует видео канал в Matroska. - После этого мы получаем аудио канал, используя
autoaudiosrc
, - Мы размещаем корма из
autoaudiosrc
в другой теме с помощьюqueue
, - От
queue
аудио идет вaudioconvert
где он конвертируется (также не уверен, если это необходимо). - Конвертированный звук идет на то же
matroskamux
элементmkv
, Здесь аудио канал преобразуется в Matroska. - Поскольку аудио- и видеопотоки идут к одному и тому же элементу, они объединяются в один канал Matroska.
- Наконец, этот канал Matroska сохраняется в файл с помощью
filesink
, Вам, вероятно, придется установитьsync=false
если ваш компьютер не зверь.
Вот и все. Кроме того, если кому-то интересно, почему я написал в вопросе, что эта команда не записывает звук, это потому, что я забыл включить микрофон.