로우 엔드 (슬로우 CPU) 플랫폼에서 mkv / H264 비디오의 실시간 트랜스 코딩을 달성하려고합니다.
다음 명령 줄을 테스트 장치로 사용 :
avconv -i test.mkv -c:v mjpeg -q:v 3 -c:a libmp3lame -f (codec) -y /dev/null
다음과 같은 결과가 나타납니다 . 코덱을 rawvideo
사용하는 37fps, mpeg4
코덱을 사용하는 21fps .
그래서 나는 더 빠른 압축을 제공하는 “중개”코덱을 찾고 있습니다. 결과 데이터는 저장되지 않지만 UPnP 서버에 의해 직접 스트리밍되므로 압축 비율이 너무 많이 필요하지 않습니다 (그러나 분명히 원시 비디오로 네트워크를 포화시키지 않는 것이 바람직합니다).
어떤 충고?
문안 인사.
답변
MPEG2 코덱을 사용해보십시오
MPEG2는 인코딩 속도가 매우 빠릅니다. 이 작동해야 -c:v mpeg2video -r 25 -b:v 8192k
레이트 제어를 더 느슨하게 수득 빠르게 인코딩 속도를 제공해야 비트율을 증가시킨다. -intra
비트 전송률이 훨씬 높은 비용으로 모션 추정을 비활성화 하는 옵션을 시도 할 수도 있습니다 . 충분하지 않으면 시각적 품질을 희생하면서 인코딩 속도를 높이는 데 사용할 수있는 양자화 단계 매개 변수가 있어야합니다.
초고속 사전 설정으로 저해상도 H264를 사용해 볼 수도 있습니다.
나는 당신이 로우 엔드를 말할 때 로우 엔드가 무엇을 의미하는지 잘 모르겠습니다 .Core 2 Duo 2ghz CPU에서 실시간으로 720p H264로 성공적으로 트랜스 코딩하고 있습니다 … 그래서 저의 아이디어가 있다면 끝은 저의 저의 아이디어와 비슷합니다 🙂
libx264
코덱은 일정한 시각 품질로 인코딩 비트율 속도 교환 인코더에 프리셋을 받아 들인다.
가장 빠른 사전 설정으로 시도 할 수 있습니다.
-c:v libx264 -preset ultrafast -tune zerolatency -profile high10 \
-bsf:v h264_mp4toannexb
( -bsf:v
스트리밍하려면 매개 변수가 필요합니다)
또한 -cbr
매개 변수를 사용하여 비트 할당을 제어하여 시각적 품질 / 비트 전송률을 제어 할 수도 있습니다 . 기본값은 23입니다. 0은 무손실이며 51은 품질이 가장 낮거나 비트 전송률이 가장 낮습니다.
해상도는 인코딩 속도에서 큰 역할을하며 업 샘플링 된 저해상도 h264 비디오는 다운 샘플링되지 않은 mpeg2와 비슷하게 보입니다 (더 낮은 비트 전송률 및 더 빠른 인코딩 속도로, 저를 인용하지 마십시오) 그것에 : 3).
그래서 당신은 그것을 가지고 놀 수도 있습니다.
-filter:v scale=-1:480
그러면 비디오의 크기가 480 줄로 다시 조정되고 동일한 종횡비를 유지합니다.
(방금 H264로 코드 변환을 직접 설정했습니다. 보시려면 Matroska 컨테이너에서 H264 + AAC로 실시간 코드 변환 하십시오 .)