Skip to content

SmartCut v0.8.42

Choose a tag to compare

@DeepRegular DeepRegular released this 08 Nov 12:37
· 21 commits to main since this release

スマートレンダリング対応のカットツールです。**カット点にかかる部分 GOP だけを再エンコードし、残りはビット単位でそのままコピーします。**放送録画(MPEG-2 TS)から CM を落とす用途を主眼に置いています。

0.8.42 では、継ぎ目のエンコーダーに録画の色差の位置を渡すようにしました。SteveYu000 さんが #14 で測って提案してくださったものです。あわせて、46 回目の点検で見つかった不具合を直しています。

46 回目の点検では、重大な不具合は 1 件も見つかりませんでした。1.0 は、重大な不具合の無い点検が 2 回続いたら出すと決めています。今回がその 1 回目です。

修正を終えたソースでは、検査付きのビルドでテストスイート 34 本がすべて通り、パニックもありませんでした。AV1 のスイートの 1 項目は、今回の修正に合わせて期待する結果を改めています。GUI を操作するテストは、381 項目すべてが通りました。

ダウンロード

ファイル 対象
SmartCut_0.8.42_amd64.AppImage Linux x64。glibc 2.35 以上(Ubuntu 22.04 / Debian 12 / Fedora 36 以降)。FUSE が必要です
SmartCut-0.8.42-linux-x86_64.tar.gz Linux x64 可搬版(193.4 MB)。展開して ./smartcut を実行します。中身は AppImage と同じ一式で、FUSE は不要です
smartcut_0.8.42_amd64.deb Ubuntu 22.04 以降 / Debian 13 以降(29.8 MB)。GUI を smartcut、コマンドライン版を smartcut-cli としてインストールします
SmartCut_0.8.42_x64-setup.exe Windows x64 インストーラ。WebView2 ランタイムが必要です。コマンドライン版の smartcut-cli.exe も同じフォルダーに入ります
smartcut-portable-x64-0.8.42.zip Windows x64 可搬版。展開して smartcut.exe を実行します。コマンドライン版は smartcut-cli.exe です

どの配布物にも FFmpeg を同梱しています。別途インストールは不要です。

継ぎ目の色差の位置

**継ぎ目を再エンコードするとき、録画に書かれた色差サンプルの位置をエンコーダーに渡します。**これまでは渡していませんでした。

録画 0.8.41 0.8.42
位置が 1 か 2 の AV1(libaom で書いたものなど)を .mp4 に切る 選んだ範囲を丸ごと再エンコードしていました 中ほどはコピーのまま残ります
同じ AV1 を .mkv に切る 継ぎ目だけ位置が 0 になり、コピーした部分と食い違っていました コピーした部分と同じ位置を書きます
H.264・HEVC で、位置が左以外の録画(4K 衛星放送の録画など) 継ぎ目のパラメータセットに位置が書かれていませんでした コピーした部分と同じ位置を書きます

H.264・HEVC で位置が左の録画と、位置の書かれていない録画は、これまでと同じ出力になります。通常の H.264 の放送録画や市販の Blu-ray がこれに当たります。MPEG-2・VC-1・VP9 は、位置にかかわらず出力が変わりません。

直した不具合

対象 以前の症状
MPEG-1 の録画(.mpg、VCD) 継ぎ目を再エンコードするカットが、「cannot open encoder」で止まっていました。少なくとも 0.8.40 から起きていました
「継ぎ目の編集」ウィンドウの静止画(フレーム送り、シーク、停止したあとの画面) 再生や出力と違うフレームを表示することがありました。25p の基準クリップに 29.97 fps のクリップをつないだ試験では、5 回の送りのうち 3 回で食い違いました。59.94p のクリップに 10 秒のディゾルブをかけた試験では、手前のクリップがずっと 1 フレーム遅れていました。多くの録画で、静止画の表示も速くなっています
名前が「.m2ts」だけの出力 到着時刻が前へ戻ったまま残っていました

カット結果が 0.8.41 と変わる場合

入力・操作 変わる点
H.264・HEVC で、色差の位置が左以外の録画 継ぎ目の先頭のピクチャのバイトが変わります。試した 4K 衛星放送の録画では、継ぎ目 1 つにつき 36 バイト増えました。復号した映像は変わりません
位置が 1 か 2 の AV1 .mp4 では範囲を丸ごと再エンコードせず、中ほどをコピーします。.mkv では継ぎ目の位置がコピーした部分と揃います
MPEG-1 の録画を、継ぎ目の再エンコードを伴って切る 0.8.41 では書けなかった出力が書けます
名前が「.m2ts」だけの出力 到着時刻を付け直します

Linux 版と Windows 版(wine)で、0.8.41 と同じ 6 種類のカットを比べました。放送の 1 区間を .ts・.mp4・.mkv にしたもの、2 区間、結合、レコーダーの .m2ts です。どれも .ts・.mp4・.m2ts はバイト単位で、.mkv はパケット単位で 0.8.41 と同じでした。

