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

관련 정보