ffmpeg를 사용하여 Icecast로 비디오를 스트리밍하시겠습니까?

ffmpeg를 사용하여 Icecast로 비디오를 스트리밍하시겠습니까?

ffmpeg 비디오를 icesast로 스트리밍하는 쉬운 방법이 있습니까? 원본 비디오가 video/x-matroska포맷되었습니다. 스트림 자체는 다양한 형식(mpeg, vorbis, aac 등)으로 제공됩니다. ffmpeg가 소스 코드를 자체적으로 추측한 다음 소스 해상도와 종횡비를 유지하면서 브라우저가 "즉시" 재생할 수 있는 모든 코드로 코드 변환하기를 원합니다. video/webm할 것입니다. 나는 이것을 시도했습니다 (출력 형식 사용 포함).

ffmpeg -i source.mkv -vcodec libvpx -cpu-used -5 -deadline realtime -content_type video/webm\
    icecast://source:hackme@localhost:8000/vstream.webm

그러나 스트림이 재생되지 않고 연결로 인해 ffmpeg가 다음 오류와 함께 종료됩니다.

av_interleaved_write_frame(): Connection reset by peer
Error writing trailer of icecast://source:hackme@localhost:8000/vstream.webm: Connection reset by peer

ffmpeg 이외의 것과 관련된 것은 무엇이든 괜찮습니다. 단지 그것이 작동하기를 원합니다.

답변1

이는 달성하기가 매우 어렵거나 불가능하다는 것이 입증되었습니다. 그럼에도 불구하고 nginx(모듈 포함 ) 및 을 rtmp결합하면 유사한 효과를 얻을 수 있습니다 ffmpeg. nginx구성(아마 위치 ) 에서 서버로 작동 /etc/nginx/nginx.conf하려면 다음 섹션을 추가해야 합니다 (rtmp전체 공개 액세스가 가능합니다. 스트림은 암호화되지 않으며 네트워크에 액세스할 수 있는 사람은 누구나 시청할 수 있습니다.):

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;
            allow play all;
        }
    }
}

ffmpeg그런 다음 비디오 파일 스트리밍은 다음을 호출하는 것만큼 간단합니다.

ffmpeg -re -i video_file.mkv -c:v libx264 -f flv rtmp://host:1935/live

마지막으로 스트림을 시청하려는 사람은 누구나 선택한 플레이어를 사용하여 동일한 주소에 연결해야 합니다.

rtmp://host:1935/live

참고: 이는 시작되는 host서버의 호스트 이름 입니다.nginx

답변2

간단히 말해서, Icecast는 비디오 스트리밍 서버가 아닌 오디오 스트리밍 시스템이기 때문에 그럴 수 없습니다.

답변3

obs를 사용하면 훌륭하게 작동하지만 아직 ffmpeg를 사용해 본 적이 없습니다. obs의 장점은 플레이어가 검색을 앞뒤로 제어할 수 있다는 것입니다. 나는 이 가이드를 따랐는데 매우 간단했습니다.

https://www.braillealphabetsoup.com/icecast-video-streaming-with-obs.html

관련 정보