残っている問題

対象 症状
映像より音声が長い録画 正しく切れていても、--verify が OFF と表示します
可変フレームレートの録画 隣り合うフレームで続けて k を押しても、印が 1 つにまとまることがあります
時間単位が 10 MHz で B ピクチャを含む、可変フレームレートの .mp4 正しく切れていても、--verify が MISMATCH と表示することがあります
大きな .m2ts 到着時刻を付け直すあいだ、進行表示が止まって見えます
「継ぎ目の編集」ウィンドウの再生 レコーダーが BD-RE に書いた録画で、途中の継ぎ目をまたぐと、カットでは書かれないフレームが映ります。出力は正しいです

ドキュメント


English

SmartCut is a smart-rendering cutter: only the partial GOPs at each cut point are re-encoded; everything else is copied bit for bit. It is built mainly for cutting the adverts out of broadcast recordings (MPEG-2 TS).

0.8.42 tells the seam encoder where the recording's chroma samples sit, a fix SteveYu000 measured and proposed in #14. It also carries the fixes from the forty-sixth review pass.

That pass found no serious bug at all. The rule agreed for 1.0 is two passes in a row with no serious bug, and this is the first of the two.

The final tree passed all 34 test suites on a checked build, with no panics; one check in the AV1 suite now expects what this fix does. The GUI suite passed all 381 of its checks.

Downloads

File For
SmartCut_0.8.42_amd64.AppImage Linux x64, glibc 2.35 or newer (Ubuntu 22.04 / Debian 12 / Fedora 36 and later). Needs FUSE
SmartCut-0.8.42-linux-x86_64.tar.gz Linux x64, portable (193.4 MB). Unpack and run ./smartcut. Same contents as the AppImage, no FUSE needed
smartcut_0.8.42_amd64.deb Ubuntu 22.04 and later / Debian 13 and later (29.8 MB). Installs the GUI as smartcut and the command-line tool as smartcut-cli
SmartCut_0.8.42_x64-setup.exe Windows x64 installer. Needs the WebView2 runtime. The command-line tool, smartcut-cli.exe, goes into the same folder
smartcut-portable-x64-0.8.42.zip Windows x64, portable. Unzip and run smartcut.exe; the command-line tool is smartcut-cli.exe

Every download bundles FFmpeg; nothing else needs installing.

Chroma location at the seams

The seam encoder is now told where the recording's chroma samples sit, so a re-encoded seam states the same position as the pictures around it wherever its encoder can write one. Until now the encoder was never told.

Recording 0.8.41 0.8.42
AV1 with position 1 or 2 (from libaom, for instance), cut to .mp4 The whole selection was re-encoded The copied middle is kept
The same AV1, cut to .mkv The seams said 0 and disagreed with the copied pictures The seams state the position the copied pictures do
H.264 or HEVC stating a position other than left (4K satellite broadcast recordings, for one) The seams' parameter sets left the position out The seams state the position the copied pictures do

H.264 and HEVC recordings that state left, or nothing, cut exactly as before: ordinary H.264 broadcasts and pressed Blu-rays among them. MPEG-2, VC-1 and VP9 cut as before whatever they state.

Bugs fixed

Where What happened
MPEG-1 recordings (.mpg, VCD) Any cut with a re-encoded seam stopped at "cannot open encoder", as it had since 0.8.40 at least
Stills in the “Between the clips” window (stepping, scrubbing, the picture after stopping) Could show a different picture from playback and from the output. A 29.97 fps clip after a 25p master disagreed on three steps in five; with a 10 second dissolve on 59.94p clips, the outgoing clip stayed a picture late throughout. On most recordings the stills also come up faster
An output named just ".m2ts" Kept arrival times that step backwards

When a cut differs from 0.8.41

Input or operation What changes
H.264 or HEVC stating a chroma position other than left The bytes of each seam's first picture: 36 more per seam on the 4K satellite recording tried. The pictures decode the same
AV1 with position 1 or 2 In .mp4 the middle is copied instead of the whole selection being re-encoded; in .mkv the seams' position now matches the copy
An MPEG-1 cut with a re-encoded seam Written now; 0.8.41 could not write it
An output named just ".m2ts" Its arrival times are rewritten

The release builds were compared with 0.8.41's on the same six cuts (one broadcast range to .ts, .mp4 and .mkv, two ranges, a join, and a recorder .m2ts), on Linux and on Windows under wine: the .ts, .mp4 and .m2ts outputs are byte-identical and the .mkv packet-identical.

Known issues

Where What happens
A recording whose sound outlasts its pictures --verify says OFF even on a correct cut
A variable-frame-rate recording k pressed on two neighbouring pictures can leave a single mark
A variable-frame-rate .mp4 with a 10 MHz timescale and B pictures --verify can say MISMATCH even when the cut is right
A large .m2ts The progress display stands still while the arrival times are rewritten
Playback in the “Between the clips” window Across a seam inside a BD-RE recorder recording it can show a picture the cut does not write. The output is right

Documentation