2013-02-21 23 views
28

Tôi nhận được các lỗi sau khi giải mã khung H.264 nhận được từ đầu từ xa của cuộc gọi video SIP dựa trên H.264. Đánh giá cao bất kỳ trợ giúp nào trong việc tìm hiểu lỗi.lỗi khi giải mã khung H.264 bằng cách sử dụng ffmpeg

non-existing PPS 0 referenced 
decode_slice_header error 
non-existing PPS 0 referenced 
decode_slice_header error 
no frame! 

non-existing PPS 0 referenced 
decode_slice_header error 
non-existing PPS 0 referenced 
decode_slice_header error 
no frame! 

Trả lời

24

Điều đó chỉ có nghĩa là ffmpeg chưa thấy khung hình chính, mang thông tin SPS và PPS. SPS và PPS rất quan trọng trong việc giải mã một khung/lát đến. Khung hình chính được gửi định kỳ (nghĩa là cứ 5-10 giây một lần trở lên); do đó, nếu chỉ ra rằng bạn đã tham gia một luồng trước khi khung hình chính đến; bạn sẽ thấy cảnh báo này cho mọi khung hình cho đến khi khung hình chính hiển thị.

Ngay khi khung hình chính hiển thị từ dây, ffmpeg sẽ có đủ thông tin để giải mã khung đó (và bất kỳ khung tiếp theo nào cho đến khung chính tiếp theo), vì vậy những cảnh báo đó sẽ biến mất.

+0

Điều đó có vẻ là vấn đề. Kết thúc từ xa không gửi một khung chính ngay cả khi khách hàng của tôi yêu cầu nó bằng cách sử dụng một INFO SIP. Bất kỳ ý tưởng làm thế nào điều này có thể được giải quyết? Tôi đang sử dụng phiên bản cũ của Bria ở đầu từ xa. –

+0

Mặt từ xa không gửi bất kỳ khung hình chính nào? Điều đó rất kỳ quặc. Bạn không chắc chắn nếu Bria có một tùy chọn để cấu hình khoảng khung hình chính, nhưng nó sẽ là giá trị xem xét. Vì vậy, nói chung, bạn không nhìn thấy bất kỳ video từ phía xa ở tất cả, hoặc phải mất một lúc để xem nó? – Aki

+0

không có video nào ở tất cả –

2

Để giải mã một khung hoặc một lát, sliceHeader được giải mã, đề cập đến PPS hoặc "Tập thông số hình ảnh". Nó có thông tin liên quan đến các chi tiết cụ thể của khung như chiều rộng, chiều cao, v.v.

Tôi đoán dữ liệu của bạn đến qua kênh đầu vào truyền trực tuyến, trong trường hợp này SPS và PPS sẽ được gửi trước đó trong luồng.

Bạn có thể phải ghép nối giống với luồng của mình.

2

bạn cần thêm khung spspps thông tin. ffmpeg cần những thông tin này để giải mã. Bạn có thể tìm thấy các giá trị này trong tệp SDP.

Trong tập tin SDP, bạn nên tìm đơn vị NAL, bạn có thể nhìn thấy một cái gì đó như thế z0IAHukCwS1xIADbugAzf5GdyGQl, aM4xUg

những giá trị based64 mã hóa, bạn nên chuyển đổi nó sang định dạng hex. Tôi đang sử dụng Wireshark và Wireshark tự chuyển đổi những giá trị này cho bạn. Sau đó bạn có giá trị sps và pps.

Bây giờ bạn phải thêm các thông tin Nal này trước khung dữ liệu.

00 00 00 01 SPS 00 00 00 01 pps 00 00 00 01 dữ liệu

cho h264 những định dạng i đã được sử dụng để giải mã.