2011-11-16 4 views
0

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 스크립트는 오래된 것이 었습니다.

나는 부끄럽다.

+0

pFormatCtx-> nb_streams == 1이면 해당 파일에 스트림이 하나만 있습니다. –

+0

맞아요 코요테하지만이 파일을 ffplay 또는 가상 더빙으로 재생할 때 그 스트림이 분명히 2 스트림인지 확인할 수 있고 avs 파일에 의심의 여지없이 2 스트림이 포함되도록 소리를들을 수 있습니다 – Kurt

+0

해당 파일의 간단한 예를 업로드 할 수 있습니까? ? 즉, ffplay를 빌드하고 코드를 단계적으로 실행하여 ffplay가 어떻게 작동하는지 확인할 수 있습니다. –

답변

1

나쁨,

잘못 배치 된 avs 파일이 내 문제였습니다.

어쨌든 ffmpeg는 오류 메시지를 표시하는 방식으로 약간 고통 스럽습니다. 오류 메시지 나 예외가 발생하지 않고 스냅 샷을 만들도록 강요당했습니다.

관련 문제