Russian Qt Forum

Qt => Общие вопросы => Тема начата: ecspertiza от Декабрь 03, 2012, 20:31



Название: QProcess and VLC
Отправлено: ecspertiza от Декабрь 03, 2012, 20:31
Нужно из проги запустить видео файл с помощью vlc плеера. И все работает хорошо ,но только если в пути нет русских символов, если они есть то файл просто не открывается.

Всякие

Код:
    setlocale(LC_ALL,"");

    QTextCodec * codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForTr( codec );
    QTextCodec::setCodecForCStrings( codec );

в main.cpp стоят

причем VLC кидает такую забавную ошибку

Код:
Чтение файла не удалось:
VLC не может открыть файл "D:\Video\??????????????????\?????????????????? - ??????????????????.avi". (%m)
Этот источник не открывается:
VLC не может открыть MRL 'file:///D:/Video/Гришковец/Гришковец - Дредноуты.avi'. Ищите более подробную информацию в лог-файле.

то есть, он видит как то на половину :) тоесть в первом выводе у него проблемы ,а во втором все хорошо. Кто знает какую кодировку ему нужно под сунуть ? Windows-1251 пробовал, не прокатило, тоже и с CP866.


Название: Re: QProcess and VLC
Отправлено: twp от Декабрь 03, 2012, 20:49
а если так
Код
C++ (Qt)
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
 


Название: Re: QProcess and VLC
Отправлено: ecspertiza от Декабрь 03, 2012, 21:06
Тогда получается так (http://joxi.ru/MHjtdIh). Но из консоли файлы с русскими символами запускает хорошо.


Название: Re: QProcess and VLC
Отправлено: lit-uriy от Декабрь 03, 2012, 21:28
ecspertiza, а почему ты меняешь кодек для Си строк?
Может стоит самому VLC скармливать в качестве аргумента, соответствующим образом преобразованную строку и только


Название: Re: QProcess and VLC
Отправлено: ecspertiza от Декабрь 03, 2012, 21:29
Из консоли VLC тоже не кошерно работает, не знаю в чем там у него косяк, но если запускаю так (http://joxi.ru/GQP4svO), то получаю ошибку как в первом посте, если запускаю без file:/// то все хорошо, беда в том что в программе я запускаю вместе с file:/// ибо если без него то vlc считает путь от того места где лежит мой софт, там путь вообще сумасшедший получается.


Название: Re: QProcess and VLC
Отправлено: ecspertiza от Декабрь 03, 2012, 21:30
ecspertiza, а почему ты меняешь кодек для Си строк?

для libtorrent нужно. Иначе он файлы в закачку добавить не может. Но как написал выше походу трабла в самом vlc, щас буду думать как ее обойти :)


Название: Re: QProcess and VLC
Отправлено: ecspertiza от Декабрь 03, 2012, 21:48
Вообщем заработало, я запускал вот так

Код:
process.startDetached(vlcPath,QStringList() << "file:///"  + QDir::fromNativeSeparators(fileName))

а нужно вот так

Код:
QFileName fi(fileName);
process.startDetached(vlcPath,QStringList() << QDir::fromNativeSeparators(fi.fileName()),QDir::fromNativeSeparators(fi.path()))

где fileName - это имя видео файла для запуска. В чем прикол я так и не понял, походу где то в VLC косяк при старте с префиксом file:///