여러분, 안녕하세요.사운드와 원본 비디오 데이터간에 ffmpeg가 커지면 지연되는 것을 방지하려면 어떻게합니까?
내 문제는 다음과 같습니다. 원시 비디오 프레임을 표준 출력으로 파이핑하는 프로그램이 있습니다. 이 프로그램은 OpenCV를 사용하여 비디오를 캡처하고 처리하며 처리 된 프레임을 직접 출력합니다. 루프가 내가 선택한 프레임 속도에 동기화됩니다. 나는 ffmpeg를 표준 입력에서 읽기 위해 사용하고 있으며 모든 것이 비디오에서 잘 작동한다. 그러나 이제는 큰 문제가있는 사운드를 추가했습니다. 점점 더 지연되고 있으며 정말로 제거해야합니다. 그래서 여기에 제 아이디어가 있습니다. 그러나 당신의 도움이 정말로 필요합니다 :
원시 비디오에 타임 스탬프 정보를 포함시키는 방법을 찾아야합니다. ffmpeg가 이해할 수 있으려면, 알려진 원시 비디오 호환 컨테이너 여야합니다. 그리고 컨테이너 API를 사용하여 프로그램의 표준 출력에 파이프해야합니다. 나는 비디오 포맷과 코덱의 정글에서 무엇을 사용해야할지 모르며, ffmpeg에서 타임 스탬프를 동기화하는 방법을 알지 못한다. ...
누구나 아이디어가 있다면, 나는 정말로 여기에 관심이있다.
./myprogram | ffmpeg -y -f alsa -i pulse -ac 2 -f rawvideo -vcodec rawvideo -r 24 -s 640x480 -pix_fmt bgr24 -i - -vcodec libx264 -pix_fmt yuv420p -r 24 -f flv -ar 44100 out.flv;
Thand 대단히,
비디오와 오디오 사이의 지연이 멀티미디어에있는 오래 된 문제 롤랜드
감사합니다. Alvin, 귀하의 링크는 매우 유용합니다! 하지만 내가 잊었던 점과 꽤 중요한 점은 스트리밍을 위해 ffmpeg를 사용한다는 것입니다 ... 마지막 응용 프로그램에서 rtmp url로 flv 파일 이름을 바꿀 것이므로 대담성으로 후 처리 작업을 할 여력이 없습니다 예를 들면. 그러나 링크에서 사람들은 ffmpeg 문서의 "타임 스탬프와 일치하도록 오디오 스트림을 늘리거나 줄이는"ffmpeg의 "async"옵션에 대해 이야기합니다. 내 원시 비디오 입력에 타임 스탬프를 포함시키는 방법을 알고 있습니까? – rkohser
나는 오디오 스트림의 실시간 스트레치/스퀴즈를 다루지 않았기 때문에 내 지식 영역 밖에있다. (예를 보았지만 현장을 기억할 수도없고 직접 시도하지도 않았다. . –