Chuyển đến nội dung chính

FFmpeg: FFmpeg là gì?

Mình có niềm đam mê với các video mang tính giáo dục cao, giúp mình mở rộng kiến thức và hiểu biết về thế giới xung quanh. Một ngày nọ, khi dạo quanh tiktok (nghe cũng lạ), mình phát hiện ra một số kênh rất hay và hấp dẫn, có hàng trăm video về các chủ đề đa dạng như lịch sử, khoa học, lẫn tôn giáo. Từ đó mình có ý định làm 1 trang note lại những bài viết hay liên kết với những video, dùng làm tư liệu học tập.

Để thực hiện ý tưởng này, mình đã sử dụng ffmpeg - một công cụ mã nguồn mở cho phép chuyển đổi, mã hóa, lấy dữ liệu, phát trực tiếp các tập tin âm thanh và video.

FFmpeg là gì?

FFmpeg là một phần mềm xử lý audio, video đơn giản, miễn phí và hiệu quả nhất.

  • FFmpeg là hoàn toàn miễn phí, mã nguồn mở. Do đó bạn hoàn toàn yên tâm sử dụng nó ở bất kì đầu mà không sợ vi phạm bản quyền.
  • Sử dụng FFmpeg để xử lý audio, video - nghĩa là bạn phải sử dụng dòng lệnh thông qua Command line (cmd). 

Để đơn giản hóa việc ứng dụng FFmpeg vào lập trình, Xabe.FFmpeg ra đời.

Xabe.FFmpeg là một thư viện .NET Core wrapper FFmpeg, giúp bạn xử lý các tập tin âm thanh và video mà không cần biết cách hoạt động của FFmpeg. Bạn có thể sử dụng các đoạn mã có sẵn trong Xabe.FFmpeg để thực hiện các công việc thông dụng như chuyển đổi định dạng, cắt ghép, xoay, đảo ngược, thay đổi kích thước, thêm phụ đề, thêm hiệu ứng… cho các tập tin âm thanh và video của bạn. Bạn cũng có thể truyền các tham số tùy chỉnh của bạn cho FFmpeg từ ứng dụng .NET Core của bạn. Xabe.FFmpeg có nhiều ưu điểm sau:

  • Xabe.FFmpeg là một thư viện đa nền tảng
  • Xabe.FFmpeg hỗ trợ phát trực tiếp các luồng âm thanh và video từ các nguồn khác nhau như webcam, màn hình, RTP hay RTSP.
  • Xabe.FFmpeg cho phép bạn thay đổi chỉ các luồng cụ thể trong tập tin âm thanh và video hoặc xây dựng một luồng mới với các luồng từ các tập tin khác.
  • Xabe.FFmpeg có tài liệu kỹ thuật rõ ràng và chi tiết, giúp bạn hiểu và sử dụng thư viện một cách hiệu quả.
  • Xabe.FFmpeg miễn phí cho mọi dự án phi thương mại!

Bạn có thể xem thêm thông tin về Xabe.FFmpeg tại trang web chính thức hoặc GitHub

Bạn cũng có thể xem tài liệu kỹ thuật để biết cách cài đặt và sử dụng Xabe.FFmpeg trong các ứng dụng .NET Core của bạn.

Convert video

Mình chưa biết FFmpeg hỗ trợ bao nhiêu định dạng video, nên đầu tiên mình thử convert file FLV sang mp4 mà thành công. Hiện nay muốn tìm 1 chương trình chuyển FLV không khó, nhưng đa số các chương trình phiên bản cũ

FLV là gì?

File FLV hay File Flash Video là một định dạng video nén được sử dụng rộng rãi trên mạng Internet, đặc biệt là trên các trang web chia sẻ video bởi định dạng này có thể giữ được chất lượng âm thanh, hình ảnh gốc trong khi dung lượng đã được nén lại khá nhỏ. Tuy nhiên khi HTML5 dần phổ biến, FLV từ từ bị loại bỏ dần. Có khá nhiều video hay thời kỳ đầu và những trang web video bên Trung Quốc vẫn còn sử dụng

Convert FLV video

Cài đặt package
Install-Package Xabe.FFmpeg
Install-Package Xabe.FFmpeg.Downloader
Download FFmpeg và convert video
using System.Reflection;
using Xabe.FFmpeg;
using Xabe.FFmpeg.Downloader;

await Run();
await RunConversion();

static async Task Run()
{
	Console.Out.WriteLine("[Start] Basic Conversion");
	//Set directory where app should look for FFmpeg executables.
	FFmpeg.SetExecutablesPath(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "ffmpeg.exe");
	//Get latest version of FFmpeg. It's great idea if you don't know if you had installed FFmpeg.
	await FFmpegDownloader.GetLatestVersion(FFmpegVersion.Official);


	Console.Out.WriteLine("[End] Basic Conversion");
}

static async Task RunConversion()
{
	var inputPath = "files/bi_mat_trai_tim.flv";
	var fileInfo = new FileInfo(inputPath);
	//Save file to the same location with changed extension
	string outputFileName = Path.ChangeExtension(fileInfo.FullName, ".mp4");
	var conversion = await FFmpeg.Conversions.FromSnippet.Convert(fileInfo.FullName, outputFileName);
	await conversion.Start();
	await Console.Out.WriteLineAsync($"Finished converion file [{inputPath}]");
}

Hoặc bạn có thể tự download file ffmpeg.exe theo đường dẫn: https://ffbinaries.com/api/v1/version/latest

Mình đã thử convert 1 file mov khoảng 4Gb sang mp4, kết quả thành công. File mp4 chỉ còn 1.65Gb.

Tham khảo

[Tutorial] .NET Video Converter | Xabe.FFmpeg

https://viblo.asia/p/tim-hieu-ffmpeg-va-cach-thuc-su-dung-ffmpeg-jvElaPOxZkw 

Nhận xét

Đăng nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.