Как иметь avbin.dll в локальном каталоге (не C: \ Windows \ System) (для pyglet 1.2.4) - PullRequest
0 голосов
/ 13 мая 2019

Используя pyglet 1.2.4, я использую avbin.dll, чтобы позволить мне проигрывать аудио, и все источники говорят, что он должен идти в C: \ Windows \ System.Это работает, но я хотел бы поместить в локальную папку, чтобы при загрузке пользователю не нужно было явно помещать его туда.

Как я могу сделать так, чтобы я указывал каталогavbin.dll / есть в той же папке, что и код?

Здесь avbin.dll находится в папке с кодом, но я не могу найти, как они это сделали.https://github.com/surajsinghbisht054/Python-Media-Player/tree/master/Python%20Media%20Player%20Version%200.0.1/Tools Я пытался пройти через это, но ничего не нашел

Я пытался

pyglet.options["search_local_libs"]

, но оно уже было установлено в true.

Iтакже добавил его в переменную path, но это ничего не изменило.

Намерение состояло в том, чтобы иметь возможность воспроизводить аудиофайлы.

Дополнительно: используя pyglet 1.4, я попытался использовать ffmpeg и ffmpeg-pyglet, который прекрасно работает, за исключением того, что pyglet.app.run() требуется, чтобы остановить воспроизведение первой части трека при повторении, но его основной цикл мешает tkinter, и я не могу заставить работать ни один из потоков, чтопочему я вернулся к 1.2.4.

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Эту проблему можно решить, просто создав программу установки с помощью NSIS [Nullsoft Scriptable Install System]. Легко создать программу установки с помощью NSIS просто для справки. Я покажу вам!

 !include LogicLib.nsh
 !include x64.nsh
   # define installer name
   OutFile "mp3player_installer.exe"

;set the default install directoy to programfilesx86
InstallDir $PROGRAMFILES32

 Section 
   ;checking system architechure 
   ;if 64bit set the installation path to SysWOW64 else to system32
   ${If} ${RunningX64} 
     SetOutPath "$WINDIR\SysWOW64\"
     File avbin.dll
   ${Else}
     SetOutPath "$WINDIR\System32\"
     File avbin.dll
   ${EndIf}
 SectionEnd

 Section
   ;set the output path to programfilesx86/Application dir
   SetOutPath "$INSTDIR\Mp3Player\"
   ;the file need to copy ref with File Attribute you can set multiple file refs here
    File Application.py
   ;just create an uninstaller 
    WriteUninstaller "$INSTDIR\Mp3Player\uninstall.exe"
 SectionEnd

 Section "Uninstall"
  # Always delete uninstaller first
  Delete "$INSTDIR\Mp3Player\uninstaller.exe"

  # now delete installed file
  Delete "$INSTDIR\Mp3Player\Application.py"
  Delete "$WINDIR\SysWOW64\avbin.dll"
SectionEnd

Вы можете установить приложение NSIS и просто создать файл installer.nsi, скопировать этот код и скомпилировать скрипт, просто щелкнув правой кнопкой мыши файл installer.nsi и выбрав команду compile with NSIS Script, в результате вы получите программу установки!

1 голос
/ 14 мая 2019

Если вы поместили avbin dll в вашу папку (или установили глобально с помощью установщика), напишите:

после импорта pyglet, вот так:

 import pyglet
 pyglet.lib.load_library('avbin')
 pyglet.have_avbin=True

Он загрузит и использует AVBIN

Примечание: в некоторых случаях ошибка dll не найдена, в этом случае скопируйте и вставьте avbin.dll [если вы используете 32-битный python] в windows-> SysWOW64 dir.

...