Red5 1.0 최종 버전을 사용하고 있다고 가정합니다.
"스트림 비디오의 형식은 무엇입니까?"라고 대답하는 것으로 시작하겠습니다. Red5는 FLV 비디오 및 MP3 오디오를 스트리밍 할 수 있지만 FLV 만 기록합니다 (이제는 red5가 h264 비디오를 스트리밍 할 수 있음).
테스트를 위해 webcam (...) juste를 대체하는 데 FLV 파일을 사용하는 방법에 대해 물어 보았습니다.이 방법은 좋은 생각이 아니므로 간단한 방법이 있습니다. 그러나 응용 프로그램을 테스트하는 데 도움이되는 manycam.com과 같은 세 번째 소프트웨어를 사용하여 많은 가상 웹캠을 만들 수 있습니다.
하지만 red5 서버에 비디오를 업로드 (실시간으로 게시하지 않음)하고 싶다면 red5 서비스가 없어도 가능합니다. red5는 Tomcat 서버이므로 Java 웹처럼 비디오를 업로드 할 수 있습니다. 응용 프로그램, rtmp를 잊어 버리고 간단한 자바 HTTP 파일 업로드를 사용하면이 비디오를 브로드 캐스트 할 수 있습니다.
해당 FLV를 수신하려면 어떤 종류의 서버 측 코드를 작성해야합니까? 동영상을 스트리밍하면 서버 측에서 생각할 필요가 없습니다. red5/webapps/your_application_name에 응용 프로그램 빈 폴더를 만드십시오.그러나 더 많은 일을해야 할 경우 애플리케이션을 구현해야합니다.
다음은이 작업에 도움이되는 주석 처리 된 코드 모음입니다! RED5 서버에
스트림 웹캠/마이크 :
var nsOut:NetStream; //Out NetStream var cam:Camera; //camera instance var mic:Microphone;//microphone instance //"nc" is a NetConnection instance connected to red5 application. nsOut = new NetStream(nc); //setting the microphone mic = Microphone.getMicrophone(0); mic.codec = SoundCodec.SPEEX; mic.encodeQuality = 4; mic.setUseEchoSuppression(true); //setting the microphone try{ //Create camera instance using Camera.names array to choose the right one! cam = Camera.getCamera(Camera.names[0]); //Camera.names[1] for second camera and so on. //Camera Settings cam.setKeyFrameInterval (15); cam.setMode (240,180,15,false); cam.setMotionLevel (35,3000); cam.setQuality (40000/8,0); }catch(e:Error){ Alert.show("Webcam error!"); } nsOut.attachCamera (cam); // attach camera to NetStream nsOut.attachAudio(mic); //attach microphone to NetStream nsOut.publish ("client_1_stream"); //start streaming //finaly to show outgoing cam video var vid:Video = new Video(160,120); this.addChild (vid); vid.attachCamera(cam);
재생 비디오 스트림 : 이것은 client_1에서 RED5 서버에 웹캠/마이크를 게시 어떻게 exemple 코드 이제 Red5 서버에 NetStream "client_1_stream"이 게시되어 다른 연결된 사용자가 재생할 준비가되었습니다. 그러면 client_2가이 str을 표시하는 방법입니다 EAM :이 어떤 서버 측 코드가 필요하지 않습니다에 대한 지금 당신은 아이디어가
var nsIn:NetStream; //Incoming NetStream nsIn = new NetStream(nc); nsIn.play("client_1_stream"); //finaly to show incoming video var vid:Video = new Video(160,120); this.addChild(vid); vid.attachNetStream(nsIn);
에 대해,/플레이 동영상을 게시 할 수 있습니다.
파일을 red5 서버에 업로드 : java 서블릿을 사용하여 파일을 red5에 업로드하는 것에 대한 좋은 게시물입니다. Upload file to Red5 server
어떻게 같은 FLV 파일 client_1에 의해 업로드 된 를 다운로드 client_2를 스트리밍하려면 알 수 있나요?
우리의 목표는 업로드 된 파일 이름을 client_2로 보내어 재생하는 것입니다. 이를 완료하려면 client_1은 client_2 코드에서 함수를 호출하는 서버 측 함수를 호출해야합니다. client_1 function -- call --> server function -- call --> client_2 function.
클라이언트 측에서는 서버 측에서 견인 기능과 하나의 기능이 필요합니다! fileUploadSuccess()라는 첫 번째 클라이언트 함수는 red5 응용 프로그램 userFileUploded (fileName)에서 함수를 호출합니다.이 함수는 올바른 사용자를 찾고 onFileUploadSuccess (fileName)라는 client_2 함수를 호출합니다. fileUploadSuccess() -- call --> userFileUploded(fileName) -- call --> onFileUploadSuccess(fileName).
이것은 FMS 및 red5 응용 프로그램에서 사용되는 매우 잘 알려진 기술입니다. 많은 도움이 필요하면 많은 예제를 찾을 수 있습니다. 그렇지 않으면 일부 코드를 공유 할 수 있습니다.
red5 sharedObject를 사용하여이 작업을 수행 할 수도 있지만 개인적으로는 첫 번째 해결 방법을 선호합니다.
당신 생각 :
답장을 보내 주셔서 감사합니다. 이것은 정말 도움이됩니다! 내가 가진 한 가지 질문. 일련의 작업 : 웹캠 화면 캡처, Red5로 스트리밍 한 다음 다른 사용자가 읽는 것은 비디오가 서버 측 어디에서나 녹화되는 것입니까? 아니면, client1 스트림이 파일에 client2 스트림에 의해 읽혀지며, 아무 것도 저장되지 않습니다. 서버 측에서 스트리밍하는 웹캠을 녹화하려면 (FLV 파일로 저장하기 위해) 어떤 코드를 작성해야합니까? – kajarigd
클라이언트 측에서는 비디오 게시를 시작할 때 다음과 같이해야합니다. nsOut.publish ("client_1_stream", "record"); – Gouba