FFMPEG - ffmpeg가 실행되는 동안 들어오는 스트림의 오디오를 음소거하거나 음소거 해제합니다.

FFMPEG - ffmpeg가 실행되는 동안 들어오는 스트림의 오디오를 음소거하거나 음소거 해제합니다.

다음 문제가 발생했습니다.

ffmpeg가 실행되는 동안 ffmpeg 스트림에서 오디오를 음소거 및 음소거 해제할 수 있기를 원합니다. 나는 지금 한동안 검색을 하고 있었고 당신이 그것을 어떻게 할 것인지 궁금했습니다. 인터넷에서 많은 내용을 읽었지만 검색한 문제를 찾지 못했습니다.

이제 sendcmd 또는 zmq 필터를 사용하여 이를 수행할 수 있다는 사실만 알고 있지만 이에 대한 ffmpeg API로는 더 이상 도움이 되지 않습니다.

아무도 나에게 어떻게하는지 설명해 줄 수 있습니까? 내가 올바르게 이해했다면 sendcmd또는 필터를 통해 실행 중인 프로그램에 필터 매개변수를 삽입해야 합니다 zmq.

ffmpeg를 시작하기 위해 내가 가지고 있는 것은 다음과 같습니다 .bat.

start cmd /K ffmpeg -i "rtsp://[IPADRESS]" -b:v 6000K -minrate 6000K -maxrate 6000K -vcodec copy -acodec copy -f flv rtmp://[IPADRESS]

답변1

대화식으로 오디오를 음소거 및 음소거 해제하려면 다음을 사용할 수 있습니다.azmq다음으로 필터링용량필터.

대화형 명령을 사용하려면 이라는 도구가 필요합니다 zmqsend. Windows 버전은 다음에서
다운로드할 수 있습니다 .ffmpeg-tools.zip여기. (테스트를 위해 ffmpeg.exe와 동일한 폴더에 도구를 추출했습니다.)


-af "azmq,volume@my=volume=1"FFmpeg 명령에 다음 오디오 필터를 추가합니다 .

  • volume@my볼륨 필터에 "대화형 이름"을 사용합니다.
  • azmq뒤에 오는 오디오 필터에 대한 대화형 명령 azmq( volume필터에 대한 대화형 명령)을 허용하려면 필요합니다.

다음은 FFplay를 실행하고 FFmpeg RTMP 스트림을 수신하는 배치 파일입니다.

start ffplay -listen 1 -timeout 10000 -f flv rtmp://127.0.0.1:5000/mystream/test
ping 127.0.0.1 -n 6 > nul
start ffmpeg -y -re -f lavfi -i testsrc=duration=25000:size=192x108:rate=25 -f lavfi -i sine=frequency=500 -af "azmq,volume@my=volume=1" -vcodec libx264 -tune zerolatency -crf 17 -pix_fmt yuv420p -f flv rtmp://127.0.0.1:5000/mystream/test

위 명령은 테스트용으로 합성 오디오 및 비디오를 스트리밍합니다.

ping명령은 FFmpeg를 시작하기 전에 몇 초 동안 기다리는 데 사용됩니다.
ffmpeg.exe 및 zmqsend.exe와 동일한 폴더에 배치 파일을 배치할 수 있습니다.


배치파일을 실행해 보세요...

오디오를 음소거하려면 콘솔에서 다음을 실행하세요.

echo volume@my volume 0 | zmqsend

오디오 음소거를 해제하려면 다음을 실행하세요.

echo volume@my volume 1 | zmqsend

다른 방법이 있을 수 있지만 대화형 명령 주제는 잘 문서화되어 있지 않습니다.

관련 정보