Mã hóa h264 tăng tốc phần cứng có thể?


11

Raspberry Pi sẽ thực hiện mã hóa h264 tăng tốc phần cứng khi quay video từ bảng camera. Làm cách nào tôi có thể mã hóa h264 (sử dụng tăng tốc phần cứng) khi hình ảnh nguồn không đến trực tiếp từ máy ảnh?

Có bất kỳ công cụ dòng lệnh hỗ trợ này?

Nếu không, tôi nên xem xét API nào để thực hiện điều này?


Bạn đang mã hóa cái gì, và hiện tại thế nào? - bạn có đang chuyển đổi các tệp video, hiển thị chúng từ hình ảnh và âm thanh, v.v ...
Wilf

@Wilf Tôi quan tâm đến điều này nói chung, tuy nhiên tôi có một ứng dụng hiện tại: mã hóa một khoảng thời gian trôi trực tiếp vào video. Tôi không thể sử dụng raspivid vì tôi cần tốc độ khung hình thấp trong khoảng từ 1/5 đến 2 khung hình / giây. Ngoài ra, phơi sáng tự động raspivid đi vào dao động trong điều kiện ánh sáng của tôi (ánh sáng yếu). Vì vậy, tôi muốn sử dụng raspistill, nhưng mã hóa trực tiếp vào video để kết quả không chiếm quá nhiều không gian (như JPEG). Là một ứng dụng thứ hai, tôi muốn đăng quá trình từng khung hình trong thời gian thực bằng Mathicala (sẽ tốn rất nhiều thời gian của CPU), sau đó gửi chúng để được mã hóa vào h264.
Szabolcs

1
@Wilf Tôi có một giải pháp một phần mà tôi nghĩ nên có thể thực hiện được: ý tưởng là một cái gì đó giống như raspiyuv -o - | rpi-encode-yuv(đại khái) nơi rpi-encode-yuvcông cụ này ở đây . Kích thước khung được mã hóa cứng trong công cụ này, vì vậy bạn cần thay đổi nó ở đầu tệp C và biên dịch lại. Thật không may, tôi đã không quản lý để có được một đầu ra được căn chỉnh chính xác, vì raspiyuvdường như không mã hóa kích thước khung hình thành đầu ra của nó. Tôi nhận được một hình ảnh dần dần thay đổi mà cuối cùng chuyển thành rác. Vẫn đang làm việc trên nó.
Szabolcs

Câu trả lời:


8

GStreamer được bao gồm trong Raspbian và với plugin OpenMAX, nó sẽ sử dụng khả năng mã hóa phần cứng của Raspberry Pi.

Xem liên kết này để biết hướng dẫn về cách thực hiện những gì bạn đang tìm kiếm: https://www.raspberrypi.org/forums/viewtopic.php?t=72435

Nếu bạn quan tâm đến việc chuyển mã, tôi vừa đăng câu trả lời cho một câu hỏi khác có thể khiến bạn quan tâm: Tôi có thể mong đợi tốc độ nào từ mã hóa phần cứng H264?


Cảm ơn! Tôi không thể kiểm tra điều này ngay bây giờ nhưng sẽ chấp nhận trước dựa trên hướng dẫn của bạn.
Szabolcs

1

Hình như bằng cách tự biên dịch ffmpeg, trên RPi3B + bạn có thể nhận được

ENCODING VIDEO 30 FPS CAO CẤP TỪ MỘT HÌNH ẢNH HÌNH ẢNH JPEG 1920 X 1080 - CHI TIẾT TUYỆT VỜI VÀ GIỚI THIỆU CHI TIẾT - CÀI ĐẶT CHẤT LƯỢNG CAO:

Mã hóa H.264 dựa trên phần mềm (CPU): 2,6 FPS (chậm hơn 11,5 lần so với thời gian thực)

Mã hóa H.264 dựa trên phần cứng (GPU): 6,3 FPS (chậm hơn 4,8 lần so với thời gian thực)

ENCODING VIDEO 30 FPS CAO CẤP TỪ MỘT HÌNH ẢNH HÌNH ẢNH 640 X 480 JPEG - ĐỀ NGHỊ TUYỆT VỜI VÀ GIỚI THIỆU CHI TIẾT - CÀI ĐẶT CHẤT LƯỢNG CAO:

Mã hóa H.264 dựa trên phần mềm (CPU): 18 FPS (chậm hơn 1,7 lần so với thời gian thực)

Mã hóa H.264 dựa trên phần cứng (GPU): 38 FPS (gấp 1,3 lần so với thời gian thực)

Các kịch bản để giúp đạt được tất cả điều này là trong một chủ đề diễn đàn .

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.