FFMPEG를 사용한 라이브 오디오 스트림


14

ffmpeg외부 USB 마이크를 사용하여 라이브 오디오를 스트리밍하려고합니다 . 나는이 튜토리얼을 거의 따랐다.

몇 가지 단계를 조정해야했지만 마침내이 명령을 사용하여 랩톱 스트림을 수신했습니다.

ffmpeg -f oss -i /dev/dsp1 -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://192.168.28.116:1234

CPU가 100 %에 가까워서 2 초 동안 나쁜 소리가 나고 아무 것도 없습니다 ... Wireshark에서 보드가 지속적으로 프레임을 보내는 것을 봅니다.

CPU 사용량을 줄이려는 사람이 있습니까?


오버 클로킹 및 다른 메모리 분할을 살펴볼 수 있습니다. 코덱을 선택할 수 있으면 전환하여 약간의 향상을 달성 할 수 있습니다. 스트림의 압축을 조사하고 싶을 수도 있습니다 (이것은 제로 이득 일 수도 있음). 전송 시간에서 얻은 모든 것이 압축에서 손실 될 수 있습니다.
Steve Robillard

로컬 파일에 먼저 쓰려고 했습니까? 1) 웨이브 파일로 실시간 기록, 2) mp3 파일로 실시간 기록 3) 네트워크를 통한 스트리밍 스트리밍
pixelistik

지금은 아닙니다. 완전 자동 ffmpeg 대신 수동으로 모든 단계를 수행하는 것이 복잡해 보입니다. ;-)
hotips

무엇을 녹음하고 있습니까?
Alex Chamberlain

1
이더넷 베이비 폰을 만들려고합니다
hotips

답변:


7

특정 질문에 대답하기 위해 레코드를 ffmpeg로 파이프하여 CPU를 줄일 수 있습니다.

arecord -f cd -D plughw:1,0 | ffmpeg -i - -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://234.5.5.5:1234

plughw : 1,0을 특정 사운드 카드로 교체해야합니다. 정보는 arecord -l을 참조하십시오. 내 Rasp Pi에서는 ~ 95 % CPU에서 ~ 35 %로 변경되었습니다.


6

ALSA 입력

대안은 ALSA를 이용하는 것입니다. 위와 비슷한 명령은

ffmpeg -ac 1 -f alsa -i hw:0,0 -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://localhost:1234

이것이 CPU 사용량에 어떤 영향을 미치는지 잘 모르겠습니다.


ffmpeg -ac 1 -f alsa -i hw : 1,0 -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp : //192.168.1.116 : 1234 그러나 ffmpeg는 몇 초 후에 충돌합니다. 0x7a1510] ALSA 버퍼 xrun. 다른 아이디어?
hotips

나는 ffmpeg -f oss -i / dev / dsp1 -ab 32k -ac 1 -re -f rtp rtp : //192.168.28.116 : 1234를 테스트했지만 소리는 매우 나쁘다 ... 지연 시간은 약 6 초입니다. 더 나은 솔루션을 가질 생각이 있습니까?
hotips

1
@ si2w mp3의 32k는 약간의 농담이라고 생각합니다. 그것을 위로하거나 다른 코덱을 사용해보십시오. 전화 기용으로 설계된 G2xx 시리즈 중 하나
Alex Chamberlain

3

이것은 작동하고 CPU 사용량을 줄입니다.

ffmpeg -f alsa -i default:CARD=U0x46d0x819 -acodec mp2 -ac 1 -re -f rtp rtp://234.5.5.5:1234 2> /tmp/mylog.log &

default : CARD = U0x46d0x819를 마이크 ID (record -l에서 획득)로 바꾸거나 cad를 지정해야합니다 -i hw:0,0 (또는 장치)을 지정하십시오.

나는 mp3 인코딩이 CPU 전력의 90 % 이상을 차지하고 오디오를 따라 잡을 수 없다는 비슷한 문제가 있었으므로 mp2 인코딩으로 변경했습니다. 이것은 약 15-18 %의 CPU를 사용 top했고 (vi 측정 ) LAN에서 VLC로 부드럽게 스트리밍됩니다. 완벽한 베이비 모니터 또는 무엇이든 만들 것입니다. VLC 측의 버퍼링 인 1 초 정도의 지연이 있습니다.

참고 : ip 주소는 멀티 캐스트 주소 ([224-239] .xyz)입니다. LAN의 특정 네트워크 장치를 대상으로하지 않아도되며 광대역 라우터는 기본적으로 트래픽을 로컬로 유지합니다.


2

당신은 크게 (입력 장치의 오디오 샘플 레이트를 감소시킴으로써 CPU의 부하를 줄일 수있다 -ar 8000 전에 -f alsa 128K로 오디오 코덱 비트 레이트)를 설정하고 ( -b:a 128k). 또한 아이러니하게 채널 수 ( -ac 1)를 줄이면 CPU 부하가 증가하는 것처럼 보였으 므로이 명령은 매우 낮은 CPU에서 실행됩니다.

ffmpeg -ar 8000 -f alsa -i hw:0 -acodec mp2 -b:a 128k -f rtp rtp://other:4444

기억해야 할 것은 사용하려는 캡처 하드웨어의 기능과 ffmpeg / avconv의 버전에 달려 있다는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.