ffmpeg 및 directshow를 사용하여 라이브 캡처 기능을 추가하기 위해 코드를 수정하려고합니다.오디오 스트림을 찾을수 없습니다
AVIsynth 파일을 재생하려고하면 오디오와 비디오가 모두 제대로 작동합니다. 그러나이 입력 파일을 코드로 열면 비디오 스트림 만 찾습니다.
AVS를 파일 :
V = DirectShowSource("Decklink_HDMI.grf", fps=10, framecount=1000000000, seek=false, audio=false)
A = DirectShowSource("Decklink_Audio.grf", fps=1, framecount=1000000000, video=false)
AudioDub(V, A)
개방 코드 :
ffmpeg::AVInputFormat * ifmt;
ifmt = ffmpeg::av_find_input_format("avs");
// Open input file
if(ffmpeg::avformat_open_input(&pFormatCtx, filename.toStdString().c_str(), ifmt, NULL) != 0)
난 그냥 개봉 후 GDB에 변수 감시를합니다.
저는 pFormatCtx-> nb_streams에서 nb_streams를보고 있는데, 1 입니다. pFormatCtx-> stream에서 찾을 수있는 유일한 스트림은 비디오입니다. 그래서 나는 소리를 포착 할 수 없습니다.
그래서 나는 내가 열리거나 뭔가를 놓친다 고 잘못하고 있는지 묻습니다.
Ps : 표시된 코드는 짧지 만 문제는 바로이 단계에서 나타납니다!
가 나는 또한 내가 AVFormatContext 덤프 때 비디오 스트림은 456x32 크기를 가지고 것으로 나타났습니다 - 편집 -
당신에게커트
감사드립니다. 그리고 ffplay를 사용하여 손상된 스크립트를 시작하려고 할 때이 창 크기와 동일한 크기가 표시됩니다.
내가 ffplay와 올바른 스크립트를 재생할 원래 비디오 포맷은 내 문제는 오디오 스트림을 얻을 수 없다는 단순한 사실보다 어쩌면 더 깊은 생각 1920 × 1080
이다.
내가
이 456x32 창에 표시되는 오류 메시지가 알고있는 방법을 찾기 위해 노력하고있어 - EDIT2 -이 이미지에 기록되고 있는지 확인
을 내 문제가 해결 된, 잘못 배치 된 avs 스크립트는 오래된 것이 었습니다.
나는 부끄럽다.
pFormatCtx-> nb_streams == 1이면 해당 파일에 스트림이 하나만 있습니다. –
맞아요 코요테하지만이 파일을 ffplay 또는 가상 더빙으로 재생할 때 그 스트림이 분명히 2 스트림인지 확인할 수 있고 avs 파일에 의심의 여지없이 2 스트림이 포함되도록 소리를들을 수 있습니다 – Kurt
해당 파일의 간단한 예를 업로드 할 수 있습니까? ? 즉, ffplay를 빌드하고 코드를 단계적으로 실행하여 ffplay가 어떻게 작동하는지 확인할 수 있습니다. –