2009-04-28 2 views
2

나는 mp3를 더 낮은 비트 전송률로 변환하고, 가능하면 Perl을 사용하여 비디오를 mp3로 변환하고 싶습니다. ffmpeg 모듈을 살펴 봤지만 파일 변환 기능이 지원되지 않는 것으로 나타났습니다. 내가 본 유일한 예는 비디오 스트림에서 사진을 가져 오는 것입니다. Perl에서 ffmpeg를 호출하기 위해 system()을 사용하여이 작업을 수행 할 수 있습니까?시스템 호출없이 Perl 스크립트에서 ffmpeg를 사용할 수 있습니까?

답변

0

유닉스 기반 플랫폼을 사용하고 있다면 Gstreamer를 사용할 것입니다. 그것은 perl 바인딩을 가지고 있으며 오디오 비디오 데이터를 변환하기위한 Gstreamer 파이프 라인을 설정하는 것은 매우 간단합니다.

예제로 Gstreamer perl bindings and converting ogg to mp3을 참조하십시오.

0

pacpl이라는 프로젝트가 있는데, 다양한 오디오 및 일부 비디오 변환을 수행합니다. 소스를 보면 ffmpeg과 같은 타사 유틸리티를 실행하려면 system() 명령을 사용합니다. 귀하가 요청한 것과 유사한 전환을하는 데 관심이 있으며 직접 pacpl을 사용해 볼 계획입니다.

지금까지 순수한 Perl 답이없는 것처럼 보입니다. 모든 방법은 다른 변환 소프트웨어를 사용합니다. 어떤 점에서 C로 작성된 다른 프로그램을 사용하는 것이 더 효율적이라고 말해줍니다.

그래서 나는 질문을 되돌려 줄 것입니다. system()을 사용하지 않으려는 이유는 무엇입니까?

+1

시스템이 완료 될 때까지 차단되므로 시스템을 사용하고 싶지 않습니다. 동영상을 변환하는 경우 시간이 오래 걸릴 수 있습니다. –

0

왜 다른 프로세스를 피 하시겠습니까? 나에게는이 작업을 수행하는 Perl 스크립트가 있고 변환하려는 각 비디오의 프로세스를 포크한다. 그렇게하면 여러 비디오를 동시에 변환 할 수 있고 필자의 주된 Perl 프로그램은 무엇이든해야한다.

시스템을 사용할 필요가 없습니다. 시스템은 완료 될 때까지 차단합니다. 외부 프로세스와 통신하는 다른 많은 방법이 있습니다. 자세한 내용은 perlipc 설명서를 참조하십시오.

0

외부 프로그램과 상호 작용하는 방법 목록은 Perl backtics vs system vs exec에 대한 답변을 참조하십시오. 해당 프로그램에 대한 Perl 인터페이스를 찾고 있다면 CPAN을 찾아 보시기 바랍니다.

관련 문제