나는 이것을하기 위해 ffmpeg를 사용하고 있습니다 ...
nohup ffplay -reorder_queue_size 0 -nostats -i /tmp/stl-app/stream.sdp -protocol_whitelist "file,http,https,tcp,tls,udp,rtp" -nodisp -af astats=metadata=1:reset=1,ametadata=print:key=lavfi.astats.Overall.RMS_level &> /tmp/stl-app/stream-stats.log &
내가 가진 문제는 100M의 여유 공간이 설정된 tmpfs 드라이브가 있다는 것입니다. 약 90분 후에는 이 공간이 모두 사용됩니다. stream-stats.log에 빈 파일을 에코하고 삭제해 보았습니다. 하지만 FFMPEG가 파일을 쓰는 방식 때문에 삭제하면 파일에 다시 쓰지 않습니다. x분마다 파일을 지우거나 최소한 계속해서 읽을 수 있는 관리 가능한 크기로 제한하는 방법이 필요합니다.
실제로는 매초마다 한 번씩만 업데이트하면 되며 분명히 파일을 보관할 필요는 없습니다. 이 문제를 처리하는 올바른 방법은 무엇입니까?
업데이트 @gyan의 권장 사항에 따라 /tmp/stl-app/icecaststats에 파이프를 만들고 다음과 같이 명령을 다시 실행했습니다.
nohup ffplay -reorder_queue_size 0 -nostats -i /tmp/stl-app/stream.sdp -protocol_whitelist "file,http,https,tcp,tls,udp,rtp" -nodisp -af astats=metadata=1:reset=1,ametadata=print:key=lavfi.astats.Overall.RMS_level > /tmp/stl-app/icecaststats &
그런데 무슨 이유에서인지 거기에 데이터가 전혀 없나요?
답변1
그래서 나에게 효과적인 해결책은 -af 플래그를 업데이트하는 것입니다.
ffplay -autoexit -nodisp -f mp3 -i $ICECASTURL -af asetnsamples=44100,astats=metadata=1:reset=1,ametadata=print:key=lavfi.astats.Overall.RMS_level
asetnsamples를 설정하면 ffplay에서 원하는 샘플 크기를 알 수 있습니다. 오디오를 44100Hz에서 실행하고 있으므로 샘플 크기를 해당 주파수로 설정하여 매초 업데이트되도록 합니다. 로그인 파일 크기가 대폭 줄었습니다.