2015 년 4 월 현재 Raspbian에 포함 된 GStreamer 1.2는 omxh264enc를 통해 OpenMAX 하드웨어 가속 H.264 인코딩을 지원합니다.
벤치마킹 비교를 수행했습니다.
- MacBook Pro (2011 년 초) 듀얼 코어 i7-2620M 2.7GHz (Sandy Bridge)-4GB RAM
- RaspBerry Pi 2 모델 B 900MHz 쿼드 코어 ARM Cortex-A7 CPU-1GB RAM
샘플 파일 : 영화 Alatriste (2006)의 60 초 샘플. 원본 파일은 1080p이며 30MB가 걸립니다. 파일을 720p로 트랜스 코딩했습니다. 비디오 트랜스 코딩에 대한 연구에 집중하기 위해 모든 오디오 트랙은 무시되었습니다.
결과 :
(1)에서 핸드 브레이크 (x264 코덱)를 사용하여 x264 설정을 매우 느리고 평균 비트 전송률 1145kbps (1 패스)로 트랜스 코딩하여 7.7MB 파일을 생성했습니다. 프로필 높음, 레벨 4.0. 4 개의 스레드를 사용하여 인코딩하는 데 3 분 36 초가 걸렸습니다. 수동 브레이크의 총 누적 CPU 충전 ~ 380 %. 비디오 품질이 매우 좋았습니다. 작은 인공물이 관찰 될 수 있었으며 세부 사항의 손실이 쉽게 관찰되지 않았습니다. 아래 내용을 참조하십시오.
(2)에서 GStreamer 및 omxh264enc (하드웨어 가속)를 사용하여 target-bitrate = 1145000 (1145kbps), control-rate = 1 (variable bitrate control method)로 트랜스 코딩하여 6.9MB 파일을 생성했습니다. 1 개의 스레드를 사용하여 인코딩에 7 분 4 초가 걸렸습니다. gst-launch-1.0 ~ 100 %의 총 누적 CPU 요금. 선명하고 잘 보이는 디테일 손실을 쉽게 볼 수있는 인공물로 인해 비디오 품질이 눈에 띄게 저하되었습니다. 아래 내용을 참조하십시오.
gst-launch-1.0 -v filesrc location=sample-1080p.mp4 ! decodebin ! videoconvert ! \
videoscale ! video/x-raw,width=1280,height=688 ! omxh264enc control-rate=1 \
target-bitrate=1145000 ! h264parse ! mp4mux ! \
filesink location=sample-720p-OMX-1145kbps.mp4
x264enc와 함께 GStreamer를 인코더로 사용하는 경우 gst-launch-1.0의 총 누적 CPU 요금은 약 380 %가되며 이는 omxh264enc가 실제로 GPU를 사용한다는 사실을 지원합니다. 또한 (2)의 x264enc를 사용하면 시간이 15 분을 초과합니다.
결론:
상당히 유사한 파일 크기의 경우 하드웨어 가속 RaspBerry Pi 2 GPU 인코더가 소비하는 시간은 듀얼 코어 i7-2620M의 소프트웨어 x264 인코더보다 거의 두 배였습니다. 오디오 트랜스 코딩 및 멀티플렉싱을 추가하면이 테스트 동안 RaspBerry Pi에서 CPU를 많이 사용하지 않기 때문에이 차이를 약간 줄일 수 있습니다. 소프트웨어 인코딩 파일에서 비디오 품질이 분명히 우수했습니다. 아래 스틸을 참조하십시오.
omxh264enc (gst-inspect-1.0에 의해 노출됨)에 사용 가능한 구성 옵션은 x264 인코더에 비해 제한되어 있지만 추가 실험을 통해 더 나은 품질을 제공 할 수 있습니다.
신관:
Raspbian 리포지토리에서 GStreamer 및 OpenMax 설치 :
$ apt-get install libgstreamer1.0-0 libgstreamer1.0-0-dbg libgstreamer1.0-dev liborc-0.4-0 liborc-0.4-0-dbg liborc-0.4-dev liborc-0.4-doc gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-alsa gstreamer1.0-doc gstreamer1.0-omx gstreamer1.0-plugins-bad gstreamer1.0-plugins-bad-dbg gstreamer1.0-plugins-bad-doc gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-base-dbg gstreamer1.0-plugins-base-doc gstreamer1.0-plugins-good gstreamer1.0-plugins-good-dbg gstreamer1.0-plugins-good-doc gstreamer1.0-plugins-ugly gstreamer1.0-plugins-ugly-dbg gstreamer1.0-plugins-ugly-doc gstreamer1.0-pulseaudio gstreamer1.0-tools gstreamer1.0-x libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev
$ gst-launch-1.0 --version
gst-launch-1.0 version 1.2.0
GStreamer 1.2.0
MacBook Pro에서 HandBrake (x264)를 사용하여 여전히 720p 비디오의 QuickTime X 코드 변환 (자세한 내용은 이미지 열기 또는 다운로드) :
Raspberry Pi 2에서 GStreamer (OpenMAX를 통한 하드웨어 인코딩)를 사용하여 여전히 720p 비디오로 코딩 된 QuickTime X (자세한 내용은 이미지 열기 또는 다운로드) :
최신 정보:
다음 ecc29의 제안 방법을 확장에는 Lanczos를 사용하는 나는 추가 시험 수행 method=lanczos
에를 videoscale
. 인코딩 프로세스는 시간이 두 배로 증가하여 약 7 분에서 14 분 37 초로 증가했습니다. 결과는 방법이없는 품질과 거의 동일합니다 (기본 이중선). 실제로 결함은 주로 하드웨어의 인코딩 프로세스에서 발생합니다. 그들은 분명히 압축 아티팩트입니다.