2015-04-22 22 views
5

Tôi đang làm việc trên gstreamer lần đầu tiên và cố gắng để Stream một tập tin MP4 Video từ một máy chủ cho khách hàng bằng cách sử dụng Gstreamer (RTP và UDP). Các Command Line mà tôi đang cố gắng sử dụng:Streaming Video MP4 File trên Gstreamer

Mở Server Side:

gst-launch-1.0 -v filesrc location = file_name.mp4 ! decodebin ! x264enc ! rtph264pay ! udpsink host=192.1XX.XX.XX port=9001 

On Client Side:

gst-launch-1.0 -v udpsrc port=9001 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtpstreamdepay ! decodebin ! videoconvert ! autovideosink 

tôi có thể để Stream video thành công. Nhưng, tôi không muốn các hoạt động decodebinx264enc ở phía máy chủ. Vì vậy, tôi loại bỏ những hoạt động và sử dụng dòng lệnh này ở phía máy chủ

gst-launch-1.0 -v filesrc location =file_name.MP4 ! rtpstreampay ! udpsink host=192.1XX.XX.XX port=9001 

On mà tôi đã không thể để Stream Video.

Ai đó có thể hướng dẫn tôi, tại sao chúng ta cần phải có các hoạt động giải mã và mã hóa trong trường hợp này trong khi gửi dữ liệu. Có cách nào để chúng tôi có thể gửi dữ liệu mà không sử dụng các hoạt động này hay không.

Cảm ơn.

Trả lời

1

Giải mã và mã hóa lại là không cần thiết. Phần tử bạn đang theo sau là bộ tách kênh và trong trường hợp này là qtdemux.

Dưới đây là một đoạn trích từ nó của tài liệu:

Phân tách một tập tin QuickTime vào âm thanh và video suối cơ sở ISO phương tiện truyền thông hỗ trợ định dạng tập tin (mp4, 3gpp, qt, mj2)

Đó là đủ để phân tách vùng chứa video mở và chỉ đọc luồng video được mã hóa trực tiếp từ vùng chứa. Các hộp chứa mp4 thường chứa H.264 video được mã hóa, do đó, đường ống phía máy chủ của bạn sẽ đơn giản hóa thành:

gst-launch-1.0 -v filesrc location = file_name.mp4 ! qtdemux ! video/x-h264 ! rtph264pay ! udpsink host=192.1XX.XX.XX port=9001 
Các vấn đề liên quan