Youtube Video Splitter

Pada saat kita menonton sebuah video tutorial di youtube dengan durasi yang begitu panjang, terkadang kita mengalami kesulitan jika kita ingin kembali ke tema pembahasan sebelumnya karena kita tidak tahu di waktu mana tema tersebut dibahas.

Namun untuk beberapa video berdurasi panjang, terkadang content creator membagi tema-tema video dalam durasi waktu yang sudah ditentukan. Pembagian ini bisa kita lihat pada keterangan video akan terdapat penjelasan mengenai waktu dan keterangan tema pembahasannya. Sehingga memudahkan kita untuk kembali ke tema pembahasan tertentu.

Sebagai contoh pada keterangan kita bisa lihat seperti dibawah ini :

00:00 - Keterangan 1
00:02 - Keterangan 2
00:11 - Keterangan 3

atau

00:00:00 - Keterangan 1
00:02:20 - Keterangan 2
00:11:06 - Keterangan 3

atau

(0:00:00) Keterangan 1
(0:00:29) Keterangan 2
(0:04:22) Keterangan 3

Masalah berikutnya adalah ketika kita ingin menonton secara offline, kita perlu mendownload video dari youtube dan memotong video tersebut sesuai dengan pembagian waktu seperti contoh diatas.

Contoh dibawah ini adalah cara mendownload video dari youtube:

https://www.youtube.com/watch?v=KBDSJU3cGkc

dari link diatas kita cukup menambahkan pp pada akhir kata youtube menjadi :

https://www.youtubepp.com/watch?v=KBDSJU3cGkc

Download file .mp4 sesuai dengan resolusi yang kita inginkan. Kemudian copy semua keterangan pembagian waktu video kedalam file movie.txt dengan format waktu seperti dibawah :

Keterangan movie.txt :

Judul Video
00:00 - Keterangan Video 1
01:00 - Keterangan Video 2
.
.
.
xx:xx:xx - Keterangan Video XX
  1. Baris pertama merupakan judul dari video tanpa extensi .mp4
  2. Baris kedua sampai akhir merupakan waktu dan keterangan video
  3. Jika keterangan waktu menggunakan tanda kurung, rubah seperti format diatas

Source Code .NET 7 Youtube Video Splitter

  1. Buat project console dengan nama YoutubeVideoSplitter
  2. Tambahkan package CliWrap
  3. Tambahkan file dengan nama movie.txt (properties : copy always)
  4. Copy script berikut ke Program.cs
using CliWrap;
using CliWrap.Buffered;

var lines = File.ReadAllLines("movie.txt");

var video = lines[0];
var prefix = video.Replace(" ", "-");
var path = Directory.GetCurrentDirectory();
var folder = Path.Combine(path, prefix);

DirectoryInfo di = new DirectoryInfo(@folder);
if (!di.Exists) di.Create();

for (var i = 1; i < lines.Length; i++)
{
    string line = lines[i];
    string start = line.Split("-")[0].Trim();
    string end = "END";
    string title = line.Split(" - ").Last()
        .Replace(":", "")
        .Replace("?", "")
        .Replace("/", "")
        .Replace("&", "and");

    if (i == (lines.Length))
    {
        end = lines[i + 1].Split("-")[0];
    }

    string number = (i).ToString().PadLeft(2, '0');

    if (end == "END")
    {
        var cmd = Cli.Wrap("ffmpeg.exe")
            .WithArguments($" -i \"{video}.mp4\" -ss {start} -c copy \"{folder}\\{prefix}-{number}-{title}.mp4\"")
            .WithWorkingDirectory(path)
            .WithValidation(CommandResultValidation.None);

        await cmd.ExecuteBufferedAsync();
    }
    else
    {
        var cmd = Cli.Wrap("ffmpeg.exe")
            .WithArguments($" -i \"{video}.mp4\" -ss {start} -to {end} -c copy \"{folder}\\{prefix}-{number}-{title}.mp4\"")
            .WithWorkingDirectory(path)
            .WithValidation(CommandResultValidation.None);

        await cmd.ExecuteBufferedAsync();
    }

    Thread.Sleep(100);
}

FFmpeg Karakter Spesial

Pada saat memotong video ffmpeg tidak memproses pemotongan video yang memiliki karakter spesial pada keterangan. Solusinya adalah dengan mereplace karakter tersebut. Anda dapat mengedit source code pada bagian berikut :

string title = line.Split(" - ").Last()
     .Replace(":", "")
     .Replace("?", "")
     .Replace("/", "")
     .Replace("&", "and");

Tools Tambahan

Aplikasi yang kita buat kali ini membutuhkan sebuah tools bernama FFmpeg.

FFmpeg adalah aplikasi freeware dan open source yang dapat digunakan untuk merekam, mengkonversi, dan streaming audio dan video digital dalam berbagai format.

Pada tutorial ini saya mendownload : ffmpeg-6.0-essentials_build.7z

  1. Extract file ffmpeg-6.0-essentials_build.7z
  2. Copy file ffmpeg.exe pada folder bin kedalam folder YoutubeVideoSplitter.exe berada.

Untuk menjalankan program

  1. Tempatkan file Judul Video.mp4 di folder tempat YoutubeVideoSplitter.exe
  2. Pastikan nama file video sudah sama dengan judul video pada movie.txt
  3. Jalankan program YoutubeVideoSplitter.exe
  4. Tunggu proses sampai selesai, maka video yang sudah terpotong akan kita temukan di folder JudulVideo