From 561731dde70f3e3fdc806891cc56aac36553fb11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=9B=E4=B8=9E=E5=AE=8F?= Date: Fri, 16 Nov 2018 17:46:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E7=94=A8ffmpeg=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/i3thuan5/siunn1ua2ah4/issues/6#issuecomment-439310399 --- .../\345\201\232\345\275\261\347\211\207.py" | 60 ++++++++----------- 1 file changed, 25 insertions(+), 35 deletions(-) diff --git "a/\351\254\245\345\201\232\344\274\231/\345\201\232\345\275\261\347\211\207.py" "b/\351\254\245\345\201\232\344\274\231/\345\201\232\345\275\261\347\211\207.py" index 69c08b2..a9e0f2d 100644 --- "a/\351\254\245\345\201\232\344\274\231/\345\201\232\345\275\261\347\211\207.py" +++ "b/\351\254\245\345\201\232\344\274\231/\345\201\232\345\275\261\347\211\207.py" @@ -54,42 +54,32 @@ def 收著資料(cls, 腔口參數, 圖陣列, 聲陣列, 字陣列, 存檔所 @classmethod def 敆做伙(cls, 圖陣列, 聲陣列, 字陣列, 存檔所在): with TemporaryDirectory() as 目錄: - 全部結果檔 = [] - for 第幾个, (圖, 聲, 字) in enumerate(zip(圖陣列, 聲陣列, 字陣列)): - 結果檔 = join(目錄, 'output{}.mkv'.format(第幾个)) - 暫時圖 = join(目錄, 'jpg{}.jpg'.format(第幾个)) - cls._走指令([ - 'convert', - 圖, - 暫時圖, - ]) - cls._走指令([ - 'avconv', - '-i', 暫時圖, '-i', 聲, '-vf', 'subtitles={}'.format(字), - '-s', 'svga', '-y', 結果檔, - ]) - 全部結果檔.append(結果檔) - 敆做伙結果檔 = join(目錄, 'result.mkv') - 敆做伙指令 = ['mkvmerge'] - 敆做伙指令.append('-o') - 敆做伙指令.append(敆做伙結果檔) - for 結果檔 in 全部結果檔: - 敆做伙指令.append(結果檔) - 敆做伙指令.append('+') - 敆做伙指令.pop() - cls._走指令(敆做伙指令) - - 敆做伙轉換檔 = join(目錄, 'result.mp4') - 上尾轉換指令 = ['avconv'] - 上尾轉換指令.append('-i') - 上尾轉換指令.append(敆做伙結果檔) -# 上尾轉換指令.append('-c') -# 上尾轉換指令.append('copy') - 上尾轉換指令.append('-y') - 上尾轉換指令.append(敆做伙轉換檔) - cls._走指令(上尾轉換指令) + 全部結果表 = join(目錄, 'tuan.pio') + with open(全部結果表, 'w') as 表: + for 第幾个, (圖, 聲, 字) in enumerate(zip(圖陣列, 聲陣列, 字陣列)): + 結果檔 = join(目錄, 'output{}.mp4'.format(第幾个)) + 暫時圖 = join(目錄, 'jpg{}.jpg'.format(第幾个)) + cls._走指令([ + 'convert', + 圖, + 暫時圖, + ]) + cls._走指令([ + 'avconv', + '-i', 暫時圖, '-i', 聲, '-vf', 'subtitles={}'.format(字), + '-s', 'svga', '-y', 結果檔, + ]) + print("file '{}'".format(結果檔), file=表) - copyfile(敆做伙轉換檔, 存檔所在) + 敆做伙指令 = [ + 'ffmpeg', + '-f', 'concat', + '-safe', '0', + '-i', 全部結果表, + '-c', 'copy', + 存檔所在 + ] + cls._走指令(敆做伙指令) @classmethod def 轉文本資料(cls, 腔口參數, 文字陣列, 目錄):