하드웨어 가속 h264 인코딩이 가능합니까?


12

Raspberry Pi는 카메라 보드에서 비디오를 녹화 할 때 하드웨어 가속 h264 인코딩을 수행합니다. 소스 이미지가 카메라에서 직접 나오지 않을 때 어떻게 하드웨어 가속을 사용하여 h264를 인코딩 할 수 있습니까?

이를 지원하는 명령 줄 도구가 있습니까?

그렇지 않은 경우이를 가능하게하기 위해 어떤 API를 살펴 봐야합니까?


무엇을 인코딩하고 있습니까? -비디오 파일을 변환하고 이미지 및 사운드 등에서 렌더링하는 중
입니까

@Wilf 나는 이것에 일반적으로 관심이 있지만 시간 경과를 비디오로 직접 인코딩하는 현재 응용 프로그램이 있습니다. 1/5와 2 fps 사이의 낮은 프레임 속도가 필요하기 때문에 raspivid를 사용할 수 없습니다. 또한, raspivid 자동 노출은 내 조명 조건 (낮은 조명)에서 진동으로 들어갑니다. 그래서 raspistill을 사용하고 싶지만 비디오로 직접 인코딩하여 결과가 너무 많은 공간을 차지하지 않습니다 (JPEG와 마찬가지로). 두 번째 응용 프로그램으로 나는 (CPU 시간이 많이 걸릴 것) 과정을 티카를 사용하여 실시간으로 각 프레임을 게시하고 싶은 다음 H264로 인코딩 할 보냅니다.
Szabolcs

1
@Wilf 나는 일을 할 수 있어야한다고 생각하는 부분적인 해결책을 가지고 있습니다 : 아이디어는 raspiyuv -o - | rpi-encode-yuv(거의) rpi-encode-yuv도구가 여기 있는 곳과 같습니다 . 이 도구에서는 프레임 크기가 하드 코딩되어 있으므로 C 파일의 시작 부분에서 프레임 크기를 변경하고 다시 컴파일해야합니다. 불행히도 raspiyuv프레임 크기를 출력으로 인코딩하지 않는 것처럼 올바르게 정렬 된 출력을 얻지 못했습니다 . 나는 결국 쓰레기로 변하는 점차 변화하는 그림을 얻습니다. 여전히 노력하고 있습니다.
Szabolcs

답변:


8

GStreamer는 Raspbian에 포함되어 있으며 OpenMAX 플러그인과 함께 Raspberry Pi의 하드웨어 인코딩 기능을 사용합니다.

원하는 것을 수행하는 방법에 대한 자습서는이 링크를 참조하십시오. https://www.raspberrypi.org/forums/viewtopic.php?t=72435

트랜스 코딩에 관심이 있다면, 다른 질문에 대한 답변을 방금 올렸 습니다. 하드웨어 -H264 인코딩에서 어떤 속도를 기대할 수 있습니까?


감사! 지금은 테스트 할 수 없지만 튜토리얼에 따라 미리 수락하겠습니다.
Szabolcs

1

ffmpeg를 직접 컴파일하여 RPi3B +에서 얻을 수있는 것처럼 보입니다.

1920 X 1080 JPEG 이미지 시퀀스에서 높은 유연성의 30 FPS 비디오 인코딩 – 중요한 동작 및 인트라 프레임 세부 사항 – 고품질 설정 :

소프트웨어 기반 H.264 인코딩 (CPU) : 2.6 FPS (실시간보다 11.5 배 느림)

하드웨어 기반 H.264 인코딩 (GPU) : 6.3 FPS (실시간보다 4.8 배 느림)

640 X 480 JPEG 이미지 시퀀스에서 고기능 30FPS 비디오 인코딩 – 중요한 동작 및 인트라 프레임 세부 사항 – 고품질 설정 :

소프트웨어 기반 H.264 인코딩 (CPU) : 18FPS (실시간보다 1.7 배 느림)

하드웨어 기반 H.264 인코딩 (GPU) : 38FPS (실시간보다 1.3 배 빠름)

이 모든 것을 달성하는 데 도움이되는 스크립트는 포럼 스레드에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.