2013-03-14 3 views
2

카메라를 통해 소켓을 통해 라이브 비디오 스트림을 내 컴퓨터로 보내는 안드로이드 앱을 작성했습니다. FFmpeg를 사용하여 MPEG4 비디오 스트림을 디코딩 할 수 있으며 일부는 카메라가 실시간으로보고있는 것을 어떻게 표시합니까? 바이트 스트림에서 가져온 최신 정보로 비트 맵을 만들어 20+ FPS로 컴퓨터에 표시해야한다고 생각합니다.FFmpeg로 비디오 스트림 캡처

어떻게 이런 식으로 할 것입니까? C++, C# 또는 Java가 좋습니다. 내 이해 FFmpeg는 C++로 작성되었습니다

답변

1

먼저 비디오 플레이어를 직접 제작 하시겠습니까, 아니면 스트림을보고 싶습니까? 이미 비디오 스트림이있는 경우 거의 모든 최신 비디오 플레이어가 스트리밍 미디어를 재생할 수 있기 때문입니다. VLC (FFmpeg를 사용)을 사용해보십시오. VLC에서 "Media"-> "Open Network Stream ..."을 클릭하고 URL을 입력하십시오.

둘째, FFmpeg는 C (C99)로 작성됩니다. FFmpeg 자체는 미디어를 변환하는 도구 일뿐입니다. 자신 만의 프로그램을 만들려면 FFmpeg 라이브러리 (libavcodec, libavformat, ect)를 사용할 수 있습니다.

+0

동영상 플레이어를 만들 필요가 없습니다. 스트림을 볼 필요가 있습니다. VLC로 스트림을 읽는 것에 대해 이해하는 것은 비디오 스트림의 맨 위에 구축 된 프로토콜 인 rtp 및/또는 rtsp를 사용한다는 것입니다. 또한 내 휴대 전화에서 4G 인터넷을 사용하는 앱을 실행하고 내 컴퓨터로 스트리밍합니다. vlc 및 rtp가 일반적으로 작동하는 방식을 이해하면 스트림의 원본이 서버입니다. 무선 회사 (AT & T)가 4G 모드에서 실행 중일 때 포트를 차단하므로이 기능이 작동하지 않습니다. –

+0

그래서 libavcodec에는 MPEG4 비디오 스트림을 디코딩하는 데 필요한 코드가 들어 있습니다. 디코딩 된 비디오 스트림이 나에게주는 것은 무엇입니까? 실시간 스트림의 최신 프레임을 볼 수 있습니까? 또한 레코딩을 마친 후에 헤더가 추가되므로 인코딩 된 스트림에 헤더가 없습니다. 그러나 카메라에서이 라이브를 스트리밍하고 있으므로 머리글없이이 작업을 수행 할 수 있어야합니다. 이것이 가능한가? –

+0

예, 가능한 프로토콜 중 하나에서 비디오 스트림을 제공해야합니다. 가장 쉬운 방법입니다. 자신의 소켓 솔루션을 만드는 바퀴를 발명하지 마십시오. 이 프로토콜에는 비디오를 볼 헤더가 있습니다. 또한 libavcodec에는 비디오를 인코딩/디코딩하는 코드 만 들어 있습니다. 그래서 당신은 또한 libavformat과 다른 것을 사용하여 스트림으로부터 읽기와 같은 ffmpeg로부터 다른 라이브러리를 필요로합니다. 따라서 VLC에서 열 수있는 기기에서 적절한 스트림을 얻으십시오. 프로그램에 필요한 모든 ffmpeg 라이브러리가 있기 때문입니다. –