Russian Qt Forum
Ноябрь 22, 2024, 11:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: vlc-qt не проигрываются видео с русскими буквами в названии  (Прочитано 7074 раз)
79500539520
Гость
« : Февраль 17, 2017, 10:12 »

использую vlc-qt в vlcmedia передаю урлик, если в названии нет русских букв видео проигрывается в противном случае
libvlc: VLC is unable to open the MRL 'http://192.168.254.254/media/storage/Velikolepnaya_semerka_2016/Великолепная семерка (The Magnificent Seven).mkv'. Check the log for details.
код программы
    _instance = new VlcInstance(VlcCommon::args(), this);
    QString file ="http://192.168.254.254/media/storage/Velikolepnaya_semerka_2016/Великолепная семерка (The Magnificent Seven).mkv";
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    qDebug()<<"codac=r"<<codec->toUnicode(file.toUtf8());
    QTextCodec::setCodecForLocale(codec);
    _media = new VlcMedia(codec->toUnicode(file.toUtf8()),_instance);
   _player = new VlcMediaPlayer(_instance);
   _player->setVideoWidget(ui->video);
   ui->video->setMediaPlayer(_player);
    _player->open(_media);
    _player->play();
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Февраль 17, 2017, 10:21 »

А это работает?
"http://192.168.254.254/media/storage/Velikolepnaya_semerka_2016/%D0%92%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%BB%D0%B5%D0%BF%D0%BD%D0%B0%D1%8F%20%D1%81%D0%B5%D0%BC%D0%B5%D1%80%D0%BA%D0%B0%20%28The%20Magnificent%20Seven%29.mkv"
Записан

panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #2 : Февраль 17, 2017, 10:22 »

Кирилица в последнее время не популярна у западных разработчиков.
Нотепад++ перестал нормально кирилицу распознавать.
И многий софт херовничает.
Вобще западные разрабы забивают на славян стабильно.
Подумываю забить на них в ответ и писать коменты в коде на кирилице Улыбающийся
« Последнее редактирование: Февраль 17, 2017, 10:28 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Февраль 17, 2017, 10:24 »

Цитировать
Код
C++ (Qt)
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
 

1. А зачем это? У Вас исходники не в UTF8?
2. А попробуйте задавать путь через какой-нить виджет (QLineEdit к примеру)?
3. А сам VLC плеер открывает этот урлик?

Я когда-то оч. давно использовал VLC и вроде оно (имею ввиду с русскими путями , а не то что мне надо было  Улыбающийся ) работало у меня:

Код
C++ (Qt)
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
 
   QString fileName = QFileDialog::getOpenFileName(nullptr, QDir::homePath(), QObject::tr("Open Video"));
    if (fileName.isEmpty())
        return 0;
 
   static const char * vlc_argv[] = {
//        "-v",
       "--ignore-config",
       "--video-splitter=panoramix", // vlc2.2.2
//        "--vout-filter=panoramix", // vlc 1.1.11
       "--panoramix-cols=7",
       "--panoramix-rows=1",
       "--panoramix-bz-length=0",
       "--panoramix-bz-height=0"
 
   };
   static const int vlc_argc = sizeof(vlc_argv) / sizeof(vlc_argv[0]);
 
   libvlc_instance_t *inst = ::libvlc_new(vlc_argc, vlc_argv);
 
   ::libvlc_set_app_id(inst, "org.my.wall", "2.2.1", "wall"); // vlc 2.2.2
   ::libvlc_set_user_agent (inst, "My Wall", "My/2.2.1"); // vlc 2.2.2
 
   const QByteArray nativePath = QDir::toNativeSeparators(fileName).toUtf8();
 
   libvlc_media_t *m = ::libvlc_media_new_path(inst, nativePath.constData());
 
   // loop
   ::libvlc_media_add_option(m, "input-repeat=-1");
 
   libvlc_media_player_t *mp = ::libvlc_media_player_new_from_media(m);
 
   /*
   auto layout = new QVBoxLayout;
   auto videoWidget = new QWidget;
   layout->addWidget(videoWidget);
 
   auto container = new QWidget;
   container->setLayout(layout);
 
   ::libvlc_media_player_set_hwnd(mp, HWND(videoWidget->winId()));
   */

 
   ::libvlc_media_release(m);
 
   ::libvlc_media_player_play(mp);
 
   return a.exec();
}
 

Как-то так было, задавал путь через QFileDialog.

PS: Но то был путь к локальному файлу, а не URL.
« Последнее редактирование: Февраль 17, 2017, 10:38 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Февраль 17, 2017, 10:33 »

Подумываю забить на них в ответ и писать коменты в коде на кирилице Улыбающийся

+100500, можно даже сам код на кирилице, шоб уж наверняка.
Записан

ArchLinux x86_64 / Win10 64 bit
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #5 : Февраль 17, 2017, 10:35 »

Подумываю забить на них в ответ и писать коменты в коде на кирилице Улыбающийся

+100500, можно даже сам код на кирилице, шоб уж наверняка.

(Привет, 1C!) Веселый
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Февраль 17, 2017, 13:44 »

Подумываю забить на них в ответ и писать коменты в коде на кирилице Улыбающийся

+100500, можно даже сам код на кирилице, шоб уж наверняка.
https://habrahabr.ru/post/116301/#comment_3773449
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.091 секунд. Запросов: 23.