[{"data":1,"prerenderedAt":1497},["ShallowReactive",2],{"\u002Fblog\u002Fanime-encode-study":3,"\u002Fblog\u002Fanime-encode-study-surround":1490},{"id":4,"title":5,"body":6,"date":1477,"description":1478,"extension":1479,"meta":1480,"navigation":427,"path":1481,"seo":1482,"stem":1483,"tags":1484,"__hash__":1489},"blog\u002Fblog\u002Fanime-encode-study.md","アニメエンコードの研究(笑)",{"type":7,"value":8,"toc":1451},"minimark",[9,13,17,20,23,28,90,97,100,103,155,158,164,167,173,179,185,188,194,200,206,209,212,215,288,291,297,303,309,315,321,324,330,333,339,342,348,351,354,357,1400,1403,1407,1413,1418,1423,1426,1429,1432,1435,1438,1444,1447],[10,11,12],"h2",{"id":12},"アニメエンコード",[14,15,16],"p",{},"録画などを容量節約のために高効率なコーデックで再エンコードをすることです。",[14,18,19],{},"元データが大体1.4GBで大体300~400MBくらいに削減できるような設定を狙っていきます。",[10,21,22],{"id":22},"使用するツール",[24,25,27],"h3",{"id":26},"nvenc","NVEnc",[29,30,33,34],"div",{"className":31},[32],"remark-link-card-plus__container","\n  ",[35,36,44,45,81,33],"a",{"href":37,"target":38,"rel":39,"className":42},"https:\u002F\u002Fgithub.com\u002Frigaya\u002FNVEnc","_blank",[40,41],"noreferrer","noopener",[43],"remark-link-card-plus__card","\n    ",[29,46,33,49,33,63],{"className":47},[48],"remark-link-card-plus__main",[29,50,44,53,44,58,33],{"className":51},[52],"remark-link-card-plus__content",[29,54,57],{"className":55},[56],"remark-link-card-plus__title","GitHub - rigaya\u002FNVEnc: NVENCによる高速エンコードの性能実験",[29,59,62],{"className":60},[61],"remark-link-card-plus__description","NVENCによる高速エンコードの性能実験. Contribute to rigaya\u002FNVEnc development by creating an account on GitHub.",[29,64,44,67,44,75,33],{"className":65},[66],"remark-link-card-plus__meta",[68,69],"img",{"src":70,"className":71,"width":73,"height":73,"alt":74},"https:\u002F\u002Fgithub.githubassets.com\u002Ffavicons\u002Ffavicon.svg",[72],"remark-link-card-plus__favicon",14,"",[76,77,80],"span",{"className":78},[79],"remark-link-card-plus__url","github.com",[29,82,33,85],{"className":83},[84],"remark-link-card-plus__thumbnail",[68,86],{"src":87,"className":88,"alt":74},"https:\u002F\u002Fopengraph.githubassets.com\u002F9febcaf3aa6b3e42e58e7c3f0204086035c14995646f335a1005436ac6c6f56f\u002Frigaya\u002FNVEnc",[89],"remark-link-card-plus__image",[14,91,92,93,96],{},"rigaya氏が開発しているツールです。性能と画質を調査することを目的としているソフトウェアらしいですが、普通にツールとして利用可能です。",[94,95],"br",{},"\nというかそっちが目的でしょ。しらんけど。",[10,98,99],{"id":99},"コマンド",[14,101,102],{},"基本的なコマンドは次の通り。",[104,105,109],"pre",{"className":106,"code":107,"language":108,"meta":74,"style":74},"language-shell shiki shiki-themes catppuccin-macchiato","nvencc -i \"input.mkv\" --avhw -c hevc --audio-codec libopus --audio-bitrate 128 -o \"output.mkv\"\n","shell",[110,111,112],"code",{"__ignoreMap":74},[76,113,116,120,124,127,130,133,136,139,142,145,149,152],{"class":114,"line":115},"line",1,[76,117,119],{"class":118},"siK8c","nvencc",[76,121,123],{"class":122},"sSZ1V"," -i",[76,125,126],{"class":122}," \"input.mkv\"",[76,128,129],{"class":122}," --avhw",[76,131,132],{"class":122}," -c",[76,134,135],{"class":122}," hevc",[76,137,138],{"class":122}," --audio-codec",[76,140,141],{"class":122}," libopus",[76,143,144],{"class":122}," --audio-bitrate",[76,146,148],{"class":147},"s7Qn8"," 128",[76,150,151],{"class":122}," -o",[76,153,154],{"class":122}," \"output.mkv\"\n",[14,156,157],{},"各オプションの解説をしておきます。",[24,159,161],{"id":160},"i-inputmkv",[110,162,163],{},"-i “input.mkv“",[14,165,166],{},"ファイルを入力します。",[24,168,170],{"id":169},"avhw",[110,171,172],{},"--avhw",[14,174,175,176,178],{},"ファイルの読み込みにGPUを使用する。h264であれば使用可能。",[94,177],{},"\nCPUを使用するよりも高速です。",[24,180,182],{"id":181},"c-hevc",[110,183,184],{},"-c hevc",[14,186,187],{},"使用するコーデックを選択します。割とどの環境でも再生可能なhevcを選択しています。",[24,189,191],{"id":190},"audio-codec-libopus-audio-bitrate-128",[110,192,193],{},"--audio-codec libopus --audio-bitrate 128",[14,195,196,197,199],{},"音声をopusでエンコードする。ビットレートは128kbpsです。",[94,198],{},"\nWindowsのメディアプレイヤー以外なら再生できる。",[24,201,203],{"id":202},"o-outputmkv",[110,204,205],{},"-o \"output.mkv\"",[14,207,208],{},"出力ファイル。",[10,210,211],{"id":211},"現時点で使用しているコマンド",[14,213,214],{},"私が今使っているコマンドです。",[104,216,218],{"className":106,"code":217,"language":108,"meta":74,"style":74},"nvencc -i \"input.mkv\" --avhw -c hevc --qvbr 24 -u P6 --output-depth 10 --lookahead 32 -b 4 --bref-mode each --aq --aq-temporal --audio-codec libopus --audio-bitrate 128 -o \"output.mkv\"\n",[110,219,220],{"__ignoreMap":74},[76,221,222,224,226,228,230,232,234,237,240,243,246,249,252,255,258,261,264,267,270,273,276,278,280,282,284,286],{"class":114,"line":115},[76,223,119],{"class":118},[76,225,123],{"class":122},[76,227,126],{"class":122},[76,229,129],{"class":122},[76,231,132],{"class":122},[76,233,135],{"class":122},[76,235,236],{"class":122}," --qvbr",[76,238,239],{"class":147}," 24",[76,241,242],{"class":122}," -u",[76,244,245],{"class":122}," P6",[76,247,248],{"class":122}," --output-depth",[76,250,251],{"class":147}," 10",[76,253,254],{"class":122}," --lookahead",[76,256,257],{"class":147}," 32",[76,259,260],{"class":122}," -b",[76,262,263],{"class":147}," 4",[76,265,266],{"class":122}," --bref-mode",[76,268,269],{"class":122}," each",[76,271,272],{"class":122}," --aq",[76,274,275],{"class":122}," --aq-temporal",[76,277,138],{"class":122},[76,279,141],{"class":122},[76,281,144],{"class":122},[76,283,148],{"class":147},[76,285,151],{"class":122},[76,287,154],{"class":122},[14,289,290],{},"追加されたオプションの解説をしておきます。",[24,292,294],{"id":293},"qvbr-24",[110,295,296],{},"--qvbr 24",[14,298,299,300,302],{},"品質ベースの可変ビットレートです。24はそこそこって感じの値です。",[94,301],{},"\nもし画質が悪いようであれば値を小さくするといいです。ファイルサイズは大きくなりますけどね。",[24,304,306],{"id":305},"u-p6",[110,307,308],{},"-u P6",[14,310,311,312,314],{},"プリセットです。P6は画質と速度のバランスが最も良い値らしいです。",[94,313],{},"\n最も品質がいいのはP7。速度はあまり変わらない(10fpsくらい下がるだけ)",[24,316,318],{"id":317},"output-depth-10",[110,319,320],{},"--output-depth 10",[14,322,323],{},"10bitで出力する。背景のグラデーションなどが美しくなる。気持ち圧縮効率も上がるらしいですよ。",[24,325,327],{"id":326},"lookahead-32",[110,328,329],{},"--lookahead 32",[14,331,332],{},"先読みするフレーム数です。ビットレートの配分がいい感じになるそうです。",[24,334,336],{"id":335},"b-4-bref-mode-each",[110,337,338],{},"-b 4 --bref-mode each",[14,340,341],{},"Bフレームの設定です。Bフレームの参照をすべてのフレームにしています。",[24,343,345],{"id":344},"aq-aq-temporal",[110,346,347],{},"--aq --aq-temporal",[14,349,350],{},"空間・時間的な最適量子化を有効にする。ビットレートの配分をいい感じにする設定。",[14,352,353],{},"というような設定です。",[14,355,356],{},"変換用のpyスクリプトも書いたので残しておく。",[104,358,363],{"className":359,"code":360,"filename":361,"language":362,"meta":74,"style":74},"language-python shiki shiki-themes catppuccin-macchiato","import subprocess\nfrom pathlib import Path\nimport tkinter as tk\nfrom tkinter import filedialog, messagebox\n\nEXTS = {\n    \".mkv\",\n    \".mp4\",\n    \".m2ts\"\n}\n\ndef pick_input_dir() -> Path | None:\n    root = tk.Tk()\n    root.withdraw()\n    root.attributes(\"-topmost\", True)\n    folder = filedialog.askdirectory(title=\"入力フォルダ\")\n    root.destroy()\n    return Path(folder) if folder else None\n\ndef process_videos(input_dir: Path) -> int:\n    output_dir = input_dir \u002F \"out\"\n    output_dir.mkdir(exist_ok=True)\n\n    count = 0\n    for path in input_dir.iterdir():\n        if not path.is_file():\n            continue\n        if path.suffix.lower() not in EXTS:\n            continue\n        output_path = output_dir \u002F path.name\n        cmd = [\n            \"nvencc\",\n            \"-i\", str(path),\n            \"--avhw\",\n            \"-c\", \"hevc\",\n            \"--qvbr\", \"24\",\n            \"-u\", \"P6\",\n            \"--output-depth\", \"10\",\n            \"--lookahead\", \"32\",\n            \"-b\", \"4\", \"--bref-mode\", \"each\",\n            \"--aq\", \"--aq-temporal\",\n            \"--audio-codec\", \"libopus\",\n            \"--audio-bitrate\", \"128\",\n            \"-o\", str(output_path)\n        ]\n\n        print(\"Running\",\" \".join(cmd))\n        result = subprocess.run(cmd)\n        if result.returncode != 0:\n            print(f\"Failed: {path.name}\")\n            continue\n        count += 1\n        print(f\"Done: {path.name} -> {output_path}\")\n\n    return count\n\ndef main() -> None:\n    input_dir = pick_input_dir()\n    if input_dir is None:\n        return\n\n    if not input_dir.exists() or not input_dir.is_dir():\n        messagebox.showerror(\"エラー\", \"有効なフォルダが選択されませんでした。\")\n        return\n\n    processed = process_videos(input_dir=input_dir)\n    messagebox.showinfo(\"完了\",f\"{processed}個の動画を処理しました\")\n\nif __name__ == \"__main__\":\n    main()\n","henkan.py","python",[110,364,365,375,389,403,422,429,442,451,459,465,471,476,503,524,536,560,588,600,629,634,663,680,703,708,719,742,761,767,796,801,821,832,840,859,867,880,893,906,919,932,955,968,981,994,1011,1017,1022,1052,1074,1095,1129,1134,1146,1181,1186,1194,1199,1215,1227,1242,1248,1253,1283,1306,1311,1316,1336,1370,1375,1392],{"__ignoreMap":74},[76,366,367,371],{"class":114,"line":115},[76,368,370],{"class":369},"sIF4r","import",[76,372,374],{"class":373},"sFaBz"," subprocess\n",[76,376,378,381,384,386],{"class":114,"line":377},2,[76,379,380],{"class":369},"from",[76,382,383],{"class":373}," pathlib ",[76,385,370],{"class":369},[76,387,388],{"class":373}," Path\n",[76,390,392,394,397,400],{"class":114,"line":391},3,[76,393,370],{"class":369},[76,395,396],{"class":373}," tkinter ",[76,398,399],{"class":369},"as",[76,401,402],{"class":373}," tk\n",[76,404,406,408,410,412,415,419],{"class":114,"line":405},4,[76,407,380],{"class":369},[76,409,396],{"class":373},[76,411,370],{"class":369},[76,413,414],{"class":373}," filedialog",[76,416,418],{"class":417},"slVFb",",",[76,420,421],{"class":373}," messagebox\n",[76,423,425],{"class":114,"line":424},5,[76,426,428],{"emptyLinePlaceholder":427},true,"\n",[76,430,432,435,439],{"class":114,"line":431},6,[76,433,434],{"class":373},"EXTS ",[76,436,438],{"class":437},"sXptk","=",[76,440,441],{"class":417}," {\n",[76,443,445,448],{"class":114,"line":444},7,[76,446,447],{"class":122},"    \".mkv\"",[76,449,450],{"class":417},",\n",[76,452,454,457],{"class":114,"line":453},8,[76,455,456],{"class":122},"    \".mp4\"",[76,458,450],{"class":417},[76,460,462],{"class":114,"line":461},9,[76,463,464],{"class":122},"    \".m2ts\"\n",[76,466,468],{"class":114,"line":467},10,[76,469,470],{"class":417},"}\n",[76,472,474],{"class":114,"line":473},11,[76,475,428],{"emptyLinePlaceholder":427},[76,477,479,482,485,488,491,494,497,500],{"class":114,"line":478},12,[76,480,481],{"class":369},"def",[76,483,484],{"class":118}," pick_input_dir",[76,486,487],{"class":417},"()",[76,489,490],{"class":417}," ->",[76,492,493],{"class":373}," Path ",[76,495,496],{"class":437},"|",[76,498,499],{"class":147}," None",[76,501,502],{"class":417},":\n",[76,504,506,509,511,514,517,521],{"class":114,"line":505},13,[76,507,508],{"class":373},"    root ",[76,510,438],{"class":437},[76,512,513],{"class":373}," tk",[76,515,516],{"class":417},".",[76,518,520],{"class":519},"s57MT","Tk",[76,522,523],{"class":417},"()\n",[76,525,526,529,531,534],{"class":114,"line":73},[76,527,528],{"class":373},"    root",[76,530,516],{"class":417},[76,532,533],{"class":519},"withdraw",[76,535,523],{"class":417},[76,537,539,541,543,546,549,552,554,557],{"class":114,"line":538},15,[76,540,528],{"class":373},[76,542,516],{"class":417},[76,544,545],{"class":519},"attributes",[76,547,548],{"class":417},"(",[76,550,551],{"class":122},"\"-topmost\"",[76,553,418],{"class":417},[76,555,556],{"class":147}," True",[76,558,559],{"class":417},")\n",[76,561,563,566,568,570,572,575,577,581,583,586],{"class":114,"line":562},16,[76,564,565],{"class":373},"    folder ",[76,567,438],{"class":437},[76,569,414],{"class":373},[76,571,516],{"class":417},[76,573,574],{"class":519},"askdirectory",[76,576,548],{"class":417},[76,578,580],{"class":579},"skVQi","title",[76,582,438],{"class":437},[76,584,585],{"class":122},"\"入力フォルダ\"",[76,587,559],{"class":417},[76,589,591,593,595,598],{"class":114,"line":590},17,[76,592,528],{"class":373},[76,594,516],{"class":417},[76,596,597],{"class":519},"destroy",[76,599,523],{"class":417},[76,601,603,606,609,611,614,617,620,623,626],{"class":114,"line":602},18,[76,604,605],{"class":369},"    return",[76,607,608],{"class":519}," Path",[76,610,548],{"class":417},[76,612,613],{"class":373},"folder",[76,615,616],{"class":417},")",[76,618,619],{"class":369}," if",[76,621,622],{"class":373}," folder ",[76,624,625],{"class":369},"else",[76,627,628],{"class":147}," None\n",[76,630,632],{"class":114,"line":631},19,[76,633,428],{"emptyLinePlaceholder":427},[76,635,637,639,642,644,647,650,653,655,657,661],{"class":114,"line":636},20,[76,638,481],{"class":369},[76,640,641],{"class":118}," process_videos",[76,643,548],{"class":417},[76,645,646],{"class":579},"input_dir",[76,648,649],{"class":417},":",[76,651,608],{"class":652},"srmJT",[76,654,616],{"class":417},[76,656,490],{"class":417},[76,658,660],{"class":659},"sxfwU"," int",[76,662,502],{"class":417},[76,664,666,669,671,674,677],{"class":114,"line":665},21,[76,667,668],{"class":373},"    output_dir ",[76,670,438],{"class":437},[76,672,673],{"class":373}," input_dir ",[76,675,676],{"class":437},"\u002F",[76,678,679],{"class":122}," \"out\"\n",[76,681,683,686,688,691,693,696,698,701],{"class":114,"line":682},22,[76,684,685],{"class":373},"    output_dir",[76,687,516],{"class":417},[76,689,690],{"class":519},"mkdir",[76,692,548],{"class":417},[76,694,695],{"class":579},"exist_ok",[76,697,438],{"class":437},[76,699,700],{"class":147},"True",[76,702,559],{"class":417},[76,704,706],{"class":114,"line":705},23,[76,707,428],{"emptyLinePlaceholder":427},[76,709,711,714,716],{"class":114,"line":710},24,[76,712,713],{"class":373},"    count ",[76,715,438],{"class":437},[76,717,718],{"class":147}," 0\n",[76,720,722,725,728,731,734,736,739],{"class":114,"line":721},25,[76,723,724],{"class":369},"    for",[76,726,727],{"class":373}," path ",[76,729,730],{"class":369},"in",[76,732,733],{"class":373}," input_dir",[76,735,516],{"class":417},[76,737,738],{"class":519},"iterdir",[76,740,741],{"class":417},"():\n",[76,743,745,748,751,754,756,759],{"class":114,"line":744},26,[76,746,747],{"class":369},"        if",[76,749,750],{"class":369}," not",[76,752,753],{"class":373}," path",[76,755,516],{"class":417},[76,757,758],{"class":519},"is_file",[76,760,741],{"class":417},[76,762,764],{"class":114,"line":763},27,[76,765,766],{"class":369},"            continue\n",[76,768,770,772,774,776,779,781,784,786,788,791,794],{"class":114,"line":769},28,[76,771,747],{"class":369},[76,773,753],{"class":373},[76,775,516],{"class":417},[76,777,778],{"class":373},"suffix",[76,780,516],{"class":417},[76,782,783],{"class":519},"lower",[76,785,487],{"class":417},[76,787,750],{"class":369},[76,789,790],{"class":369}," in",[76,792,793],{"class":373}," EXTS",[76,795,502],{"class":417},[76,797,799],{"class":114,"line":798},29,[76,800,766],{"class":369},[76,802,804,807,809,812,814,816,818],{"class":114,"line":803},30,[76,805,806],{"class":373},"        output_path ",[76,808,438],{"class":437},[76,810,811],{"class":373}," output_dir ",[76,813,676],{"class":437},[76,815,753],{"class":373},[76,817,516],{"class":417},[76,819,820],{"class":373},"name\n",[76,822,824,827,829],{"class":114,"line":823},31,[76,825,826],{"class":373},"        cmd ",[76,828,438],{"class":437},[76,830,831],{"class":417}," [\n",[76,833,835,838],{"class":114,"line":834},32,[76,836,837],{"class":122},"            \"nvencc\"",[76,839,450],{"class":417},[76,841,843,846,848,851,853,856],{"class":114,"line":842},33,[76,844,845],{"class":122},"            \"-i\"",[76,847,418],{"class":417},[76,849,850],{"class":659}," str",[76,852,548],{"class":417},[76,854,855],{"class":373},"path",[76,857,858],{"class":417},"),\n",[76,860,862,865],{"class":114,"line":861},34,[76,863,864],{"class":122},"            \"--avhw\"",[76,866,450],{"class":417},[76,868,870,873,875,878],{"class":114,"line":869},35,[76,871,872],{"class":122},"            \"-c\"",[76,874,418],{"class":417},[76,876,877],{"class":122}," \"hevc\"",[76,879,450],{"class":417},[76,881,883,886,888,891],{"class":114,"line":882},36,[76,884,885],{"class":122},"            \"--qvbr\"",[76,887,418],{"class":417},[76,889,890],{"class":122}," \"24\"",[76,892,450],{"class":417},[76,894,896,899,901,904],{"class":114,"line":895},37,[76,897,898],{"class":122},"            \"-u\"",[76,900,418],{"class":417},[76,902,903],{"class":122}," \"P6\"",[76,905,450],{"class":417},[76,907,909,912,914,917],{"class":114,"line":908},38,[76,910,911],{"class":122},"            \"--output-depth\"",[76,913,418],{"class":417},[76,915,916],{"class":122}," \"10\"",[76,918,450],{"class":417},[76,920,922,925,927,930],{"class":114,"line":921},39,[76,923,924],{"class":122},"            \"--lookahead\"",[76,926,418],{"class":417},[76,928,929],{"class":122}," \"32\"",[76,931,450],{"class":417},[76,933,935,938,940,943,945,948,950,953],{"class":114,"line":934},40,[76,936,937],{"class":122},"            \"-b\"",[76,939,418],{"class":417},[76,941,942],{"class":122}," \"4\"",[76,944,418],{"class":417},[76,946,947],{"class":122}," \"--bref-mode\"",[76,949,418],{"class":417},[76,951,952],{"class":122}," \"each\"",[76,954,450],{"class":417},[76,956,958,961,963,966],{"class":114,"line":957},41,[76,959,960],{"class":122},"            \"--aq\"",[76,962,418],{"class":417},[76,964,965],{"class":122}," \"--aq-temporal\"",[76,967,450],{"class":417},[76,969,971,974,976,979],{"class":114,"line":970},42,[76,972,973],{"class":122},"            \"--audio-codec\"",[76,975,418],{"class":417},[76,977,978],{"class":122}," \"libopus\"",[76,980,450],{"class":417},[76,982,984,987,989,992],{"class":114,"line":983},43,[76,985,986],{"class":122},"            \"--audio-bitrate\"",[76,988,418],{"class":417},[76,990,991],{"class":122}," \"128\"",[76,993,450],{"class":417},[76,995,997,1000,1002,1004,1006,1009],{"class":114,"line":996},44,[76,998,999],{"class":122},"            \"-o\"",[76,1001,418],{"class":417},[76,1003,850],{"class":659},[76,1005,548],{"class":417},[76,1007,1008],{"class":373},"output_path",[76,1010,559],{"class":417},[76,1012,1014],{"class":114,"line":1013},45,[76,1015,1016],{"class":417},"        ]\n",[76,1018,1020],{"class":114,"line":1019},46,[76,1021,428],{"emptyLinePlaceholder":427},[76,1023,1025,1029,1031,1034,1036,1039,1041,1044,1046,1049],{"class":114,"line":1024},47,[76,1026,1028],{"class":1027},"snoqg","        print",[76,1030,548],{"class":417},[76,1032,1033],{"class":122},"\"Running\"",[76,1035,418],{"class":417},[76,1037,1038],{"class":122},"\" \"",[76,1040,516],{"class":417},[76,1042,1043],{"class":519},"join",[76,1045,548],{"class":417},[76,1047,1048],{"class":373},"cmd",[76,1050,1051],{"class":417},"))\n",[76,1053,1055,1058,1060,1063,1065,1068,1070,1072],{"class":114,"line":1054},48,[76,1056,1057],{"class":373},"        result ",[76,1059,438],{"class":437},[76,1061,1062],{"class":373}," subprocess",[76,1064,516],{"class":417},[76,1066,1067],{"class":519},"run",[76,1069,548],{"class":417},[76,1071,1048],{"class":373},[76,1073,559],{"class":417},[76,1075,1077,1079,1082,1084,1087,1090,1093],{"class":114,"line":1076},49,[76,1078,747],{"class":369},[76,1080,1081],{"class":373}," result",[76,1083,516],{"class":417},[76,1085,1086],{"class":373},"returncode ",[76,1088,1089],{"class":437},"!=",[76,1091,1092],{"class":147}," 0",[76,1094,502],{"class":417},[76,1096,1098,1101,1103,1107,1110,1114,1116,1118,1121,1124,1127],{"class":114,"line":1097},50,[76,1099,1100],{"class":1027},"            print",[76,1102,548],{"class":417},[76,1104,1106],{"class":1105},"sB-em","f",[76,1108,1109],{"class":122},"\"Failed: ",[76,1111,1113],{"class":1112},"s_ZFR","{",[76,1115,855],{"class":373},[76,1117,516],{"class":417},[76,1119,1120],{"class":373},"name",[76,1122,1123],{"class":1112},"}",[76,1125,1126],{"class":122},"\"",[76,1128,559],{"class":417},[76,1130,1132],{"class":114,"line":1131},51,[76,1133,766],{"class":369},[76,1135,1137,1140,1143],{"class":114,"line":1136},52,[76,1138,1139],{"class":373},"        count ",[76,1141,1142],{"class":437},"+=",[76,1144,1145],{"class":147}," 1\n",[76,1147,1149,1151,1153,1155,1158,1160,1162,1164,1166,1168,1171,1173,1175,1177,1179],{"class":114,"line":1148},53,[76,1150,1028],{"class":1027},[76,1152,548],{"class":417},[76,1154,1106],{"class":1105},[76,1156,1157],{"class":122},"\"Done: ",[76,1159,1113],{"class":1112},[76,1161,855],{"class":373},[76,1163,516],{"class":417},[76,1165,1120],{"class":373},[76,1167,1123],{"class":1112},[76,1169,1170],{"class":122}," -> ",[76,1172,1113],{"class":1112},[76,1174,1008],{"class":373},[76,1176,1123],{"class":1112},[76,1178,1126],{"class":122},[76,1180,559],{"class":417},[76,1182,1184],{"class":114,"line":1183},54,[76,1185,428],{"emptyLinePlaceholder":427},[76,1187,1189,1191],{"class":114,"line":1188},55,[76,1190,605],{"class":369},[76,1192,1193],{"class":373}," count\n",[76,1195,1197],{"class":114,"line":1196},56,[76,1198,428],{"emptyLinePlaceholder":427},[76,1200,1202,1204,1207,1209,1211,1213],{"class":114,"line":1201},57,[76,1203,481],{"class":369},[76,1205,1206],{"class":118}," main",[76,1208,487],{"class":417},[76,1210,490],{"class":417},[76,1212,499],{"class":147},[76,1214,502],{"class":417},[76,1216,1218,1221,1223,1225],{"class":114,"line":1217},58,[76,1219,1220],{"class":373},"    input_dir ",[76,1222,438],{"class":437},[76,1224,484],{"class":519},[76,1226,523],{"class":417},[76,1228,1230,1233,1235,1238,1240],{"class":114,"line":1229},59,[76,1231,1232],{"class":369},"    if",[76,1234,673],{"class":373},[76,1236,1237],{"class":369},"is",[76,1239,499],{"class":147},[76,1241,502],{"class":417},[76,1243,1245],{"class":114,"line":1244},60,[76,1246,1247],{"class":369},"        return\n",[76,1249,1251],{"class":114,"line":1250},61,[76,1252,428],{"emptyLinePlaceholder":427},[76,1254,1256,1258,1260,1262,1264,1267,1269,1272,1274,1276,1278,1281],{"class":114,"line":1255},62,[76,1257,1232],{"class":369},[76,1259,750],{"class":369},[76,1261,733],{"class":373},[76,1263,516],{"class":417},[76,1265,1266],{"class":519},"exists",[76,1268,487],{"class":417},[76,1270,1271],{"class":369}," or",[76,1273,750],{"class":369},[76,1275,733],{"class":373},[76,1277,516],{"class":417},[76,1279,1280],{"class":519},"is_dir",[76,1282,741],{"class":417},[76,1284,1286,1289,1291,1294,1296,1299,1301,1304],{"class":114,"line":1285},63,[76,1287,1288],{"class":373},"        messagebox",[76,1290,516],{"class":417},[76,1292,1293],{"class":519},"showerror",[76,1295,548],{"class":417},[76,1297,1298],{"class":122},"\"エラー\"",[76,1300,418],{"class":417},[76,1302,1303],{"class":122}," \"有効なフォルダが選択されませんでした。\"",[76,1305,559],{"class":417},[76,1307,1309],{"class":114,"line":1308},64,[76,1310,1247],{"class":369},[76,1312,1314],{"class":114,"line":1313},65,[76,1315,428],{"emptyLinePlaceholder":427},[76,1317,1319,1322,1324,1326,1328,1330,1332,1334],{"class":114,"line":1318},66,[76,1320,1321],{"class":373},"    processed ",[76,1323,438],{"class":437},[76,1325,641],{"class":519},[76,1327,548],{"class":417},[76,1329,646],{"class":579},[76,1331,438],{"class":437},[76,1333,646],{"class":373},[76,1335,559],{"class":417},[76,1337,1339,1342,1344,1347,1349,1352,1354,1356,1358,1360,1363,1365,1368],{"class":114,"line":1338},67,[76,1340,1341],{"class":373},"    messagebox",[76,1343,516],{"class":417},[76,1345,1346],{"class":519},"showinfo",[76,1348,548],{"class":417},[76,1350,1351],{"class":122},"\"完了\"",[76,1353,418],{"class":417},[76,1355,1106],{"class":1105},[76,1357,1126],{"class":122},[76,1359,1113],{"class":1112},[76,1361,1362],{"class":373},"processed",[76,1364,1123],{"class":1112},[76,1366,1367],{"class":122},"個の動画を処理しました\"",[76,1369,559],{"class":417},[76,1371,1373],{"class":114,"line":1372},68,[76,1374,428],{"emptyLinePlaceholder":427},[76,1376,1378,1381,1384,1387,1390],{"class":114,"line":1377},69,[76,1379,1380],{"class":369},"if",[76,1382,1383],{"class":373}," __name__ ",[76,1385,1386],{"class":437},"==",[76,1388,1389],{"class":122}," \"__main__\"",[76,1391,502],{"class":417},[76,1393,1395,1398],{"class":114,"line":1394},70,[76,1396,1397],{"class":519},"    main",[76,1399,523],{"class":417},[10,1401,1402],{"id":1402},"比較する",[24,1404,1406],{"id":1405},"vmaf","VMAF",[14,1408,1409,1410,1412],{},"FFMetricsというツールを使って入力ファイルとエンコードされたファイルの画質比較を行う。許容は95程度。",[94,1411],{},"\n05:00~07:00の2分間を比較しています。",[14,1414,1415],{},[68,1416],{"alt":74,"src":1417},"https:\u002F\u002Fimag.samenoko.work\u002Fuploads\u002F1775438628597-uxd7lj.png",[14,1419,1420],{},[68,1421],{"alt":74,"src":1422},"https:\u002F\u002Fimag.samenoko.work\u002Fuploads\u002F1775438695811-5657p3.png",[14,1424,1425],{},"結果は画像の通りで、97。90以上が高画質とされています。つまりそこそこということですね。",[24,1427,1428],{"id":1428},"ファイルサイズ",[14,1430,1431],{},"元データが1.34GB、ビットレートが8147kbpsで、出力ファイルが242MB、ビットレートが1433kbpsです。",[14,1433,1434],{},"大体8割削減されたことになります。ダイエット大成功！！",[10,1436,1437],{"id":1437},"おわり",[14,1439,1440,1441,1443],{},"現時点でかなりの設定を出せています。",[94,1442],{},"\nまぁ互換性とかライセンスの問題でHEVCとかAV1って再生できない環境も多いので、いい加減オープンでフリーな高効率なコーデックが出てほしいですね。",[14,1445,1446],{},"それでは！",[1448,1449,1450],"style",{},"html pre.shiki code .siK8c, html code.shiki .siK8c{--shiki-default:#8AADF4;--shiki-default-font-style:italic}html pre.shiki code .sSZ1V, html code.shiki .sSZ1V{--shiki-default:#A6DA95}html pre.shiki code .s7Qn8, html code.shiki .s7Qn8{--shiki-default:#F5A97F}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sIF4r, html code.shiki .sIF4r{--shiki-default:#C6A0F6}html pre.shiki code .sFaBz, html code.shiki .sFaBz{--shiki-default:#CAD3F5}html pre.shiki code .slVFb, html code.shiki .slVFb{--shiki-default:#939AB7}html pre.shiki code .sXptk, html code.shiki .sXptk{--shiki-default:#8BD5CA}html pre.shiki code .s57MT, html code.shiki .s57MT{--shiki-default:#8AADF4}html pre.shiki code .skVQi, html code.shiki .skVQi{--shiki-default:#EE99A0;--shiki-default-font-style:italic}html pre.shiki code .srmJT, html code.shiki .srmJT{--shiki-default:#EE99A0}html pre.shiki code .sxfwU, html code.shiki .sxfwU{--shiki-default:#C6A0F6;--shiki-default-font-style:italic}html pre.shiki code .snoqg, html code.shiki .snoqg{--shiki-default:#F5A97F;--shiki-default-font-style:italic}html pre.shiki code .sB-em, html code.shiki .sB-em{--shiki-default:#A6DA95;--shiki-default-font-style:italic}html pre.shiki code .s_ZFR, html code.shiki .s_ZFR{--shiki-default:#F5BDE6}",{"title":74,"searchDepth":377,"depth":377,"links":1452},[1453,1454,1457,1464,1472,1476],{"id":12,"depth":377,"text":12},{"id":22,"depth":377,"text":22,"children":1455},[1456],{"id":26,"depth":391,"text":27},{"id":99,"depth":377,"text":99,"children":1458},[1459,1460,1461,1462,1463],{"id":160,"depth":391,"text":163},{"id":169,"depth":391,"text":172},{"id":181,"depth":391,"text":184},{"id":190,"depth":391,"text":193},{"id":202,"depth":391,"text":205},{"id":211,"depth":377,"text":211,"children":1465},[1466,1467,1468,1469,1470,1471],{"id":293,"depth":391,"text":296},{"id":305,"depth":391,"text":308},{"id":317,"depth":391,"text":320},{"id":326,"depth":391,"text":329},{"id":335,"depth":391,"text":338},{"id":344,"depth":391,"text":347},{"id":1402,"depth":377,"text":1402,"children":1473},[1474,1475],{"id":1405,"depth":391,"text":1406},{"id":1428,"depth":391,"text":1428},{"id":1437,"depth":377,"text":1437},"2026-04-06","アニメエンコードの研究をしているログです。","md",{},"\u002Fblog\u002Fanime-encode-study",{"title":5,"description":1478},"blog\u002Fanime-encode-study",[1485,1487],{"name":1486},"雑記",{"name":1488},"エンコード","jWW2Tx7UfoXpBYmmvLTf2JAJFSTa3c-ZnWStr3zWmvo",{"next":1491,"prev":1494},{"path":1492,"title":1493},"\u002Fblog\u002Fsumaho-de-qwen","Qwen3.5をAndroidスマホで動かしてみよう！(not 実用的)",{"path":1495,"title":1496},"\u002Fblog\u002Flibrechat-ollama-local-llm","LibreChat+OllamaでローカルLLM",1775738147824]