2011-08-29 1 views
2

구체적으로는 다음과 같습니다. 픽셀을위한 32 비트 부호없는 RGBA 정수 시퀀스가 ​​있습니다. 왼쪽 픽셀에서 시작하는 행당 640 개의 정수, 맨 위 행에서 시작하는 프레임 당 480 개의 행, n 개의 프레임에 대해 반복. 이것을 일반적인 이미지 형식으로 인코딩하지 않고 ffmpeg (또는 다른 인코더)에 쉽게 공급할 수 있습니까?RGBA 값 스트림을 비디오로 인코딩하는 방법은 무엇입니까?

저는 ffmpeg가이 경우에 사용할 수있는 가장 좋은 도구라고 가정하고 있지만 출력 비디오 형식은 중요하지 않습니다.

:


가 나는 경우에는 내가 잘못된 질문을 부탁 해요 ... 난 그냥 적당한 키워드를 알고 있다면 설명서를 가르치 려 것 알고, 여기에 내가 가장 높은 수준에서 할 노력하고있어 무엇

나는 디스플레이 트리에서 그려지고 움직이는 Actionscript 코드를 가지고 있으며 프레임별로 BitmapData를 그리는 AIR 응용 프로그램에서이 코드를 래핑했습니다. AIR는이 출력을 직접 인코딩 할 때 비효율적 인 것으로 판명났습니다. 제가 관리해온 최고의 성능은 초당 몇 프레임으로, 적어도 15fps, 바람직하게는 100fps와 같이 렌더링해야합니다. PNG 이미지를 제공하십시오 (AIR는 640x480 PNG를 인코딩하는 데 1 초 이상 걸릴 수 있습니다 ... 소름 끼치는). AIR에서 인코딩하는 대신 원시 바이트 데이터를 인코더 또는 렌더링 된 디스크로 빠르게 보낼 수 있습니다.

왜 내가 애니메이션을 렌더링하기 위해 Actionscript를 사용하고 있는지, 왜 그렇게 빨리 인코딩해야하는지 궁금하다면, 그렇게하지 마십시오. 말하자면, 프레임은 실행 시간에 계산됩니다 (예 : .swf 파일에서 애니메이션으로 저장되지 않음). 생성 할 비디오의 양이 너무 많아 제한된 시간이 걸리고 다른 것 프레임을 생성하는 Actionscript는 옵션이 아닙니다.

+0

는 일부 파고 후, 나는 -pix_fmt 옵션 건너 온 : '는 FFmpeg -pix_fmt RGBA는 640 × 480 -r (15) -f 이미지 2 -i % d.bin -r 15 -s 640 × 480 output.avi' 이를 -s '스트림 # 0.0 : 비디오 : 0x0000, rgba, 1200x675, 15 tbr, 15 tbn, 15 tbc' '디코더 (코덱 ID 0)를 입력에 대해 찾을 수 없습니다. stream # 0.0' ffmpeg는 입력에 디코더를 사용하는 것을 주장하는 것 같습니다. 실제로 rgba 바이트를 사용하는 방법은 없습니까? 다음의 4 살짜리 블로그 포스트는 아니오, 방법이 없다고 주장합니다 : http : // kylecordes.com/2007/pipe-ffmpeg –

+0

image2 대신 -f rawvideo 또는 -f fbdev (프레임 버퍼 장치)를 사용하십시오. 다른 사항을 지정하면 ffmpeg에서 파일의 시작 부분에 코덱 메타 데이터가 필요합니다. –

답변

2

해결 방법은 ffmpeg 대신 x264를 사용하는 것입니다.

테스트 목적으로 640x480x4 ARGB 픽셀 값을 포함하는 00.bin, 01.bin, .. nn.bin 파일을 파일로 저장했습니다. x265은 BGRA 내 시험을 치를 수 있기 때문에

cat *.bin | \ 
perl -e 'while (sysread(STDIN,$d,4)){print pack("N",unpack("V",$d));}' | \ 
x264 --demuxer raw --input-csp bgra --fps 15 --input-res 640x480 --qp 0 \ 
    --muxer flv -o out.flv - 

못생긴 펄

는 4 바이트 엔디안 순서를 교환 할 수있는 해킹이에 니펫을 : 나는 접근이 가능 있는지 확인하는 데 사용되는 명령은 다음과 같은 끔찍한 해킹 파일에는 ARGB가 포함되어 있습니다. 요컨대

,
  1. ActionScript를 x264에 BGRA로 된 ByteArray에
  2. 파이프를
  3. 스왑 엔디안을 ARGB 값을 렌더링

    : 원시 디멀티플렉서는 BGRA 색 공간은 FPS/w/H/품질을 지정
  4. ??
  5. 이익.