Truyền video từ máy ảnh Android đến máy chủ


286

Tôi đã thấy nhiều thông tin về cách truyền phát video từ máy chủ sang thiết bị Android, nhưng không nhiều về cách khác, ala Qik. Ai đó có thể chỉ cho tôi đi đúng hướng ở đây, hoặc cho tôi một lời khuyên về cách tiếp cận này?


9
Tôi cũng muốn thấy một câu trả lời cho điều này. Bạn đã nghĩ ra cái gì chưa?
Jeremy White

Không, đã từ bỏ trực tuyến. Chỉ cần đánh bại API MediaRecorder để gửi là đủ khó khăn. Bạn có thể kiểm tra mã sipdroid mặc dù, họ dường như đã làm cho nó hoạt động.
JCL

Mã video không có trong nguồn Sipdroid trực tuyến mặc dù :(
Donal Rafferty

1
Bạn có thể xem xét ffserver một thành phần trong ffmpeg.
Vinay

1
Tôi có một câu hỏi liên quan đến câu hỏi này có thể khiến bạn quan tâm. Đó là về việc đẩy luồng video lên hơn 3g sau khi bạn đã quay video và hoàn thành phần chứa. bit.ly/vYpWGy
michael

Câu trả lời:


123

Tôi đã lưu trữ một dự án nguồn mở để cho phép điện thoại Android thành camera IP:

http://code.google.com.vn/p/ipcamera-for-android

Dữ liệu video thô được lấy từ LocalSocket và MDAT MOOV của MP4 đã được kiểm tra trước khi phát trực tuyến. Video trực tiếp được đóng gói ở định dạng FLV và có thể được phát qua trình phát video Flash với bản dựng trong máy chủ web :)


26
Nhấp vào nút "Nguồn". Ngoài ra, bất cứ ai đánh giá thấp anh chàng này là một công cụ.
Nicholi

3
Nó mang lại cho tôi Lỗi .. như, java.lang.UnsatisfiedLinkError: Không thể tải teaonly: findL Library trả về null .. Nếu ai có giải pháp thì hãy chia sẻ nó. Cảm ơn
anddev

1
@mpp: Ứng dụng có mã NDK. Bạn có thể tự biên dịch nó hoặc lấy các tệp .so ra khỏi apk trong dự án Google Code đó trong phần "Tải xuống".
Turnsole

1
Tôi cũng đang gặp lỗi java.lang.UnsatisfiedLinkError. Vui lòng đề cập ngắn gọn các bước để loại bỏ lỗi đó.

1
Đối với những người không hiểu về UnsatiediedLinkError: bạn phải xây dựng mã C bằng NDK. Đơn giản chỉ cần đặt, chạy ndk-build. Để biết thêm thông tin, đọc tài liệu NDK .
Paul Lammertsma

70

Mất một thời gian, nhưng cuối cùng tôi cũng có thể tạo ra một ứng dụng làm được điều đó. Kiểm tra trang mã google nếu bạn quan tâm: http://code.google.com.vn/p/spydroid-ipcamera/ Tôi đã thêm vô số ý kiến ​​trong mã của mình (chủ yếu, nhìn vào CameraStreamer.java), vì vậy nó nên khá tự giải thích. Phần khó thực sự là để hiểu RFC 3984 và thực hiện một thuật toán thích hợp cho quá trình đóng gói. (Thuật toán này thực sự biến luồng mpeg4 / h.264 do MediaRecorder tạo ra thành luồng rtp đẹp, theo rfc)

Tạm biệt


2
Cảm ơn rất nhiều! Hiện tại tôi không thể làm cho nó hoạt động tốt với h264 .. và tôi không thể thay đổi nó thành h263 (tôi không biết làm thế nào để làm điều đó). Dù sao, cảm ơn người đàn ông!
Yote

1
Tôi đang sử dụng tương tự nhưng khi phát trực tuyến trên Android với rtsp, nó nói rằng Video không thể phát được. Tôi đang sử dụng VideoView. Bạn có thể vui lòng giúp đỡ?
Rohit Mandiwal

