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
- Baris pertama merupakan judul dari video tanpa extensi
.mp4
- Baris kedua sampai akhir merupakan waktu dan keterangan video
- Jika keterangan waktu menggunakan tanda kurung, rubah seperti format diatas
Source Code .NET 7 Youtube Video Splitter
- Buat project console dengan nama
YoutubeVideoSplitter
- Tambahkan package
CliWrap
- Tambahkan file dengan nama
movie.txt
(properties : copy always) - 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
- Extract file
ffmpeg-6.0-essentials_build.7z
- Copy file
ffmpeg.exe
pada folder bin kedalam folderYoutubeVideoSplitter.exe
berada.
Untuk menjalankan program
- Tempatkan file
Judul Video.mp4
di folder tempatYoutubeVideoSplitter.exe
- Pastikan nama file video sudah sama dengan judul video pada
movie.txt
- Jalankan program
YoutubeVideoSplitter.exe
- Tunggu proses sampai selesai, maka video yang sudah terpotong akan kita temukan di folder
JudulVideo