2017-09-05 38 views
0

핵심 기능 중 일부로 ffmpeg을 사용하는 Python 프로젝트를 진행 중입니다. 내가 사용하는 두 가지 명령에 귀결 ffmpeg에서 본질적 기능 :파이썬 응용 프로그램 내에서 FFmpeg 사용 : ffmpeg 도구 또는 libav * 라이브러리?

ffmpeg -i udp://<address:port> -qscale:v 2 -vf "fps=30" sttest%04d.jpg 
ffmpeg -i udp://<address:port> -map data-re -codec copy -f data out.bin 

아주 간단한 물건.

필자는 필요한 종속성이있는 시스템에 의존하지 않고 특정 시스템에 쉽게 설치할 수있는 자체 포함 된 프로그램 (위의 ffmpeg 기능을 사용함)을 만들려고합니다. 프로그램 자체.

이 점을 염두에두고 libav* 라이브러리를 사용하여 프로그램 내에서이 기능을 수행하는 것이 가장 좋을까요? 또는 ffmpeg 명령 줄 도구의 래퍼 (ffmpy)를 사용하는 것이 더 좋습니다. 각각의 단점에 대한 나의 현재의 생각은 라이브러리를 사용하는 것이 가장 좋은 방법 일 수 있지만 사용법을 배우는 것이 지나치게 복잡해 보입니다 (그리고 과정에서 배운 적이없는 C를 배울 수도 있습니다). 위에서 언급 한 두 가지 기본적인 것들을 할 수 있습니다. 라이브러리 전체는 나에게 조금은 약간의 블랙 박스이며 많은 문서가 없습니다. 그러나 ffmpeg에 대한 래퍼를 사용할 때의 문제점은 기본적으로 하위 프로세스 호출에 의존한다는 것입니다.이 프로세스는 다소 엉성한 것으로 보입니다. 왜 내가 서브 프로세스에 그렇게 대담하게 느끼는 지 확신 할 수 없지만.

+0

C를 모르면 명령 줄 유틸리티를 사용하십시오. – halfelf

답변

3

다소 문제가 있지만 지원하는 제품을 사용하고있는 한 ffmpeg CLI를 사용하는 것이 좋습니다. CLI를 사용하는 경우에만 libav * 라이브러리 만 사용하십시오. 정말 만족할 수 없다.

라이브러리에 유연성을 더할 수 있지만 API는 매우 복잡하며 CLI가 이미 수행 한 작업을 복제하는 데 많은 시간을 할애 할 것입니다 (ffmpeg.c, 라이브러리를 함께 붙이는 주 프로그램 만이 약 3700 라인 옵션 파서는 제외). 그리고 그 길을 따라 몇 가지 버그를 추가 할 가능성이 있습니다 - 특히 C 지식이 부족한 경우. 따라서 CLI를 통해 필요한 것을 수행 할 수 있다면 의심 할 여지없이 가장 적은 저항의 길입니다. 서브 프로세스에는 아무런 부끄러운 일이 없습니다. 그것은 유닉스 방식입니다!