Сохраните аудио и видео в один файл с помощью 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если ваш компьютер не зверь.
Вот и все. Кроме того, если кому-то интересно, почему я написал в вопросе, что эта команда не записывает звук, это потому, что я забыл включить микрофон.