2009-12-29 14 views
15

Tôi muốn sử dụng Flash để thu hút video từ webcam của người dùng và sau đó lưu video đó trên cùng một máy chủ lưu trữ tệp Flash. Máy chủ web sẽ chạy công nghệ ASP.Net. Có vẻ dễ dàng, phải không?Lưu video được chụp từ webcam bằng Flash

Nhiều tìm kiếm mang lại cùng một dòng mã để bắt đầu chụp webcam bằng Flash. Tôi không thể tìm thấy bất cứ thứ gì gửi video đã quay trở lại máy chủ đó.

Tôi có thể tìm thấy nhiều bài đăng trên blog và diễn đàn ngụ ý rằng phần mềm của bên thứ ba hoặc Máy chủ truyền thông Flash là bắt buộc để thu thập trên máy chủ nhưng tôi không hiểu tại sao.

Có vẻ như Flash phải có khả năng quay một số video và gửi nó dưới dạng một bài đăng HTTP đến cùng một máy chủ lưu trữ tệp Flash. Đó là chức năng Flash/webcam khá cơ bản, phải không? Có vẻ như chúng tôi không cần phải giới thiệu các phụ thuộc bên thứ 3.

Có ai biết các dòng mã mẫu ActionScript bổ sung này có thể ẩn ở đâu không?

Trả lời

15

Bạn cần một Flash Media Server (hoặc một giải pháp thay thế mã nguồn mở như Red5) để có thể stream video từ máy khách đến máy chủ, về cơ bản những gì bạn muốn làm ở đây. Không có cách nào để làm điều đó bằng cách sử dụng HTTP POST.

Tuy nhiên, bạn có thể vẽ đối tượng hiển thị video của mình vào bitmap mỗi khung và tải lên các bitmap đó khi đang chạy bằng cách tải lên tệp HTTP thường xuyên. Mặc dù như bạn có thể tưởng tượng, đó không phải là lý tưởng chính xác từ một quan điểm thực hiện. Bạn cũng sẽ gặp phải sự cố vì mô hình bảo mật Flash Player không cho phép bạn tải tệp lên mà không có thao tác do người dùng khởi tạo (tức là sự kiện nhấp chuột nằm trong dấu vết ngăn xếp). Có cách để giải quyết vấn đề này, ví dụ: gửi tệp dưới dạng AMF ByteArray thông qua dịch vụ AMF, nhưng có thể không phải là bằng chứng trong tương lai. Tuy nhiên, cuối cùng, đối với bất kỳ loại ứng dụng chuyên nghiệp nào, bạn chắc chắn sẽ muốn kết hợp một Flash Media Server (hoặc Red5.) Có những công ty mà bạn có thể thuê các dịch vụ đó, ví dụ như Influxis. Đi xuống tuyến đường đó, bạn sẽ không phải tự chủ máy chủ (chính là Java).

+4

Ok, vì vậy những gì tôi đang học là Flash không thể tạo video clip 10 giây từ cam web và sau đó đăng tệp video đó lên máy chủ. Vì vậy, nguồn dữ liệu webcam giống như một firehose và đèn flash không thể chai một đoạn của nó; Flash chỉ có thể chuyển hướng luồng tới màn hình của bạn hoặc tới một người nhận luồng đặc biệt như Flash Media Server của Red5. Cảm ơn bạn về thông tin! – a7drew

+0

Đúng vậy! Trừ khi bạn sử dụng giải pháp này, bạn lưu trữ tất cả các khung dưới dạng bitmap trong bộ nhớ (sử dụng lớp BitmapData, và phương thức draw()) và sau đó tải lên các bitmap tuần tự tới máy chủ, ví dụ: chúng có thể được mã hóa bằng ffmpeg. – richardolsson

0

tôi thấy blog này hữu ích.

http://www.zeropointnine.com/blog/updated-flv-encoder-alchem/ Mã này dựa trên câu trả lời của richardolsson.

Tôi đã thử mã này một lần trong dự án của mình và cũng thành công trong việc tải lên video 10 giây lên Facebook. tôi đã viết một blog chi tiết về trải nghiệm của tôi. http://www.logicmanialab.com/2012/10/upload-video-to-facebook-using.html

Mã này sẽ ngắt hoặc treo trình duyệt nếu video quá dài. Dù sao thì cũng đáng thử.

Bên cạnh cách tốt nhất để lưu video là sử dụng máy chủ Flash Media hoặc máy chủ RED5 (experienece của tôi) .Tôi chưa bao giờ thử ffmpeg là không tốt nhất trong PHP :).