În timpul conferinței noastre, apăsăm butonul F12 și observăm că videoclipul este încărcat în segmente de o secundă. Atunci când facem clic pe unul dintre fișierele .ts, suntem întrebați unde dorim să salvăm. Această funcționalitate ne-a inspirat ideea de a descărca fiecare fișier .ts și de a le uni ulterior într-un singur videoclip complet.
Descărcarea manuală a fiecărui fișier .ts ar fi o sarcină foarte consumatoare de timp și nu este fezabilă în practică. Din acest motiv, am dezvoltat o aplicație care automatizează procesul de descărcare a tuturor fișierelor .ts în mod eficient și rapid.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace VideoDowloadTS
{
internal class Program
{
static void Main(string[] args)
{
// Se solicită utilizatorului introducerea URL-ului de bază
Console.WriteLine("Introduceti URL-ul de bază al fisierelor TS:");
string urlBaza = Console.ReadLine();
// Se solicită utilizatorului introducerea numărului N
Console.WriteLine("Introduceti numărul N (ultimul număr al fisierului TS):");
int n = int.Parse(Console.ReadLine());
// Se solicită utilizatorului introducerea folderului de destinație
Console.WriteLine("Introduceti folderul de destinație pentru fisierele TS:");
string folderDestinatie = Console.ReadLine();
// Se creează folderul de destinație dacă nu există
if (!Directory.Exists(folderDestinatie))
{
Directory.CreateDirectory(folderDestinatie);
}
// Se descarcă fișierele TS de la 1 la N
for (int i = 1; i <= n; i++)
{
string numeFisier = i + ".ts";
string urlComplet = urlBaza + numeFisier;
// Se descarcă fișierul
using (WebClient client = new WebClient())
{
client.DownloadFile(urlComplet, Path.Combine(folderDestinatie, numeFisier));
}
// Se afișează un mesaj de confirmare
Console.WriteLine("Fisierul {0} a fost descarcat cu succes.", numeFisier);
}
// Se afișează un mesaj de finalizare
Console.WriteLine("Toate fisierele TS au fost descarcate cu succes!");
Console.ReadKey();
}
}
}
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace VideoDowloadTS
{
internal class Program
{
static void Main(string[] args)
{
// Se solicită utilizatorului introducerea URL-ului de bază
Console.WriteLine("Introduceti URL-ul de bază al fisierelor TS:");
string urlBaza = Console.ReadLine();
// Se solicită utilizatorului introducerea numărului N
Console.WriteLine("Introduceti numărul N (ultimul număr al fisierului TS):");
int n = int.Parse(Console.ReadLine());
// Se solicită utilizatorului introducerea folderului de destinație
Console.WriteLine("Introduceti folderul de destinație pentru fisierele TS:");
string folderDestinatie = Console.ReadLine();
// Se creează folderul de destinație dacă nu există
if (!Directory.Exists(folderDestinatie))
{
Directory.CreateDirectory(folderDestinatie);
}
// Se descarcă fișierele TS de la 1 la N
for (int i = 1; i <= n; i++)
{
string numeFisier = i + ".ts";
string urlComplet = urlBaza + numeFisier;
// Se descarcă fișierul
using (WebClient client = new WebClient())
{
client.DownloadFile(urlComplet, Path.Combine(folderDestinatie, numeFisier));
}
// Se afișează un mesaj de confirmare
Console.WriteLine("Fisierul {0} a fost descarcat cu succes.", numeFisier);
}
// Se afișează un mesaj de finalizare
Console.WriteLine("Toate fisierele TS au fost descarcate cu succes!");
Console.ReadKey();
}
}
}
După ce au fost descărcate, se pune în discuție modalitatea de integrare a acestora într-un singur fișier video. Deși este posibil să se utilizeze o aplicație de editare video în acest scop, din experiență, acest proces este destul de complicat și solicită resurse considerabile ale calculatorului, mai ales în cazul unui număr mare de fișiere, cum ar fi peste 8000. Prin urmare, am dezvoltat o altă aplicație care automatizează procesul de unire a tuturor fișierelor video într-un singur fișier.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace UnireaVideo
{
internal class Program
{
static void Main(string[] args)
{
// Solicitarea directorului de fișiere de ieșire de la utilizator
Console.WriteLine("Introduceti directorul de iesire pentru fisierul video concatenat:");
string outputDirectoryPath = Console.ReadLine();
// Solicitarea directorului care conține fișierele video de la utilizator
Console.WriteLine("Introduceti directorul care contine fisierele video de concatenat:");
string directoryPath = Console.ReadLine();
// Lista de fișiere video
List<string> videoFiles = Directory.GetFiles(directoryPath, "*.ts").ToList();
// Sortarea fișierelor video în ordine crescătoare
videoFiles.Sort((f1, f2) =>
{
int fileNum1, fileNum2;
if (int.TryParse(Path.GetFileNameWithoutExtension(f1), out fileNum1) &&
int.TryParse(Path.GetFileNameWithoutExtension(f2), out fileNum2))
{
return fileNum1.CompareTo(fileNum2);
}
else
{
// Gestionarea fișierelor non-numerice sau a erorilor
Console.WriteLine($"Eroare: Numele fișierului '{f1}' sau '{f2}' nu conține un număr.");
return 0; // Ignorați fișierul
}
});
// Numele fișierului video rezultat
string outputFileName = Path.Combine(outputDirectoryPath, "video_final.mp4");
// Concatenarea fișierelor video
ConcatenateVideos(videoFiles, outputFileName);
Console.WriteLine("Fisierele video au fost concatenate cu succes!");
Console.WriteLine();
}
static void ConcatenateVideos(List<string> videoFiles, string outputFileName)
{
using (var outputFile = new FileStream(outputFileName, FileMode.Create))
{
foreach (var videoFile in videoFiles)
{
Console.WriteLine(videoFile);
using (var inputFile = new FileStream(videoFile, FileMode.Open))
{
const int bufferSize = 8192; // Dimensiunea bufferului (se poate modifica)
byte[] buffer = new byte[bufferSize];
int bytesRead;
while ((bytesRead = inputFile.Read(buffer, 0, bufferSize)) > 0)
{
outputFile.Write(buffer, 0, bytesRead);
}
}
}
}
}
}
}
Descaracarea fisierelor .ts
Linkul il copiem din descarcari: CTR+J
introducem destinatia unde sa se salveze fisierele .ts
Dupa ce au fost salvate incepem sa le unim totate fisierile intr-un video final
Codul sursa: https://drive.google.com/file/d/1DsVNizoPvkBwwlb6N83GID7OgUbLEdq6/view?usp=sharing
Niciun comentariu:
Trimiteți un comentariu