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