FFMPEG를 사용한 라이브 오디오 스트림 나는이 튜토리얼을 거의 따랐다. 몇 가지 단계를

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 사용량을 줄이려는 사람이 있습니까?



답변

특정 질문에 대답하기 위해 레코드를 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 %로 변경되었습니다.


답변

ALSA 입력

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

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

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


답변

이것은 작동하고 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의 특정 네트워크 장치를 대상으로하지 않아도되며 광대역 라우터는 기본적으로 트래픽을 로컬로 유지합니다.


답변

당신은 크게 (입력 장치의 오디오 샘플 레이트를 감소시킴으로써 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의 버전에 달려 있다는 것입니다.


답변