Pythonで動画ファイルの情報をpymediaInfoのモジュールを使って取得し、
Terminalで表示される結果をGUI上のMessage Listの部分に表示させたいです。
Terminalに表示するところまではできましたが、それをGUI上に表示することができません。
Python
1import tkinter as tk 2import tkinter.filedialog as tkfd 3from pymediainfo import MediaInfo 4 5# グローバル変数 6acv_path = "" 7f_path_list = [] 8 9### この下に関数を書く ### 10 11def select_file(): 12 f_conf = [('MOV file (*.mov)', '*mov'), ('AVI file (*.avi)', '*.avi'),('MP4 file (*.mp4)', '*.mp4')] 13 paths = tkfd.askopenfiles(filetypes=f_conf) 14 for f in paths: 15 f_path_list.append(f.name) 16 # Insert to Message List 17 msgList.insert(tk.END, f_path_list) 18 # Insert Input Path TextBox 19 inpFld.insert(tk.END, f_path_list) 20 21 22def get_mediainfo(): 23 media_info = MediaInfo.parse('/Path') 24 for track in media_info.tracks: 25 #for k in track.to_data().keys(): 26 #print("{}.{}={}".format(track.track_type,k,track.to_data()[k])) 27 if track.track_type == 'Video': 28 print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") 29 print("{} video_format {}".format(track.track_type,track.to_data()["format"])) 30 print("{} other_format {}".format(track.track_type,track.to_data()["other_format"][0])) 31 print("{} codec_id {}".format(track.track_type,track.to_data()["codec_id"])) 32 print("{} width {}".format(track.track_type,track.to_data()["width"])) 33 print("{} height {}".format(track.track_type,track.to_data()["height"])) 34 print("{} framerate {}".format(track.track_type,track.to_data()["frame_rate"])) 35 print("{} scan_type {}".format(track.track_type,track.to_data()["scan_type"])) 36 print("{} duration {}".format(track.track_type,track.to_data()["other_duration"][3][0:8])) 37 print("{} display_aspect_ratio {}".format(track.track_type,track.to_data()["display_aspect_ratio"])) 38 print("{} color_primaries {}".format(track.track_type,track.to_data()["color_primaries"])) 39 print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") 40 elif track.track_type == 'Audio': 41 print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") 42 print("{} format {}".format(track.track_type,track.to_data()["format"])) 43 print("{} codec_id {}".format(track.track_type,track.to_data()["codec_id"])) 44 print("{} channel_s {}".format(track.track_type,track.to_data()["channel_s"])) 45 print("{} other_channel_s {}".format(track.track_type,track.to_data()["other_channel_s"][0])) 46 print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") 47 print("********************************************************************") 48 result = () 49 msgList.insert(tk.END,result) 50 51 52 53 54def close_window(): 55 win.destroy() 56 57 58 59if __name__ == "__main__": 60 # Main Window 61 win = tk.Tk() 62 # Window Title 63 win.title("MediaInfo App") 64 # Window Size 65 win.geometry("500x510") 66 # Window Resizable 67 #win.resizable(0,0) 68 # Window Background 69 win.configure(bg="#52514F") 70 71### この下に描画内容を書く ### 72 #メインフレーム 73 mFrm = tk.Frame(win) 74 mFrm.configure(bg="#52514F") 75 mFrm.pack(padx=3, pady=3, fill="both", expand=1) 76 77 # 通知リスト 78 msgList = tk.Listbox(mFrm) 79 msgList.configure(height=20, width=50) 80 msgList.pack(padx=10, pady=10) 81 82 # 実行ボタン用のフレーム 83 ExeFrm = tk.Label(mFrm) 84 ExeFrm.configure(fg="white", bg="#52514F", padx="20", pady="10") 85 ExeFrm.pack() 86 87 # 実行ボタン 88 exeBtn = tk.Button(ExeFrm) 89 exeBtn.configure(text="Execute Analysis", command=get_mediainfo) 90 exeBtn.pack() 91 92 # Input Path ボタン用のフレーム 93 InpFrm = tk.LabelFrame(mFrm) 94 InpFrm.configure(text="Input Settings", fg="white", bg="#52514F", padx="20", pady="10") 95 InpFrm.pack(pady=5) 96 97 # Input Path ラベル 98 inpTxt = tk.Label(InpFrm) 99 inpTxt.configure(text="Input Path | 入力", fg="white", bg="#52514F", font=('Helvetica', 10)) 100 inpTxt.pack(side="left", padx=5) 101 102 # Input Path 表示 103 inpFld = tk.Entry(InpFrm) 104 inpFld.configure(fg="black", highlightbackground="#52514F") 105 inpFld.pack(side="left", padx=5) 106 107 # ファイル選択ボタン 108 inpBtn = tk.Button(InpFrm) 109 inpBtn.configure(text="Select File", command=select_file) 110 inpBtn.pack(side="right", padx=5) 111 112 # Exitボタン 113 extBtn = tk.Button(mFrm) 114 extBtn.configure(text="Exit", command=close_window) 115 extBtn.pack(padx=5,pady=5) 116 117 118 # 描画 119 win.mainloop()
ソースのパス(/Path)をdef select_file内で選択したファイルパスを使って処理したい。
media_info = MediaInfo.parse('/Path')
※以前、FFmpegを使って情報の取得をしようとしていましたが、なかなか上手くいかないのでモジュールを使って行うことに挑戦しました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/09/27 11:17
2020/09/28 00:49 編集