python

Python

Pythonを使ってtsファイルをmp4に変換

Pythonを使って動画のtsファイルをmp4に変換する処理で、ffmpegを使用します。

ffmpegは多くのプラットフォームで利用可能で、動画・音声の変換や編集に広く使用されています。

まず、Pythonで外部コマンドを実行するためにsubprocessモジュールを使用します。

そして、ffmpegを呼び出して.tsファイルを.mp4に変換します。

ffmpegをコマンドラインから使えるようにインストールし、Pythonスクリプト内でsubprocessを使ってffmpegを呼び出します。

import subprocess

def convert_ts_to_mp4(input_file, output_file):
    try:
        # ffmpegを呼び出して.tsファイルを.mp4に変換
        subprocess.run(['ffmpeg', '-i', input_file, '-c:v', 'libx264', '-c:a', 'aac', output_file], check=True)
        ##画質を落として高速化
        ##subprocess.run(['ffmpeg', '-i', input_file, '-c:v', 'libx264', '-crf', '23', output_file], check=True)
        print("変換が完了しました。")
    except subprocess.CalledProcessError as e:
        print("変換中にエラーが発生しました。")
        print(e)

if __name__ == "__main__":
    input_ts_file = "input.ts"   # 変換したい.tsファイルのパスを指定
    output_mp4_file = "output.mp4"  # 出力ファイル名(.mp4)を指定
    convert_ts_to_mp4(input_ts_file, output_mp4_file)

動画が長いほど変換に時間がかかります。

短い動画は比較的高速に変換されますが、長い動画はそれに比例して時間がかかります。

実行環境によりますが、大きく長いファイルの場合、元の動画の大きさ以上に時間がかかります。

  • この記事を書いた人

朝倉卍丸

シングルモルトスコッチなどのお土産を持ってきた人を助けるのが好きです。サービスの分割が重要ですが、まあ昔ながらの方法でやりたいこともありますよね。

よく読まれている記事

条件の0=0は全てが正であるを意味するSQL 1

SQLの条件に0=0のような記述を見かけます。 変わった書き方の条件ですが、これは「全てが正である」事を意味しており、結合条件の場合はCROSS JOINと同じです。 下記の例で言えば、結合するsub ...

DISTINCTを使わないで重複排除を考えるSQL 2

SQLのDISTINCTはEXISTSとかGROUP BYでなんとかする事もできます。 DISTINCTは暗黙的なソートがされますが、何のDBを使うにせよ過去のバージョンならともかく、最近のバージョン ...

RFC 5322に準拠させた正規表現言語別 3

RFC5322で定義されている正規表現を、各言語の正規表現に変化させた形になります。 完全な電子メール正規表現は存在しないので、結局のところ何かの公式基準に従っていたとしても、自分が携わるサービスのル ...

-Python