카메라 및 마이크의 GStreamer를 사용하여 오디오 및 비디오를 하나의 파일로 저장


0

카메라의 비디오와 마이크의 오디오를 동시에 기록하여 하나의 파일로 저장하는 방법이 필요합니다.

현재 비디오 녹화 방법은 ...

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

내가 말했듯이 이것은 비디오를 기록하지만 오디오는 기록하지 않지만 오디오를 기록하려면 약간 조정해야한다고 생각합니다.



@ music2myer 비디오와 오디오를 따로 녹음 한 다음 연결해야합니까? 한 번에 동일한 파일에 저장할 수는 없습니다 (녹음 중)?
Hanlon

gstreamer의 기능을 모르지만 연결된 질문에 대한 답변은 gst-launch에 대한 문서를 읽는 것이 좋습니다.이 기능은 concat 기능을 제공하면서도 실시간 오디오 및 비디오 캡처를 제공 할 수 있다고 가정합니다. 아래에서 알아 낸 답. 당신이 그것을 모두 작동시킬 수있어서 다행입니다.
music2myear

답변:


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. 의 비디오 피드 가 변환 된 위치 queuevideoconvert이동합니다 (이 단계가 필요한지 확실하지 않습니다).
  4. 마지막으로 비디오 피드는 mkv유형의 요소 인 으로 이동합니다 matroskamux. 이 요소는 비디오 피드를 Matroska로 변환합니다.
  5. 그런 다음을 사용하여 오디오 피드를 얻습니다 autoaudiosrc.
  6. autoaudiosrc사용하여 다른 스레드에서 피드를 배치 queue합니다.
  7. queue오디오 에서 오디오가 audioconvert변환되는 위치 로 이동합니다 (필요한 경우 확실하지 않음).
  8. 변환 된 오디오는 동일한 matroskamux요소로 이동 mkv합니다. 여기서 오디오 피드는 Matroska로 변환됩니다.
  9. 오디오 및 비디오 피드는 모두 동일한 요소로 이동하므로 하나의 Matroska 피드로 병합됩니다.
  10. 마지막으로 Matroska 피드는를 사용하여 파일에 저장됩니다 filesink. sync=false컴퓨터가 짐승이 아닌 경우 설정해야 할 것입니다 .

그게 다야. 또한 누군가이 명령으로 오디오를 녹음하지 않는다는 질문에 왜 글을 쓰는지 궁금하다면 마이크를 켜는 것을 잊었 기 때문입니다.


안녕. 파이썬 gstreammer 내에서 명령을 사용하고 있지만 일부 오디오 / 비디오 src를 파이프 라인 insteqad autovideosrc에 연결하면 작동하지 않습니다. 이것을 위해 파이썬을 사용한 적이 있습니까?
DGoiko

@DGoiko 안녕하세요! 나는 파이썬을 사용하여 시도하지 않았지만 C로 시도했지만 효과가있었습니다.
Hanlon

: 나는 (이 유사 tomething appsrc에 연결되어있어 github.com/streamlink/streamlink/blob/master/examples/... ,하지만 playbin 및 일부 사용자 지정 쓰레기통 대신 uridecodebin 사용 기록에 파이프 라인을 기반으로 하나를 포함 ) 시작시 중지됩니다. 플레이어 자체는 괜찮습니다 : 대기열이있는 오디오 및 비디오 티를 autoaudiosrc + autovideosrc + flac 오디오 녹음에 연결하면 모든 것이 잘 작동하지만 비디오 대기열을 넣으면 처음에 멈 춥니 다. 디버그 3은 아무 것도 보여주지 않습니다 ... 이상합니다.
DGoiko

코드를 게시 할 수 있습니까? 새 질문을 열 수도 있지만 Pastebin으로 코드를 복사해도됩니다. 나에게 여기에 링크를 제공하십시오.
Hanlon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.