2012-05-01 3 views
2

Linux에 ffmpeg 및 ffmpeg-devel 패키지를 설치했습니다.Oracle에서 ffmpeg api 호출

Oracle 11g가 설치되어 실행 중입니다.

데이터베이스에는 미디어 파일이 저장되므로 더 나은 스트리밍을 위해 이미지 파일을 AVI 형식으로 변환해야합니다.

통합을 쉽게하기 위해 데이터베이스에서이 변환 작업을 수행하려고합니다.

이제 가장 간단한 옵션은 ffmpeg 명령 줄 유틸리티에 대한 래퍼를 작성하고 PLSQL 프로 시저가이를 호출 할 수있게하는 것입니다.

그러나 이것은 다음 단계를 요구한다 :

  1. 읽기 비디오 BLOB
  2. OS 파일 (2) 및 출력 파일 이름
  3. 로드에서
  4. 전화는 FFmpeg 래퍼주는 파일 이름 쓰기 3에서 PLSQL의 BLOB로 출력 파일

가능한 경우 C 루틴을 작성하고 싶습니다. (Oracle Externa l 라이브러리 피쳐)는 BLOB (OciLOBLocator)로 입력을 받아들이고 LOB를 나타내는 적절한 libavformat 함수를 호출하고 PLSQL 계층이 AVI 파일로 사용하는 LOB (다시 OciLOBLOcator)에 반환 값을 씁니다.

다른 장점은 Oracle 내에서 OS 명령을 실행하면 바람직하지 않은 영향을 피할 수 있다는 것입니다.

문제점은 ffmpeg에 주어진 예제가 파일에서 데이터를 처리하는 반면 LOB를 처리하는 라이브러리가 필요하다는 것입니다.

오라클의 OrdVideo 데이터 형식이 setformat 및 프로세스를 사용하여 이러한 종류의 변환을 수행하는지 확인하는 방법도 있습니다.

답변

0

흥미로운 도전 과제. 따라서 'ffmpeg'명령 줄 유틸리티를 호출하지 않고 데이터베이스 내에서 원시 호출에 libavformat 및 libavcodec 라이브러리를 활용하는 것이 좋습니다. 나는 그 권리가 있니?

나는이 LOB/OciLOBLocator가 읽기 및 쓰기 용 C API를 제공한다고 믿습니다. 그렇다면 해당 API를 기반으로 새로운 URLProtocol을 만들 수 있습니다. URLProtocols는 FFmpeg가 I/O를 처리하는 방법입니다. 구현 된 모든 것을 보려면 'ffmpeg -protocols'를 실행하십시오. URLProtocol이 수반하는 간단한 예제 인 open, read, write, seek, close 및 기타 몇 가지 기능에 대해 libavformat/file.c의 소스를 확인하십시오.

+0

마이크, 응답 해 주셔서 감사합니다. 네가 옳다는 것은 내가하고 싶은 일입니다. DB 내에서 OS 명령을 실행하면 사람들이 긴장하게되며 DBA 경찰을 통과하기가 매우 어려워집니다. URL 프로토콜 옵션을 살펴보고 여기에서 나의 결과를 피드백 할 것입니다. – TenG

+0

이 질문에 대한 답변이 아직 없습니다. – TenG

+0

당신은 여전히 ​​당신의 결과를 여기에 피드백하지 않았다. 이것은 새로운 영역을 개척하는 것 중 하나 일 수 있습니다. 내 대답에 설명 된 LOB/OciLOBLocator 옵션을 시도 했습니까? 나는 그것을 시도했을 지 모르지만, 음 ... 오라클 설치가 실제로 존재하지는 않습니다. –