구형 i5 Windows 시스템에서 ffmpeg 성능 개선 ‘-s’, ‘720×540’, ‘-sws_flags’, ‘lanczos’, ‘-qscale:v’, ‘1’,

구형 윈도우 박스에서 일부 비디오 변환을 위해 ffmpeg를 사용하는 것에 안장되었습니다. 불행히도 ffmpeg가 실행될 때마다 내 앱이 중지됩니다. ffmpeg 전문가가 ffmpeg를 최적화하기위한 성능 팁을 제안 할 수 있습니까?

이것들은 내가 ffmpeg에 제공하는 논쟁입니다

['-i', _master, '-s', '720x540', '-sws_flags', 'lanczos', '-qscale:v', '1', '-y', _tempMaster]

실제로 2 개의 추가 작업을 잊었습니다

2 연결

['-i', "concat:" + _head + "|" + _tempMaster + "|" + _tail, '-c', 'copy', '-y', _concatALL]

오디오 및 고품질 트랜스 코딩을 갖춘 3MUX

['-i', _audio, '-i', _concatALL, '-vcodec', 'libx264', '-crf', '22', '-vf', 'hqdn3d=1:1:1:1,unsharp=2:2:.7:2:2:0.0', '-y', _finalOutput]



답변

  • Lanczos 필터링은 꽤 비쌉니다. 다른 이미지 필터를 사용해 볼 수 있습니까? fast_bilinearlanczos에 비해 매우 빠르지 만 이미지 품질이 약간 떨어집니다. 그냥 교체 lanczosfast_bilinear와 비교합니다.

  • ffmpeg의 느린 점은 코덱과 관련이 있으며 libswscale 이외의 사용하는 muxers / demuxers / encoders / decoders / filters가 명령 행 옵션에서 명확하지 않습니다. 코덱 옵션은 비디오 작업의 계산 복잡성과 관련이 있습니다.

  • 최신 버전의 ffmpeg를 실행하고 있는지 확인하십시오.

  • libav / ffmpeg를 바꾸어 도움이되는지 확인하십시오. 그들은 최근에 조금 벗어났다.

  • Link Time Optimization이 포함 된 고급 컴파일러와 Visual Studio 2012의 컴파일러 또는 Clang 과 같은 다른 고가의 최적화를 사용하여 소스에서 새 버전의 ffmpeg를 컴파일 할 수 있습니다.

  • 운영 체제가 64 비트 인 경우 64 비트 ffmpeg 빌드를 사용하여 5 ~ 10 % 이상의 성능 속도를 얻을 수 있습니다. 추가 CPU 레지스터는 엔코더 또는 이미지 크기 조정 알고리즘의 긴밀한 루프에 확실히 도움이됩니다. 지금까지 “i5″라는 브랜드의 모든 프로세서는 64 비트를 지원하므로 32 비트를 실행하는 경우 64 비트 OS를 설치하는 것이 좋습니다.

  • 밀리 초 를 심각하게 줄여야하고 C에 대한 많은 시간과 지식이있는 경우 프로파일 러를 사용하여 ffmpeg의 디버그 빌드 시간을 지정하십시오. 가장 많은 시간을 소비하는 위치 (어떤 메소드 / 필터 / 코덱에서)를 참조하십시오. 미세 최적화를 수행하거나 속도를 높이기 위해 모서리를 잘라낼 수 있는지 확인하십시오.


답변