Я пытаюсь адаптировать код для добавления функции захвата звука (в прямом эфире) с помощью ffmpeg и directshow.
Когда я пытаюсь поиграть с ffplay файлом 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)
Когда ясоздайте переменную lookout на gdb сразу после открытия.
Я смотрю nb_streams в pFormatCtx-> nb_streams, и он равен 1. Единственный поток, который я могу найти в потоке pFormatCtx->, - это видео.И именно поэтому я не могу уловить звук.
Поэтому я спрашиваю, делаю ли я что-то не так с моим открытием или я что-то пропускаю.
Ps: я знаюпоказанный код короткий, но проблема появляется на этом самом этапе!
Спасибо
Курт
- РЕДАКТИРОВАТЬ -
Я такжезаметил, что когда я снимаю AVFormatContext, видео поток имеет размер 456x32.И я могу найти тот же самый размер окна, отображаемого при попытке запустить поврежденный скрипт с помощью ffplay.
Исходный формат видео при воспроизведении правильного сценария с использованием ffplay имеет размер 1920x1080
Я думаю, что моя проблема, возможно, глубже, чем простой факт невозможности получить аудиопоток.
Я пытаюсь выяснить, как узнать сообщение об ошибке, которое отображается в окнах 456x32
- EDIT2 -
Я выясняю, что написано на этом изображении, и моя проблема решена, плохо установленный avs-скрипт, старый, был местом.
Мне стыдно.