1
Hoạt động rất tốt (cho đến nay!) Tôi đang sử dụng nó để truyền phát video từ Glass (sau một chút công việc / chỉnh sửa / tìm hiểu), nhưng cho đến nay tôi chỉ có thể kết nối nó từ trình duyệt dựa trên Windows (Chrome) với plugin vlc. VLC trên Android / iPad hoặc bất kỳ trình phát rtsp nào khác sẽ không nhận được luồng (một trong số chúng trông có vẻ tốt, nhưng đã cố lấy luồng dựa trên tên thiết bị, mã này trả về 0 và do đó không thể truy cập được). Tuy nhiên, nhận được kết quả sau một ngày mã hóa nhờ vào bạn, vì vậy kudos!
MacD

@MacD Bạn có sử dụng mã spydroid-ipcamera (tất cả dự án hoặc chỉ một số lớp không? Bạn có thể cho tôi biết không?) Hoặc thư viện này github.com/fyhertz/libstreaming để phát trực tuyến trong Google Glass? Cảm ơn rất nhiều!!
Bae

Xin chào, bạn có thể giải thích cách triển khai dự án này trong studio android Tôi không thể thực hiện được
utdev

24

Tôi cũng đang xem xét vấn đề này và trong khi tôi không có giải pháp tốt cho bạn, tôi đã quản lý để đào mã video của SIPDroid:

http://code.google.com.vn/p/sipdroid/source/browse/trunk/src/org/sipdroid/sipua/ui/VideoCamera.java


Những gì họ đã làm ở đó là họ truyền phát bằng các gói RTP đến một máy chủ. Bây giờ câu hỏi là những gì đang được thực hiện trên máy chủ? Mã hóa là gì và nó được truyền phát như thế nào
Azlam

Không .. Tôi đã không sử dụng Cách tiếp cận SIPDroid, nó quá phức tạp .. Sau đó tôi đã làm một cái gì đó với Máy chủ MJPEGServer
Azlam

19

Tôi đã xây dựng một SDK nguồn mở được gọi là Kickflip để biến video phát trực tiếp từ Android thành một trải nghiệm không đau.

SDK thể hiện việc sử dụng API MediaCodec của Android 4.3 để chuyển trực tiếp các gói của bộ mã hóa phần cứng thiết bị sang FFmpeg cho RTMP (với librtmp) hoặc HLS trực tuyến của H.264 / AAC. Nó cũng cho thấy Hiệu ứng OpenGL thời gian thực (chuẩn độ, phím màu, mờ dần) và ghi nền.

Cảm ơn SO, và đặc biệt, fadden .


nó có thể truyền phát đến bất kỳ máy khách nào có khả năng HLS (không chỉ đến máy chủ của bạn) không?
4

4
@dbro Tôi cố gắng tìm hiểu về dịch vụ của bạn, nhưng bạn yêu cầu thông tin đăng nhập của tôi trước khi tôi có thể thấy giá của bạn. Như thể các bạn đang thu thập địa chỉ email. Nếu đó không phải là ý định của bạn, bạn nên cung cấp thông tin về giá: giống như cách Parse và App Engine và nhiều thứ khác đã làm.
người học

Có thể cho một máy quay video để gửi video đến Kickflip sau đó nó chuyển sang điện thoại Android? Nếu es loại Máy quay video nào phù hợp cho việc này
Lutaaya Huzaifah Idris

11

Dưới đây là bài viết đầy đủ về truyền phát video camera android đến một trang web.

Truyền phát trực tiếp video từ máy ảnh Android sang trang web

  1. Sử dụng libuxing trên ứng dụng Android
  2. Về phía máy chủ Wowza Media Engine được sử dụng để giải mã luồng video
  3. Cuối cùng, jWplayer được sử dụng để phát video trên trang web.

