2013-11-20 4 views
1

FFMPEG 프레임 워크에 사용자 정의 디코더를 통합했습니다. 이 디코더의 출력은 YUV420 프레임이며, 필요한 경우이를 RGB24 프레임으로 변환 할 수 있습니다.FFPLAY 창에 YUV/RGB 프레임 표시

이러한 프레임은 내 사용자 지정 기능 중 하나에서 생성됩니다. 따라서이 프레임을 렌더링하려면 FFPLAY 창에서 무엇을해야합니까? 특정 구문이나 절차가 있습니까?

저는 정말 FFPLAY에 익숙하며이 주제에 대해 충분히 검색했지만이 문제와 관련이 없습니다. 누군가가 이것에 관한 어떤 대답이나 제안을 제공 할 수 있다면 그것은 나에게 큰 도움이 될 것입니다.

미리 감사드립니다.

--Regards

+0

파일 또는 파이프 입력을 재생하려고합니까? 파일이 있으면 짧은 샘플을 제공하십시오. ffplay cli-tool을 사용하고 계시거나 프로그래밍 방식으로 사용하고 계십니까? – LordNeckbeard

+1

기본적으로 YUV 4 : 2 : 0을 출력하는 FFmpeg 용 새 디코더를 작성한 경우 FFplay는 수정하지 않고도 비디오를 재생할 수 있어야합니다. 디코더에서 코어 엔진으로 색상 공간을 전달하고 있습니까? –

+0

@MultimediaMike : 답장을 보내 주셔서 감사합니다. 나는 이와 같은 대답을 기다리고 있었다. 예. 내 원시 코드 즉 C 코드에서 YUV 420 프레임을 생성 할 수 있습니다. 그러나 내가이 ffplay에 대해 처음으로 말했듯이, 나는 현재 디코더에서 코어 엔진으로 colorspace를 전달하는 방법에 관한 아이디어를 가지고있다. 이 문제에 관해 나에게 아이디어를 줄 수있는 문서 나 기사는 여기에 답장으로 올리면 받아 들일 것입니다. --당신의 응답을 기다리는. – Zax

답변

1

나는 FFmpeg를위한 코덱을 해킹에 약간 녹슨 해요,하지만 난 그냥 최신 자식 소스를 체크 아웃하고 난 당신이 동일한 복사본에서 작업하는 것을 가정하고있다. 나는 당신이 당신의 디코더를 libavcodec/디렉토리에있는 나머지 코덱들과 함께 삽입했다고 가정하고, 당신이 프로그램을 빌드하고 ffmpeg -formats을 실행할 때 새로운 디코더가 언급 된 것을 보았다.

이것이 사실이라면 디코더 모듈이 AVCodecContext 함수에 대한 포인터를받을 것으로 예상되는 init() 함수를 내 보냈다고 가정합니다. 이 데이터 구조에는 pix_fmt라는 멤버가 있으며이 데이터는 평면 YUV 4 : 2 : 0을 나타 내기 위해 디코더의 경우 AV_PIX_FMT_YUV420P로 설정해야합니다.

문제가 해결되지 않으면, 당신의 디코더가 어떤 일을하는지 테스트하기 위해, 널 대상에 파일을 디코딩 할 수 ffmpeg 도구를 사용해보십시오 :

ffmpeg -i yourfile.ext -f null /dev/null 

이의 출력과 질문을 개정을 우리에게 더 많은 단서를주기위한 명령.

+0

답변 해 주셔서 감사합니다. 내 디코더를 가지고 있지만 픽셀 fmt 변수를 지정하지 않았습니다. ffmpeg --decoders 명령이 주어지면 목록에 디코더 이름이 표시됩니다. 하지만이 출력 프레임을 SDL 프레임 (SDL 라이브러리 사용)과 같은 것으로 매핑하지 않아야합니까? 그리고 내가 말했듯이 YUV 프레임은 다른 디코더와 같은 흐름이 아닙니다. 이 문제에 대해 좀 알려 주실 수 있습니까? (나는 SDL 매핑을 의미 함) – Zax

+1

비디오 디코더는 비디오 출력 레이어에 대한 지식이 필요하지 않습니다. 디코더는 가장 효율적인 픽셀 형식 (평면 YUV 4 : 2 : 0)으로 디코딩하고, 프레임을 엔진으로 다시 전달하며, 엔진이이를 어떻게 처리해야하는지 파악해야합니다. 출력은 SDL 윈도우 또는 X11 윈도우, OpenGL 표면 또는 디스크의 파일 일 수 있습니다. 다른 방법 : 기본 H.264 비디오 (MP4 파일 찾기)가 ffplay와 함께 재생되어야합니다. H.264 비디오 디코더는 평면 YUV 4 : 2 : 0 데이터를 출력 한 다음 다시 엔진으로 전달한 다음이를 SDL로 보냅니다. 이것은 디코더가 동작하는 방식입니다. –

+0

그것의 놀라운 ... 당신이 방금 제공 한 설명. 고마워 .-) – Zax