Я создаю кроссплатформенное приложение для записи мультимедийных файлов для постоянной обработки. Это основано на унаследованном приложении, и я не могу переписать его, используя альтернативные библиотеки.
Моя текущая проблема заключается в том, что QMediaRecorder явно не сохраняет видеофайл на локальный диск - я временно жестко запрограммировал файл для сохранения как banana.mov
в корневую папку пользователя.
При выполнении выходной файл не сохраняется.
Я попытался принудительно установить разрешение, как было предложено здесь и видели, что у других были проблемы с записью из окон, но OSX был хорошо
Среда разработки OSX 10.10 с Qt5.4 (такая же проблема возникает и на компьютере с Windows 8.1, использующем Qt5.3)
Этот код на Github основан на примере с камерой, с дополнительным кодом отладки, добавленным при попытке определить и воспроизвести проблему.
В ходе расследования обнаружены QMediaRecorder::supportedAudioCodecs и QMediaRecorder::supportedVideoCodecs возвращают пустые списки. Это происходит как в сборке OSX, так и в среде Windows.
Вывод отладки выглядит следующим образом:
Status change SIGNAL 'The recorder is initializing.'
Output location file:~/banana.mov
2015 01 05 14:59:58.111 Number of supported AUDIO Codecs 0
2015 01 05 14:59:58.111 Number of Audio sample rates 0
2015 01 05 14:59:58.111 Number of Video Codecs 0
2015 01 05 14:59:58.111 Number of Video Frame Rates 0
2015 01 05 14:59:58.111 Number of Containers 0
Location Changed SIGNAL 'file:~/banana.mov'
State change SIGNAL 'The recording is requested.'
Recording should have started
2015 01 05 14:59:58.111 Number of supported AUDIO Codecs 0
2015 01 05 14:59:58.111 Number of Audio sample rates 0
2015 01 05 14:59:58.111 Number of Video Codecs 0
2015 01 05 14:59:58.111 Number of Video Frame Rates 0
2015 01 05 14:59:58.111 Number of Containers 0
Status change SIGNAL 'Recording is requested but not active yet.'
У меня такое чувство, что я упускаю что-то действительно очевидное, я просто еще не заметил этого!
изменить 1 Очевидно, что статус Recording is requested but not active yet
, а не Recording is active
. Сейчас я пытаюсь понять, почему запись не началась.
изменить 2 Пример аудиорекордера записывает и сохраняет аудиофайл. Похоже, что QMediaRecorder не возвращает список доступных аудиокодеков, но QAudioRecorder возвращает список аудиокодеков. Я получаю одинаковые результаты как в Windows 8.1, используя Qt5.3, так и в OSX, используя Qt 5.4.