Điều này sử dụng các thành phần nguồn đóng. Bất kỳ sự thay thế nguồn mở nào?
Raj

Bạn có thể sử dụng JavaCV cho việc này. Tôi đã sử dụng nó trong dự án của mình để truyền phát trực tiếp từ thiết bị Android sang máy chủ phương tiện wowza, bạn cũng có thể sử dụng github.com/begeekmyfriend/yasea
Chinthaka Devinda 27/1/2017

libs phát trực tuyến miễn phí?
Akrramo

chúng ta có thể sử dụng thiết bị card âm thanh làm nguồn âm thanh đầu vào chứ không phải mic trong quá trình truyền phát.
dùng2980181

5

Tôi có thể gửi video camera trực tiếp từ điện thoại di động đến máy chủ của mình. Sử dụng liên kết này xem liên kết

Tham khảo link.there ở trên là một ứng dụng mẫu trong liên kết đó. Chỉ cần bạn đặt url dịch vụ của bạn trong RecordActivity. Class.

Ví dụ như: ffmpeg_link = "rtmp: // mineerveripaddress: 1935 / live / venkat";

chúng tôi có thể gửi video loại H263 và H264 bằng liên kết đó.


Tôi đã sử dụng mã bằng liên kết trên, nhưng thậm chí không thể bắt đầu ghi. nhận được một ngoại lệ "Không có video để phát trực tuyến". Bạn có bất cứ ý tưởng liên quan đến điều này?
Akhilesh Sk

@AkhileshSk bằng cách sử dụng đoạn mã trên, bạn có thể gửi video trực tiếp qua url rtmp đến máy chủ của mình. nó không dành cho mục đích ghi âm Nếu bạn muốn quay video bạn cần ghi lại ở phía máy chủ.
Venkat

Xin chào @ Venkat có thể gửi video trực tiếp từ Máy ảnh sang điện thoại Android, bạn có một số liên kết mã, như sử dụng Youtube trực tiếp không
Lutaaya Huzaifah Idris

@LutaayaHuzaifahIdris có thể. Tôi đã làm việc trước đây về điều này.
Venkat

Xin chào @Venkat, bạn có thể giúp tôi không, không thể tìm thấy tệp
RecordActivity. Class


1

Kiểm tra thư viện Yasea

Yasea là một ứng dụng phát trực tuyến Android. Nó mã hóa dữ liệu YUV và PCM từ máy ảnh và micrô sang H.264 / AAC, được gói gọn trong FLV và truyền qua RTMP.

Đặc tính:

  1. API mini Android 16.
  2. Mã hóa cứng H.264 / AAC.
  3. Mã hóa mềm H.264.
  4. Truyền trực tuyến RTMP với trình xử lý gọi lại trạng thái.
  5. Chân dung và phong cảnh hướng động.
  6. Camera trước và sau công tắc nóng.
  7. Ghi vào MP4 trong khi truyền phát.

0

Mux (công ty của tôi) có một ứng dụng Android mã nguồn mở RTMP đến máy chủ, bao gồm thiết lập máy ảnh và tương tác người dùng. Nó được xây dựng để truyền phát trực tiếp tới API phát trực tiếp của Mux nhưng có thể dễ dàng truyền phát đến bất kỳ điểm truy cập RTMP nào.


-7

Tùy thuộc vào ngân sách của bạn, bạn có thể sử dụng Máy ảnh Raspberry Pi có thể gửi hình ảnh đến máy chủ. Tôi thêm vào đây hai hướng dẫn nơi bạn có thể tìm thấy nhiều chi tiết hơn:

Hướng dẫn này chỉ cho bạn cách sử dụng Camera Raspberry Pi và hiển thị hình ảnh trên thiết bị Android

Đây là hướng dẫn thứ hai nơi bạn có thể tìm thấy một loạt hướng dẫn về truyền phát video thời gian thực giữa máy ảnh và thiết bị Android


ra khỏi bối cảnh
Vikas Kandari
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.