<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Lam Pham Blog]]></title><description><![CDATA[Chuyên chia sẻ về Linux và phần mềm mã nguồn mở]]></description><link>https://phamvanlam.com</link><image><url>https://phamvanlam.com/logos/logo-512x512.png</url><title>Lam Pham Blog</title><link>https://phamvanlam.com</link></image><generator>Lam Pham Blog</generator><lastBuildDate>Thu, 15 Jan 2026 09:21:43 GMT</lastBuildDate><atom:link href="https://phamvanlam.com/rss.xml" rel="self" type="application/rss+xml"/><copyright><![CDATA[Copyright © 2017-2022 Lam Pham. Unless otherwise noted, all code MIT license.]]></copyright><item><title><![CDATA[[FFmpeg Tutorial] Split video với FFmpeg]]></title><description><![CDATA[Khác với cut video - là bỏ bớt thời lượng của video, split video là chia nhỏ video thành các đoạn nhỏ hơn. Bài viết này sẽ giới thiệu với bạn một cách đơn giản để split video với…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-split-video-voi-ffmpeg/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-split-video-voi-ffmpeg/</guid><category><![CDATA[Xử lý video]]></category><pubDate>Thu, 27 Dec 2018 13:21:15 GMT</pubDate><content:encoded>&lt;p&gt;Khác với &lt;a href=&quot;/ffmpeg-tutorial-cut-video-voi-ffmpeg/&quot;&gt;cut video&lt;/a&gt; - là bỏ bớt thời lượng của video, split video là chia nhỏ video thành các đoạn nhỏ hơn. Bài viết này sẽ giới thiệu với bạn một cách đơn giản để split video với FFmpeg.&lt;/p&gt;
&lt;h2 id=&quot;câu-lệnh-cơ-bản-để-split-video-với-ffmpeg&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A2u-l%E1%BB%87nh-c%C6%A1-b%E1%BA%A3n-%C4%91%E1%BB%83-split-video-v%E1%BB%9Bi-ffmpeg&quot; aria-label=&quot;câu lệnh cơ bản để split video với ffmpeg permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Câu lệnh cơ bản để split video với FFmpeg&lt;/h2&gt;
&lt;p&gt;Giả sử mình có một video dài 1 tiếng (&lt;strong&gt;60 phút&lt;/strong&gt;) và mình muốn chia nhỏ video này thành các phần nhỏ hơn, mỗi phần có độ dài &lt;strong&gt;5 phút&lt;/strong&gt;. Khi đó, câu lệnh FFmpeg là:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -c copy -f segment -segment_time &lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt; -reset_timestamps &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; %03d.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.mp4&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-c copy&lt;/strong&gt; dùng để thông báo với FFmpeg rằng bạn muốn copy video và audio từ input sang output mà không phải encode lại. Tham số này tương đương với &lt;strong&gt;-vcodec copy -acodec copy&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-f segment&lt;/strong&gt; nghĩa là bạn muốn chia video này thành các segment (đoạn).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-segment_time 300&lt;/strong&gt;: xác định độ dài mỗi đoạn là 300 giây (tương đương với 5 phút).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-reset_timestamps 1&lt;/strong&gt;: để bắt mỗi segment bắt đầu với timestamp sấp xỉ 0.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;%03d.mp4&lt;/strong&gt;: định dạng file output. Trong trường hợp này, tên các file có độ dài là 3 kí tự, tức &lt;strong&gt;001.mp4, 002.mp4,...&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là cách để cut video vời FFmpeg. Nếu có gì thắc mắc hay góp ý, bạn vui lòng để lại câu hỏi xuống phần bình luận. Mình sẽ cố gắng giải đáp.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[FFmpeg Tutorial] Ghép nối video với FFmpeg]]></title><description><![CDATA[Ghép nối video với FFmpeg là một chủ đề khá khó. Vì các video thường có kích thước, định dạng và tốc độ framerate khác nhau. Vì vậy, trước khi thực hiện ghép nối video, bạn cần…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-ghep-noi-video-voi-ffmpeg/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-ghep-noi-video-voi-ffmpeg/</guid><category><![CDATA[Filter]]></category><category><![CDATA[Xử lý video]]></category><pubDate>Tue, 30 Oct 2018 22:30:10 GMT</pubDate><content:encoded>&lt;p&gt;Ghép nối video với FFmpeg là một chủ đề khá khó. Vì các video thường có kích thước, định dạng và tốc độ framerate khác nhau. Vì vậy, trước khi thực hiện ghép nối video, bạn cần phải &lt;a href=&quot;/ffmpeg-tutorial-lay-thong-tin-video-bang-ffmpeg/&quot;&gt;kiểm tra thông tin của video&lt;/a&gt; và xử lý chúng về cùng định dạng, kích thước, tốc độ framerate và SAR. Sau khi làm xong những việc đó, mình bắt đầu thực hiện ghép nối.&lt;/p&gt;
&lt;h2 id=&quot;ghép-nối-video-với-ffmpeg-đơn-giản&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#gh%C3%A9p-n%E1%BB%91i-video-v%E1%BB%9Bi-ffmpeg-%C4%91%C6%A1n-gi%E1%BA%A3n&quot; aria-label=&quot;ghép nối video với ffmpeg đơn giản permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Ghép nối video với FFmpeg đơn giản&lt;/h2&gt;
&lt;p&gt;Nếu bạn có 2 hay nhiều video định dạng &lt;strong&gt;avi&lt;/strong&gt; hoặc &lt;strong&gt;mpg&lt;/strong&gt; thì có thể sử dụng câu lệnh sau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i &lt;span class=&quot;token string&quot;&gt;&quot;concat:video1.avi|video2.avi&quot;&lt;/span&gt; output.avi&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là đoạn string có dạng &lt;strong&gt;&quot;concat:video1.avi|video2.avi|...|videoN.avi&quot;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output.avi&lt;/strong&gt; là tên file output, với định dạng giống như các file input.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Đối với video dạng &lt;a href=&quot;/ffmpeg-tutorial-convert-video-thanh-mp4-voi-ffmpeg/&quot;&gt;MP4&lt;/a&gt;, &lt;a href=&quot;/ffmpeg-tutorial-convert-video-thanh-webm-voi-ffmpeg/&quot;&gt;WEBM&lt;/a&gt;, MKV thì bạn không thể sử dụng câu lệnh trên được mà cần phải sử dụng cách sau đây.&lt;/p&gt;
&lt;h2 id=&quot;ghép-nối-video-sử-dụng-concat-filter&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#gh%C3%A9p-n%E1%BB%91i-video-s%E1%BB%AD-d%E1%BB%A5ng-concat-filter&quot; aria-label=&quot;ghép nối video sử dụng concat filter permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Ghép nối video sử dụng Concat Filter&lt;/h2&gt;
&lt;p&gt;Nếu sử dụng cách này, bạn có thể ghép nối video với các định dạng khác nhau.&lt;/p&gt;
&lt;p&gt;Giả sử mình cần ghép 1 video MP4 với 1 video AVI thì câu lệnh là:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i video1.mp4 -i video2.avi -filter_complex &lt;span class=&quot;token string&quot;&gt;&quot;[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]&quot;&lt;/span&gt; -map &lt;span class=&quot;token string&quot;&gt;&quot;[v]&quot;&lt;/span&gt; -map &lt;span class=&quot;token string&quot;&gt;&quot;[a]&quot;&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;video1.mp4, video2.avi&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-filter_complex&lt;/strong&gt; dùng để áp dụng &lt;strong&gt;filter&lt;/strong&gt;, sau đó là công thức filter - nằm trong cặp dấu ngoặc kép
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;[0:v:0]&lt;/strong&gt; là video stream của file thứ nhất&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[0:a:0]&lt;/strong&gt; là audio stream của file thứ nhất&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[1:v:0]&lt;/strong&gt; là video stream của file thứ hai&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[1:a:0]&lt;/strong&gt; là audio stream của file thứ hai&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;concat=n=2:v=1:a=1&lt;/strong&gt; để xác định FFmpeg sẽ ghép nối (&lt;strong&gt;concat&lt;/strong&gt;) 2 video (&lt;strong&gt;n=2&lt;/strong&gt;) thành 1 video với 1 video stream (&lt;strong&gt;v=1&lt;/strong&gt;) và 1 audio stream (&lt;strong&gt;a=1&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[v] [a]&lt;/strong&gt; lần lượt là kết quả của video stream và audio stream, để sử dụng trong phần sau&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-map &quot;[v]&quot; -map &quot;[a]&quot;&lt;/strong&gt; dùng để xác định rằng FFmpeg sẽ sử dụng video stream và audio stream từ bước trước (thay vì input) để đưa ra output.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output.mp4&lt;/strong&gt; là tên file output&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Chú ý:&lt;/strong&gt; Nếu file input có &lt;strong&gt;kích thước&lt;/strong&gt;, &lt;strong&gt;tốc độ framerate&lt;/strong&gt; và &lt;strong&gt;SAR&lt;/strong&gt; khác nhau thì bạn cần phải &lt;a href=&quot;/ffmpeg-tutorial-nhung-cau-lenh-ffmpeg-xu-ly-video/&quot;&gt;xử lý video&lt;/a&gt; trước cho chúng về cùng kích thước, cùng tốc độ framerate và cùng SAR.&lt;/p&gt;
&lt;p&gt;Trên đây là cách để ghép nối 2 video. Còn nếu bạn muốn ghép 3 video (hoặc nhiều hơn) thì câu lệnh sẽ trở thành:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i video1.mp4 -i video2.avi -i video3.webm -filter_complex &lt;span class=&quot;token string&quot;&gt;&quot;[0:v:0] [0:a:0] [1:v:0] [1:a:0] [2:v:0] [2:a:0] concat=n=3:v=1:a=1 [v] [a]&quot;&lt;/span&gt; -map &lt;span class=&quot;token string&quot;&gt;&quot;[v]&quot;&lt;/span&gt; -map &lt;span class=&quot;token string&quot;&gt;&quot;[a]&quot;&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;ghép-nối-video-không-có-audio&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#gh%C3%A9p-n%E1%BB%91i-video-kh%C3%B4ng-c%C3%B3-audio&quot; aria-label=&quot;ghép nối video không có audio permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Ghép nối video không có audio&lt;/h2&gt;
&lt;p&gt;Nếu bạn muốn ghép nối video nhưng trong đó không có audio stream, bạn chỉ cần áp dụng công thức tương tự như trên nhưng &lt;strong&gt;bỏ đi những thành phần liên quan đến audio&lt;/strong&gt; là được.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i video1.mp4 -i video2.avi -filter_complex &lt;span class=&quot;token string&quot;&gt;&quot;[0:v:0] [1:v:0] concat=n=2:v=1 [v]&quot;&lt;/span&gt; -map &lt;span class=&quot;token string&quot;&gt;&quot;[v]&quot;&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là một số cách để ghép nối video với FFmpeg. Nếu có gì thắc mắc hay góp ý, bạn vui lòng để lại câu hỏi xuống phần bình luận. Mình sẽ cố gắng giải đáp.&lt;/p&gt;
&lt;p&gt;Tham khảo: &lt;a href=&quot;https://trac.ffmpeg.org/wiki/Concatenate&quot;&gt;Concatenating media files&lt;/a&gt;&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[FFmpeg Tutorial] Tách audio từ video với FFmpeg]]></title><description><![CDATA[Đôi khi bạn muốn tách lấy lời bài hát từ một video trên Youtube, vì bạn chỉ muốn nghe hát thôi chẳng hạn. Bạn có thể tìm kiếm và sử dụng các công cụ online. Hoặc bạn cũng có thể…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-tach-audio-tu-video-voi-ffmpeg/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-tach-audio-tu-video-voi-ffmpeg/</guid><pubDate>Sun, 28 Oct 2018 22:30:10 GMT</pubDate><content:encoded>&lt;p&gt;Đôi khi bạn muốn tách lấy lời bài hát từ một video trên Youtube, vì bạn chỉ muốn nghe hát thôi chẳng hạn. Bạn có thể tìm kiếm và sử dụng các công cụ online. Hoặc bạn cũng có thể tách audio từ video với FFmpeg một cách dễ dàng.&lt;/p&gt;
&lt;h2 id=&quot;tách-audio-từ-video-giữ-nguyên-gốc&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#t%C3%A1ch-audio-t%E1%BB%AB-video-gi%E1%BB%AF-nguy%C3%AAn-g%E1%BB%91c&quot; aria-label=&quot;tách audio từ video giữ nguyên gốc permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tách audio từ video giữ nguyên gốc&lt;/h2&gt;
&lt;p&gt;Trước khi làm việc này bạn cần phải biết định dạng audio sử dụng trong một số loại video, ví dụ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nếu video định dạng &lt;strong&gt;&lt;a href=&quot;/ffmpeg-tutorial-convert-video-thanh-mp4-voi-ffmpeg/&quot;&gt;MP4&lt;/a&gt;&lt;/strong&gt; thì audio dạng &lt;strong&gt;.aac&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Nếu video định dạng &lt;strong&gt;&lt;a href=&quot;/ffmpeg-tutorial-convert-video-thanh-webm-voi-ffmpeg/&quot;&gt;WEBM&lt;/a&gt;&lt;/strong&gt; thì audio dạng &lt;strong&gt;.oga&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;... (chắc còn nhiều nhưng mình không rành lắm)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Giả sử mình muốn tách nguyên gốc audio từ video &lt;strong&gt;MP4&lt;/strong&gt;, thì câu lệnh là:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vn -acodec copy output.aac&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.mp4&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-vn&lt;/strong&gt; là cờ dùng để xác định rằng mình không sử dụng video ở output&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-acodec&lt;/strong&gt; copy là cờ dùng để xác định rằng FFmpeg sẽ &lt;strong&gt;copy audio&lt;/strong&gt; từ input sang output mà không encode lại.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output.aac&lt;/strong&gt; là tên file output&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kết quả là mình đã có một file raw audio là &lt;em&gt;output.aac&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&quot;tách-audio-từ-video-và-encode-sang-định-dạng-khác&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#t%C3%A1ch-audio-t%E1%BB%AB-video-v%C3%A0-encode-sang-%C4%91%E1%BB%8Bnh-d%E1%BA%A1ng-kh%C3%A1c&quot; aria-label=&quot;tách audio từ video và encode sang định dạng khác permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tách audio từ video và encode sang định dạng khác&lt;/h2&gt;
&lt;p&gt;Bạn có thể tách audio từ video rồi encode nó sang định dạng khác quen thuộc hơn, như &lt;strong&gt;mp3&lt;/strong&gt;, &lt;strong&gt;wma&lt;/strong&gt;,...&lt;/p&gt;
&lt;p&gt;Giả sử mình muốn encode video thành &lt;strong&gt;mp3&lt;/strong&gt; thì câu lệnh là:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vn output.mp3&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Câu lệnh này gần giống câu lệnh trên. Chỉ khác ở chỗ mình bỏ qua tham số liên quan đến copy audio (&lt;strong&gt;-acodec copy&lt;/strong&gt;) và file audio đầu ra với đuôi là định dạng mình muốn convert (&lt;strong&gt;mp3&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;FFmpeg sẽ dựa vào đuôi này để biết rằng nó sẽ phải encode audio như thế nào.&lt;/p&gt;
&lt;p&gt;Ngoài ra, bạn cũng có thể chỉ định rõ định dạng output theo chuẩn nào.&lt;/p&gt;
&lt;h3 id=&quot;tách-audio-thành-mp3&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#t%C3%A1ch-audio-th%C3%A0nh-mp3&quot; aria-label=&quot;tách audio thành mp3 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tách audio thành mp3&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vn -acodec mp3 output.mp3&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;tách-audio-thành-aac&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#t%C3%A1ch-audio-th%C3%A0nh-aac&quot; aria-label=&quot;tách audio thành aac permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tách audio thành aac&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vn -acodec aac output.aac&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;tách-audio-thành-vorbis&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#t%C3%A1ch-audio-th%C3%A0nh-vorbis&quot; aria-label=&quot;tách audio thành vorbis permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tách audio thành vorbis&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vn -acodec libvorbis output.oga&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Chú ý:&lt;/strong&gt; Nếu làm theo cách này, bạn cần &lt;a href=&quot;/ffmpeg-tutorial-lay-thong-tin-video-bang-ffmpeg/&quot;&gt;biết rõ định dạng file&lt;/a&gt; tương ứng với chuẩn encode.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-acodec mp3&lt;/strong&gt; ứng với định dạng &lt;strong&gt;.mp3&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-acodec aac&lt;/strong&gt; ứng với định dạng &lt;strong&gt;.aac&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-acodec libvorbis&lt;/strong&gt; ứng với định dạng &lt;strong&gt;.oga&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là một số cách để tách audio từ video với FFmpeg. Nếu có gì thắc mắc hay góp ý, bạn vui lòng để lại câu hỏi xuống phần bình luận. Mình sẽ cố gắng giải đáp.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[FFmpeg Tutorial] Cut video với FFmpeg]]></title><description><![CDATA[Nếu như crop là cắt nhỏ video về mặt kích thước thì cut là cắt nhỏ video về mặt thời gian. Bài viết này mình sẽ tìm hiểu về cách cut video với FFmpeg. Câu lệnh cơ bản Ví dụ để cắt…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-cut-video-voi-ffmpeg/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-cut-video-voi-ffmpeg/</guid><category><![CDATA[Xử lý video]]></category><pubDate>Thu, 25 Oct 2018 22:30:06 GMT</pubDate><content:encoded>&lt;p&gt;Nếu như &lt;a href=&quot;/ffmpeg-tutorial-crop-video-voi-ffmpeg/&quot;&gt;crop&lt;/a&gt; là cắt nhỏ video về mặt kích thước thì &lt;strong&gt;cut&lt;/strong&gt; là cắt nhỏ video về mặt thời gian. Bài viết này mình sẽ tìm hiểu về cách cut video với FFmpeg.&lt;/p&gt;
&lt;h2 id=&quot;câu-lệnh-cơ-bản&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A2u-l%E1%BB%87nh-c%C6%A1-b%E1%BA%A3n&quot; aria-label=&quot;câu lệnh cơ bản permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Câu lệnh cơ bản&lt;/h2&gt;
&lt;p&gt;Ví dụ để &lt;strong&gt;cắt&lt;/strong&gt; video từ &lt;strong&gt;thời điểm&lt;/strong&gt; &lt;strong&gt;2 giây&lt;/strong&gt;, với &lt;strong&gt;thời lượng cắt là 3 giây&lt;/strong&gt;, câu lệnh cần dùng là:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -ss 00:00:02.0000 -t &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.mp4&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-ss&lt;/strong&gt; (&lt;strong&gt;start timestamp&lt;/strong&gt;) dùng để xác định &lt;strong&gt;thời điểm bắt đầu&lt;/strong&gt; cắt video, theo định dạng (&lt;strong&gt;giờ:phút:giây:mili-giây&lt;/strong&gt;). Trong câu lệnh trên &lt;strong&gt;00:00:02.0000&lt;/strong&gt; ứng với thời điểm giây thứ 2. Ngoài ra, nếu bạn chỉ dùng &lt;strong&gt;-ss 2&lt;/strong&gt; thì FFmpeg cũng mặc định hiểu rằng, đó là thời điểm 2 giây.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-t&lt;/strong&gt; là cờ dùng để xác định thời lượng bạn muốn cắt. Sau đó là con số chỉ thời lượng đó, ở đây là &lt;strong&gt;3 giây&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output.mp4&lt;/strong&gt; là tên file &lt;strong&gt;output&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Trong câu lệnh trên, ngoài tham số &lt;strong&gt;-t&lt;/strong&gt;, bạn có thể sử dụng tham số &lt;strong&gt;-to&lt;/strong&gt; để thay thế. Tham số** -to** dùng đề xác định &lt;strong&gt;thời điểm kết thúc&lt;/strong&gt; bạn muốn cắt video. Ví dụ mình muốn cắt video ở thời điểm &lt;strong&gt;5 giây&lt;/strong&gt; thì có thể sử dụng một trong 2 câu lệnh dưới đây:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -ss 00:00:02.0000 -to 00:00:05.0000 output.mp4

&lt;span class=&quot;token comment&quot;&gt;# Hoặc&lt;/span&gt;
ffmpeg -i input.mp4 -ss &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; -to &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kết quả thu được hoàn toàn giống với câu lệnh ban đầu.&lt;/p&gt;
&lt;p&gt;Tuy nhiên, có một điều bạn cần lưu ý là câu lệnh trên sẽ encode lại video dựa theo những tham số mặc định của FFmpeg. Nếu bạn muốn giữ nguyên &lt;a href=&quot;/ffmpeg-tutorial-lay-thong-tin-video-bang-ffmpeg/&quot;&gt;thông tin video&lt;/a&gt;, không encode lại video thì mời bạn theo dõi phần dưới đây.&lt;/p&gt;
&lt;h2 id=&quot;không-encode-lại-video&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#kh%C3%B4ng-encode-l%E1%BA%A1i-video&quot; aria-label=&quot;không encode lại video permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Không encode lại video&lt;/h2&gt;
&lt;p&gt;Để làm điều này, bạn có thể sử dụng thêm option &lt;strong&gt;-c copy&lt;/strong&gt; (hoặc &lt;strong&gt;-vcodec copy&lt;/strong&gt; với &lt;strong&gt;video&lt;/strong&gt; và &lt;strong&gt;-acodec copy&lt;/strong&gt; với &lt;strong&gt;audio&lt;/strong&gt;) để FFmpeg copy trực tiếp video từ input sang output mà không cần phải encode lại video nữa.&lt;/p&gt;
&lt;p&gt;Điều này có 2 ưu điểm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Giữ nguyên chất lượng&lt;/strong&gt; video ban đầu&lt;/li&gt;
&lt;li&gt;Giúp cắt video &lt;strong&gt;nhanh&lt;/strong&gt; &lt;strong&gt;hơn&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Câu lệnh cần dùng là:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -ss &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; -t &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; -c copy output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là cách để cut video vời FFmpeg. Nếu có gì thắc mắc hay góp ý, bạn vui lòng để lại câu hỏi xuống phần bình luận. Mình sẽ cố gắng giải đáp.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[FFmpeg Tutorial] Crop video với FFmpeg]]></title><description><![CDATA[Crop video là việc cắt nhỏ video về mặt kích thước. Bài viết này, mình sẽ tìm hiểu về câu lệnh cơ bản để crop video với FFmpeg. Crop video với FFmpeg Câu lệnh cơ bản Trong đó: -i…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-crop-video-voi-ffmpeg/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-crop-video-voi-ffmpeg/</guid><category><![CDATA[Filter]]></category><category><![CDATA[Xử lý video]]></category><pubDate>Wed, 24 Oct 2018 02:15:19 GMT</pubDate><content:encoded>&lt;p&gt;Crop video là việc cắt nhỏ video về mặt kích thước. Bài viết này, mình sẽ tìm hiểu về câu lệnh cơ bản để crop video với FFmpeg.&lt;/p&gt;
&lt;h2 id=&quot;crop-video-với-ffmpeg&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#crop-video-v%E1%BB%9Bi-ffmpeg&quot; aria-label=&quot;crop video với ffmpeg permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Crop video với FFmpeg&lt;/h2&gt;
&lt;h3 id=&quot;câu-lệnh-cơ-bản&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A2u-l%E1%BB%87nh-c%C6%A1-b%E1%BA%A3n&quot; aria-label=&quot;câu lệnh cơ bản permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Câu lệnh cơ bản&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token string&quot;&gt;&quot;crop=w:h:x:y&quot;&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.mp4&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-vf&lt;/strong&gt; dùng để thông báo việc sử dụng &lt;strong&gt;video filter&lt;/strong&gt;. Tiếp theo đó là công thức sử dụng. Để crop video với FFmpeg thì mình sử dụng công thức là &lt;code&gt;crop=w:h:x:y&lt;/code&gt;.
&lt;ul&gt;
&lt;li&gt;w: là &lt;strong&gt;chiều rộng&lt;/strong&gt; video mà bạn muốn thu được.&lt;/li&gt;
&lt;li&gt;h: là &lt;strong&gt;chiều cao&lt;/strong&gt; video mà bạn muốn thu được.&lt;/li&gt;
&lt;li&gt;x: là &lt;strong&gt;toạ độ trên trục x&lt;/strong&gt; điểm &lt;strong&gt;top, left&lt;/strong&gt; của video mong muốn, mặc định x = 0.&lt;/li&gt;
&lt;li&gt;y: là &lt;strong&gt;toạ độ trên trục y&lt;/strong&gt; điểm &lt;strong&gt;top, left&lt;/strong&gt; của video mong muốn, mặc định y = 0.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output.mp4&lt;/strong&gt; là tên file output&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;hệ-trục-toạ-độ&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#h%E1%BB%87-tr%E1%BB%A5c-to%E1%BA%A1-%C4%91%E1%BB%99&quot; aria-label=&quot;hệ trục toạ độ permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Hệ trục toạ độ&lt;/h3&gt;
&lt;p&gt;Có thể bạn vẫn chưa hiểu rõ câu lệnh trên cho lắm. Nên mình đã chuẩn bị một hình minh hoạ cho bạn dễ hiểu hơn:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 599px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.15151515151516%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAACAUlEQVQoz5WS0W/SQBzH+eM0JO7VxAcfTBbR+OCzbrEQfVg0QeObTxritic1USDtFa6lhRYoUNhgQEa7qdCWMqyClLYMvBpowjbjdPvmk0vukk++d7mfz/WCkGtZ7iXjc13XMAzjx2DU7w+GP83BYOLYjm2dYI6csbnc2tbYcex2u2MY3+fyyByn8jUgtKj8Pp2uwoIEhVZSaM3XgkRze3SuQRUlqjA/YUpSVz/SNLXf/+ZDpomOpyDbiBfUhKhB4Sus9pLVowxVo0QV1vqw2AFFBVR0UO4Sokbt9qzJzHuoD9n21HaSTJnISJCX3m+nX7/lIltcZCsT2eTebPLbEZrMHpKVLimqoKRQO9rYmS5k5EMIua6byNZjRRWKHWwjdnUNrKwT/of4tTXC/yix+uADYPbJHX0pn2peyGSuiWdklm2GXpD+IHUrnLn/Sgi85FeeMIFglGD/IzfiQjuV/4yFwZUgfX2DuRnmbjxl/Y+ZVSwKzpUXvwxTZZw7oHj5+bOPt7HYvVD0DvbpbjAaCMXXsXcg3fpXc4Lfw4V2QlRh/guVOzhD/pAsKaSonisDvh4VOkBUiZKKi9ofECXFAy92khXNcs7KtNCEFY2t6Uy1+zd0j9SuztV7ttfsjSdCqK0ozvFsMv11ERZ1p2ZblmX38pnLs9lsOByixU0uwlL+DQA/CPg1AjelAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Hệ trục tọa độ trên video&quot;
        title=&quot;Hệ trục tọa độ trên video&quot;
        src=&quot;/static/18b1e8976c089311a99be86d19cfe852/1906d/crop-video-1.png&quot;
        srcset=&quot;/static/18b1e8976c089311a99be86d19cfe852/103f2/crop-video-1.png 165w,
/static/18b1e8976c089311a99be86d19cfe852/748ba/crop-video-1.png 330w,
/static/18b1e8976c089311a99be86d19cfe852/1906d/crop-video-1.png 599w&quot;
        sizes=&quot;(max-width: 599px) 100vw, 599px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3 id=&quot;ví-dụ-minh-hoạ&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#v%C3%AD-d%E1%BB%A5-minh-ho%E1%BA%A1&quot; aria-label=&quot;ví dụ minh hoạ permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Ví dụ minh hoạ&lt;/h3&gt;
&lt;p&gt;Giả sử mình có một video với độ phân giải &lt;strong&gt;1920x1080&lt;/strong&gt;. Mình muốn crop lấy video với độ phân giải &lt;strong&gt;1280x720&lt;/strong&gt; và điểm &lt;strong&gt;top, lef&lt;/strong&gt; có toạ độ là &lt;strong&gt;(320, 180)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Khi đó, mình có &lt;strong&gt;w = 1280, h = 720, x = 320, y = 180&lt;/strong&gt;. Suy ra câu lệnh cần dùng là:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token string&quot;&gt;&quot;crop=1280:720:320:180&quot;&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;sử-dụng-biến-số&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#s%E1%BB%AD-d%E1%BB%A5ng-bi%E1%BA%BFn-s%E1%BB%91&quot; aria-label=&quot;sử dụng biến số permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sử dụng biến số&lt;/h3&gt;
&lt;p&gt;Trong ví dụ trên, mình cố tình cắt lấy video nằm ở chính giữa của video gốc (cách đều 4 phía).&lt;/p&gt;
&lt;p&gt;Vì mình đã chủ động tính toán:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x = 320 = (1920 - 1280) / 2&lt;/li&gt;
&lt;li&gt;y = 180 = (1080 - 720) / 2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hay tổng quát hoá: để cắt lấy video có kích thước &lt;strong&gt;w, h&lt;/strong&gt; từ video gốc &lt;strong&gt;W, H&lt;/strong&gt; và &lt;strong&gt;cách đều 4 phía&lt;/strong&gt; thì:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x = (W - w) / 2&lt;/li&gt;
&lt;li&gt;y = (H - h) / 2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Giá trị &lt;strong&gt;w, h&lt;/strong&gt; là giá trị mình mong muốn&lt;/li&gt;
&lt;li&gt;Giá trị &lt;strong&gt;W, H&lt;/strong&gt; là giá trị kích thước video ban đầu. Dĩ nhiên, bạn có thể &lt;a href=&quot;/ffmpeg-tutorial-lay-thong-tin-video-bang-ffmpeg/&quot;&gt;lấy được kích thước của video&lt;/a&gt; này thủ công. Hoặc bạn có thể sử dụng biến số có sẵn cung cấp bởi FFmpeg. Đó là &lt;strong&gt;in_w&lt;/strong&gt; tương ứng với chiều rộng video gốc, &lt;strong&gt;in_h&lt;/strong&gt; tương ứng với chiều cao video gốc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nếu áp dụng biến số này thì câu lệnh trong ví dụ trên trở thành:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token string&quot;&gt;&quot;crop=1280:720:(in_w-1280)/2:(in_h-720)/2&quot;&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là cách để crop video với FFmpeg. Nếu có gì thắc mắc hay góp ý, bạn vui lòng để lại câu hỏi xuống phía dưới. Mình sẽ cố gắng giải đáp nhé!&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[FFmpeg Tutorial] Convert video thành WEBM với FFmpeg]]></title><description><![CDATA[Bên cạnh với định dạng MP4 thì WEBM cũng là một định dạng phổ biến. Tuy nhiên, WEBM được tối ưu để chuyên sử dụng trong môi trường web. Bài viết này mình sẽ tìm hiểu cách để…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-convert-video-thanh-webm-voi-ffmpeg/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-convert-video-thanh-webm-voi-ffmpeg/</guid><category><![CDATA[Convert]]></category><category><![CDATA[Xử lý video]]></category><pubDate>Sun, 21 Oct 2018 22:30:55 GMT</pubDate><content:encoded>&lt;p&gt;Bên cạnh với định dạng MP4 thì WEBM cũng là một định dạng phổ biến. Tuy nhiên, WEBM được tối ưu để chuyên sử dụng trong môi trường web. Bài viết này mình sẽ tìm hiểu cách để convert video thành WEBM, rồi sau đó so sánh WEBM với MP4.&lt;/p&gt;
&lt;h2 id=&quot;câu-lệnh-convert-video-thành-webm&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A2u-l%E1%BB%87nh-convert-video-th%C3%A0nh-webm&quot; aria-label=&quot;câu lệnh convert video thành webm permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Câu lệnh convert video thành WEBM&lt;/h2&gt;
&lt;p&gt;Định dạng WEBM sử dụng chuẩn codec &lt;strong&gt;vp8&lt;/strong&gt; của Google. Và để convert video thành WEBM với FFmpeg, bạn có thể sử dụng thư viện &lt;strong&gt;libvpx&lt;/strong&gt; để encode video và thư viện &lt;strong&gt;libvorbis&lt;/strong&gt; để encode audio.&lt;/p&gt;
&lt;p&gt;Câu lệnh cơ bản:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -f webm -c:v libvpx -b:v 1M -c:a libvorbis output.webm -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.mp4&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-f&lt;/strong&gt; dùng để xác định format của file output, sau đó là tên định dạng (&lt;strong&gt;webm&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-c:v&lt;/strong&gt; dùng để xác định codec sử dụng cho video, sau đó là tên thư viện sử dụng &lt;strong&gt;libvpx&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-b:v&lt;/strong&gt; dùng để xác định &lt;strong&gt;bitrate&lt;/strong&gt; cho video đầu ra. Sau đó là số bitrate &lt;strong&gt;1M&lt;/strong&gt;. Chú ý: ở đây mình sử dụng &lt;strong&gt;số liệu chính xác&lt;/strong&gt; là 1M. Trong khi với MP4, mình chỉ có thể xác định &lt;strong&gt;maxrate&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-c:a&lt;/strong&gt; dùng để xác định codec sử dụng cho audio, sau đó là tên thư viện sử dụng &lt;strong&gt;libvorbis&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output.webm&lt;/strong&gt; là tên file output.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-hide_banner&lt;/strong&gt; dùng để ẩn những thông tin liên quan đến FFmpeg (phiên bản, các thư viện sử dụng,...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 9.090909090909092%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAaElEQVQI1xXISQrDMAwAwPz/j02CKa02L7Jw5CWFkjnOFsL786WrT+/TmiMLcgQUteZjZTWOGTmmUn0sSYUkccySio+17a/9OIOqrfvXvCMxAAKQ1mdUjVgAKZc65q3VSKRdvXkfc/0BtiZwch7i4TgAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Convert video thành WEBM&quot;
        title=&quot;Convert video thành WEBM&quot;
        src=&quot;/static/72b617750e1c9b54291d93e4349f8204/663f3/convert-to-webm-1.png&quot;
        srcset=&quot;/static/72b617750e1c9b54291d93e4349f8204/103f2/convert-to-webm-1.png 165w,
/static/72b617750e1c9b54291d93e4349f8204/748ba/convert-to-webm-1.png 330w,
/static/72b617750e1c9b54291d93e4349f8204/663f3/convert-to-webm-1.png 650w&quot;
        sizes=&quot;(max-width: 650px) 100vw, 650px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ngoài ra, bạn cũng có thể thêm các tham số để điều chỉnh về độ phân giải (&lt;code&gt;-vf scale=1280:729&lt;/code&gt;) hoặc tốc độ framerate (&lt;code&gt;-r 20&lt;/code&gt;),... để được kết quả như mong đợi.&lt;/p&gt;
&lt;h2 id=&quot;so-sánh-webm-với-mp4&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#so-s%C3%A1nh-webm-v%E1%BB%9Bi-mp4&quot; aria-label=&quot;so sánh webm với mp4 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;So sánh WEBM với MP4&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;WEBM sử dụng thư viện &lt;strong&gt;libvpx&lt;/strong&gt; để encode video theo chuẩn &lt;strong&gt;vp8&lt;/strong&gt; và thư viện &lt;strong&gt;libvorbis&lt;/strong&gt; để encode audio. Còn MP4 sử dụng thư viện &lt;strong&gt;libx264&lt;/strong&gt; để encode video theo chuẩn &lt;strong&gt;H264&lt;/strong&gt; và thư viện &lt;strong&gt;aac&lt;/strong&gt; để encode audio.&lt;/li&gt;
&lt;li&gt;Convert video thành WEBM thường lâu hơn rất nhiều so với &lt;a href=&quot;/ffmpeg-tutorial-convert-video-thanh-mp4-voi-ffmpeg/&quot;&gt;convert video thành MP4&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;WEBM nén tốt hơn, cho video chất lượng tốt hơn với dung lượng nhỏ hơn MP4.&lt;/li&gt;
&lt;li&gt;WEBM phù hợp với việc sử dụng video trên nền web. Tuy nhiên, không phải trình duyệt nào cũng hỗ trợ như MP4.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là câu lệnh cơ bản để convert video thành WEBM với FFmpeg. Nếu có gì thắc mắc, vui lòng để lại câu hỏi trong phần bình luận nhé. Mình sẽ cố gắng giải đáp nếu có thể.&lt;/p&gt;
&lt;p&gt;Tham khảo: &lt;a href=&quot;https://trac.ffmpeg.org/wiki/Encode/VP8&quot;&gt;Encode VP8&lt;/a&gt;&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[FFmpeg Tutorial] Convert video thành MP4 với FFmpeg]]></title><description><![CDATA[MP4 là một trong những định dạng video phổ biến nhất. Vì nó được hỗ trợ bởi nhiều thiết bị khác nhau. Và đặc biệt là Youtube rất thích MP4. Do đó, bài viết này sẽ giới thiệu với…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-convert-video-thanh-mp4-voi-ffmpeg/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-convert-video-thanh-mp4-voi-ffmpeg/</guid><category><![CDATA[Convert]]></category><category><![CDATA[Xử lý video]]></category><pubDate>Thu, 18 Oct 2018 22:30:17 GMT</pubDate><content:encoded>&lt;p&gt;MP4 là một trong những định dạng video phổ biến nhất. Vì nó được hỗ trợ bởi nhiều thiết bị khác nhau. Và đặc biệt là Youtube rất thích MP4. Do đó, bài viết này sẽ giới thiệu với bạn một số cách để convert video thành MP4.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dĩ nhiên, MP4 chỉ là định dạng file. Nói về video codec thì bài viết này sẽ tập trung vào chuẩn H264.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;câu-lệnh-cơ-bản-convert-video-thành-mp4&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A2u-l%E1%BB%87nh-c%C6%A1-b%E1%BA%A3n-convert-video-th%C3%A0nh-mp4&quot; aria-label=&quot;câu lệnh cơ bản convert video thành mp4 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Câu lệnh cơ bản convert video thành MP4&lt;/h2&gt;
&lt;p&gt;Giả sử mình có 1 video dạng flv và muốn convert nó thành &lt;strong&gt;mp4&lt;/strong&gt;. Khi đó, câu lệnh cơ bản cần dùng là:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.flv output.mp4 -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.flv&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output.mp4&lt;/strong&gt; là tên file output. Đặc biệt, FFmpeg sẽ dựa vào phần đuôi &lt;strong&gt;.mp4&lt;/strong&gt; để xác định rằng nó sẽ convert ra file MP4 với chuẩn &lt;strong&gt;H264&lt;/strong&gt; dành cho video và chuẩn &lt;strong&gt;aac&lt;/strong&gt; dành cho audio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-hide_banner&lt;/strong&gt; dùng để ẩn những thông tin liên quan đến FFmpeg (phiên bản, các thư viện sử dụng,...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 640px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 9.090909090909092%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAaElEQVQI1wXBAQ7DIAgAwP7/kevWZCqI6JCKWtvsbvscDpKc49a+UtEQs8cM9NO+apuRq6cSqGSx2qYDZjFpV7VL+9r21/4+vqI215OLuIAeCDDZuKxPSsUjQWTR1scKSJwFI9fT+rz/y9xwl9KTv/IAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Kết quả convert video thành MP4 cơ bản&quot;
        title=&quot;Kết quả convert video thành MP4 cơ bản&quot;
        src=&quot;/static/2f15e00d002bde8abdbe5d24080c6a6d/0f09e/convert-to-mp4-1-1.png&quot;
        srcset=&quot;/static/2f15e00d002bde8abdbe5d24080c6a6d/103f2/convert-to-mp4-1-1.png 165w,
/static/2f15e00d002bde8abdbe5d24080c6a6d/748ba/convert-to-mp4-1-1.png 330w,
/static/2f15e00d002bde8abdbe5d24080c6a6d/0f09e/convert-to-mp4-1-1.png 640w&quot;
        sizes=&quot;(max-width: 640px) 100vw, 640px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Kết quả cho ra file &lt;em&gt;output.mp4&lt;/em&gt; với kích thước khá nhỏ ~ 600KB, so với video gốc ~ 4MB (có gì đó không ổn thì phải).&lt;/p&gt;
&lt;h2 id=&quot;sử-dụng-một-số-tuỳ-chọn-cơ-bản&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#s%E1%BB%AD-d%E1%BB%A5ng-m%E1%BB%99t-s%E1%BB%91-tu%E1%BB%B3-ch%E1%BB%8Dn-c%C6%A1-b%E1%BA%A3n&quot; aria-label=&quot;sử dụng một số tuỳ chọn cơ bản permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sử dụng một số tuỳ chọn cơ bản&lt;/h2&gt;
&lt;p&gt;Trong phần trước, khi bạn sử dụng câu lệnh cơ bản thì FFmpeg sẽ dùng những thông số mặc định để convert video thành MP4.&lt;/p&gt;
&lt;p&gt;Thường thì kết quả thu được là khá OK rồi. Tuy nhiên, sẽ có những lúc kết quả thu được không tốt lắm, chất lượng video bị giảm đi đáng kể.&lt;/p&gt;
&lt;p&gt;Lúc này, bạn cần phải tuỳ chỉnh các thông số sao cho hợp lý để thu được kết quả như mong muốn.&lt;/p&gt;
&lt;p&gt;Ví dụ:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.flv -f mp4 -vcodec libx264 -preset medium -profile:v baseline -acodec aac output-custom-1.mp4 -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;ý-nghĩa-các-tùy-chọn&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%C3%BD-ngh%C4%A9a-c%C3%A1c-t%C3%B9y-ch%E1%BB%8Dn&quot; aria-label=&quot;ý nghĩa các tùy chọn permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Ý nghĩa các tùy chọn&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.flv&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-f&lt;/strong&gt; là cờ để xác định format đầu ra, tiếp theo là tên format (ở đây là &lt;strong&gt;mp4&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-vcodec libx264&lt;/strong&gt; là cờ để xác định codec sử dụng cho video. Ở đây, mình sử dụng &lt;strong&gt;libx264&lt;/strong&gt; vì đó là thư viện dùng để encode video theo chuẩn H264. Ngoài ra, bạn có thể thay thế nó bằng &lt;strong&gt;-c:v libx264&lt;/strong&gt; cũng cho kết quả tương tự.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-preset medium&lt;/strong&gt; để xác định preset sử dụng là &lt;strong&gt;medium&lt;/strong&gt;. FFmpeg hỗ trợ các loại &lt;strong&gt;preset&lt;/strong&gt; là &lt;em&gt;ultrafast, superfast, veryfast, faster, fast, medium, slow, slower và veryslow&lt;/em&gt;. Trong đó, &lt;strong&gt;ultrafast&lt;/strong&gt; cho phép encode nhanh nhất, nhưng chất lượng thấp nhất. Ngược lại, &lt;strong&gt;veryslow&lt;/strong&gt; cho phép encode chậm nhất nhưng chất lượng tốt nhất.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-profile:v baseline&lt;/strong&gt; dùng để xác định profile sử dụng cho video là &lt;strong&gt;baseline&lt;/strong&gt;. FFmpeg hỗ trợ một số loại profile là: &lt;em&gt;baseline, main, high, high10, high422, và high444&lt;/em&gt;. Trong đó, mỗi profile cho phép video thu được tương thích với các loại thiết bị khác nhau. Trong đó, profile &lt;strong&gt;baseline&lt;/strong&gt; được hỗ trợ bởi hầu hết mọi loại thiết bị.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-acodec aac&lt;/strong&gt; là cờ xác định codec sử dụng cho audio là &lt;strong&gt;aac&lt;/strong&gt;. Tương tự như với video, ở đây bạn cũng có thể sử dụng &lt;strong&gt;-c:a aac&lt;/strong&gt; vẫn cho kết quả tương tự.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output-custom-1.mp4&lt;/strong&gt; là tên file output.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-hide_banner&lt;/strong&gt; dùng để ẩn những thông tin liên quan đến FFmpeg (phiên bản, các thư viện sử dụng,...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 655px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 12.121212121212121%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAaklEQVQI1wXBCw6DIAwAUO9/ReZmskygLbTId1IS39uyex37O0SZqrqWSAJAACil6lopXUiBKPQ+WmtIIedSa5uqU3Xjn9mN+Rxf64D5iiyndaf1LPm+NbI4jx6wttH68EDWAVK4p47/fADAS3BAvngsTgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Convert video thành MP4 sử dụng thêm tùy chọn&quot;
        title=&quot;Convert video thành MP4 sử dụng thêm tùy chọn&quot;
        src=&quot;/static/3574246bbb9a2497b2a21372f2528715/2728a/convert-to-mp4-2.png&quot;
        srcset=&quot;/static/3574246bbb9a2497b2a21372f2528715/103f2/convert-to-mp4-2.png 165w,
/static/3574246bbb9a2497b2a21372f2528715/748ba/convert-to-mp4-2.png 330w,
/static/3574246bbb9a2497b2a21372f2528715/2728a/convert-to-mp4-2.png 655w&quot;
        sizes=&quot;(max-width: 655px) 100vw, 655px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Kích thước output lần này lớn hơn bên trên 1 chút, cỡ ~ 700KB. Nhưng chất lượng thì khác bọt. Bạn cứ thử đi rồi sẽ thấy.&lt;/p&gt;
&lt;h2 id=&quot;sử-dụng-một-số-tuỳ-chọn-khác&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#s%E1%BB%AD-d%E1%BB%A5ng-m%E1%BB%99t-s%E1%BB%91-tu%E1%BB%B3-ch%E1%BB%8Dn-kh%C3%A1c&quot; aria-label=&quot;sử dụng một số tuỳ chọn khác permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sử dụng một số tuỳ chọn khác&lt;/h2&gt;
&lt;p&gt;Ngoài những tuỳ chọn cơ bản trên, bạn còn có thể sử dụng thêm các tuỳ chọn khác như sau.&lt;/p&gt;
&lt;h3 id=&quot;crf-constant-rate-factor&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#crf-constant-rate-factor&quot; aria-label=&quot;crf constant rate factor permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;CRF (Constant Rate Factor)&lt;/h3&gt;
&lt;p&gt;CRF là hệ số dùng để xác định chất lượng mong muốn của video. Nó có giá trị từ 0 đến 51, và mặc định là 23.&lt;/p&gt;
&lt;p&gt;Giá trị CRF càng nhỏ thì chất lượng video càng tốt. Ngược lại, giá trị CRF càng cao thì chất lượng video càng kém.&lt;/p&gt;
&lt;p&gt;Đặc biệt, với CRF = 0, người ta thu được video dạng &lt;strong&gt;lossless&lt;/strong&gt; (không suy giảm).&lt;/p&gt;
&lt;p&gt;Ví dụ:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.flv -c:v libx264 -c:a aac -preset medium -crf &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; output-custom-2.mp4 -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó, thông tin quan trọng là:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-crf 0&lt;/strong&gt; để xác định hệ số CRF = 0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 657px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 15.75757575757576%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVQI1wXBgRKCIAwAUP///7qu7LpKQU9gQxgbikDvDWK/6vMGgN5b750TOecAXCLqrXJKiAjOHVnKeSCACOecW62t1iEu43i/PR+vadbWWAD8TfM0K2NsrQ3R62VVSjOziCi9LHpVei3lOss1EG7bZqzzmwEHeyQGH3CPIbLkEkn8Hv0eEx+UMvrgA/lAkgvn8w9gFKkSXpgFtQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;convert to mp4 sử dụng CRF&quot;
        title=&quot;convert to mp4 sử dụng CRF&quot;
        src=&quot;/static/e422b120be36f1f79c9450a356c8ed50/1475c/convert-to-mp4-3.png&quot;
        srcset=&quot;/static/e422b120be36f1f79c9450a356c8ed50/103f2/convert-to-mp4-3.png 165w,
/static/e422b120be36f1f79c9450a356c8ed50/748ba/convert-to-mp4-3.png 330w,
/static/e422b120be36f1f79c9450a356c8ed50/1475c/convert-to-mp4-3.png 657w&quot;
        sizes=&quot;(max-width: 657px) 100vw, 657px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Kích thước output lần này thậm chí còn lớn hơn video gốc, cỡ ~ 10MB. Tuy nhiên, kết quả theo mình thấy thì cũng không tốt hơn là mấy.&lt;/p&gt;
&lt;p&gt;Thực tế, giá trị CRF hợp lý sẽ là 17 hoặc 18 để có thể cân bằng giữa chất lượng và dung lượng video.&lt;/p&gt;
&lt;h3 id=&quot;bitrate&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#bitrate&quot; aria-label=&quot;bitrate permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Bitrate&lt;/h3&gt;
&lt;p&gt;Giả sử bạn đang muốn Live Streaming một video. Video này có bitrate cỡ 4Mbps. Tuy nhiên, tốc độ mạng cho phép chỉ trong khoảng 1Mbps. Lúc này, bạn cần phải giảm bitrate của video xuống nhỏ hơn 1Mbps.&lt;/p&gt;
&lt;p&gt;Ví dụ câu lệnh sau sẽ giới hạn bitrate của video xuống nhỏ hơn hoặc bằng 1Mbps:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.flv -c:v libx264 -crf &lt;span class=&quot;token number&quot;&gt;17&lt;/span&gt; -maxrate 1M -bufsize 2M output-custom-3.mp4 -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó, những giá trị quan trọng là:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;maxrate 1M&lt;/strong&gt;: xác định bitrate tối đa là &lt;strong&gt;1Mbps&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bufsize 2M&lt;/strong&gt;: xác định buffer cho việc encode video là &lt;strong&gt;2MB&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 659px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 18.78787878787879%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAu0lEQVQI1wXBCXaDIBAAUO9/w6ZGq7IMDLsMAYG8/r9sh7CxUP1S+9pIEoNEr22iOmOu2ibAgO7On2F8BhNTeVLpuU6qY1nXXQhFpZX6+JAYl1yA0qb1mW6SoBmTSlsqzYcECjU662Lrsz1jWV/r9t5+f17XySkT5wIAEHGMed/5PM592xnjKSXnvNaoQBlj55y9j+W9X8cl/k7OBLqYL64EIGh3lxYSKfRSGW0jfTraIJURYAB9Ls9d2j+CMN690ZylRgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;convert video thành mp4 với bitrate&quot;
        title=&quot;convert video thành mp4 với bitrate&quot;
        src=&quot;/static/ba97557cff2c6d01bfc1118ada589a19/4978c/convert-to-mp4-4.png&quot;
        srcset=&quot;/static/ba97557cff2c6d01bfc1118ada589a19/103f2/convert-to-mp4-4.png 165w,
/static/ba97557cff2c6d01bfc1118ada589a19/748ba/convert-to-mp4-4.png 330w,
/static/ba97557cff2c6d01bfc1118ada589a19/4978c/convert-to-mp4-4.png 659w&quot;
        sizes=&quot;(max-width: 659px) 100vw, 659px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ngoài ra, để kiểm tra lại xem bitrate của video bằng bao nhiêu, bạn sử dụng câu lệnh:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i output-custom-3.mp4 -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 660px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 33.93939393939394%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAABF0lEQVQY00WQW26EMAxFWUU/CAUCDE6cJxCGJiSZqt3/nqpA1Z6P64esK9tVTOmMMZynDz4EH84YY/beh6sZUz6OgyMaY5RS2lghpTXGLrbruiql7JybAWYARGzfC31PKaV9oev6rvmDkFsJIW3bVmfMKSe7LFrrze3y4r1p6rompKnrtmmK3W3atnf8Tar0yvvz2Panc3s4z5Rfn1/fxhqljZCDtW/T1AzDNIzDOI7DDaWX0KrcmNKyboiotSnnrJtSiiOiYNYAwEMIiYhSSo7IGJsL8JgflQ8h5WyXhXO+bm5zDkWZAMaUMowJISSUsjwFABhHzkEqBTBXH96nlLU20zQt67ofT8Z5edfwD72WvHt3fq/9AyVzRSyLdFmiAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;xem thông tin video&quot;
        title=&quot;xem thông tin video&quot;
        src=&quot;/static/ee49ab50479ae59aa98f79c8708468f9/7c811/convert-to-mp4-5.png&quot;
        srcset=&quot;/static/ee49ab50479ae59aa98f79c8708468f9/103f2/convert-to-mp4-5.png 165w,
/static/ee49ab50479ae59aa98f79c8708468f9/748ba/convert-to-mp4-5.png 330w,
/static/ee49ab50479ae59aa98f79c8708468f9/7c811/convert-to-mp4-5.png 660w,
/static/ee49ab50479ae59aa98f79c8708468f9/277d6/convert-to-mp4-5.png 715w&quot;
        sizes=&quot;(max-width: 660px) 100vw, 660px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Rõ ràng, video output có bitrate là &lt;strong&gt;776 kb/s&lt;/strong&gt;, thoả mãn điều kiện maxrate &lt;strong&gt;1Mb/s&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Xem thêm: &lt;a href=&quot;/ffmpeg-tutorial-lay-thong-tin-video-bang-ffmpeg/&quot;&gt;[FFmpeg Tutorial] Lấy thông tin video bằng FFmpeg&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;cờ-faststart-dành-cho-web-video&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%E1%BB%9D-faststart-d%C3%A0nh-cho-web-video&quot; aria-label=&quot;cờ faststart dành cho web video permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Cờ faststart dành cho web video&lt;/h3&gt;
&lt;p&gt;Cờ này là bắt buộc nếu bạn muốn dùng video online. Vì FFmpeg sẽ đưa những thông tin &lt;strong&gt;metadata&lt;/strong&gt; cần thiết của video lên trên đầu của file. Nhờ đó mà video có thể play khi mà nó chưa load xong.&lt;/p&gt;
&lt;p&gt;Câu lệnh cơ bản:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.flv -movflags faststart output-custom-4.mp4 -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là một số cách để convert video thành mp4. Dĩ nhiên, bạn có thể kết hợp các câu lệnh đó lại với nhau để thu được kết quả như mong muốn.&lt;/p&gt;
&lt;p&gt;Nếu có gì thắc mắc, vui lòng để lại câu hỏi trong phần bình luận nhé. Mình sẽ cố gắng giải đáp nếu có thể.&lt;/p&gt;
&lt;p&gt;Tham khảo: &lt;a href=&quot;https://trac.ffmpeg.org/wiki/Encode/H.264&quot;&gt;H.264 Video Encoding Guide&lt;/a&gt;&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[FFmpeg Tutorial] Chuyển video thành ảnh động GIF]]></title><description><![CDATA[Làm sao để chuyển video thành ảnh động GIF và tối ưu kích thước của nó? Bài viết này mình sẽ giới thiệu cách làm việc đó sử dụng FFmpeg. Câu lệnh chuyển video thành ảnh động GIF…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-chuyen-video-thanh-anh-dong-gif/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-chuyen-video-thanh-anh-dong-gif/</guid><category><![CDATA[Convert]]></category><category><![CDATA[GIF]]></category><category><![CDATA[Xử lý video]]></category><pubDate>Wed, 17 Oct 2018 12:01:40 GMT</pubDate><content:encoded>&lt;p&gt;Làm sao để chuyển video thành ảnh động GIF và tối ưu kích thước của nó? Bài viết này mình sẽ giới thiệu cách làm việc đó sử dụng FFmpeg.&lt;/p&gt;
&lt;h2 id=&quot;câu-lệnh-chuyển-video-thành-ảnh-động-gif&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A2u-l%E1%BB%87nh-chuy%E1%BB%83n-video-th%C3%A0nh-%E1%BA%A3nh-%C4%91%E1%BB%99ng-gif&quot; aria-label=&quot;câu lệnh chuyển video thành ảnh động gif permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Câu lệnh chuyển video thành ảnh động GIF&lt;/h2&gt;
&lt;p&gt;Câu lệnh đơn giản:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 output.gif -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.mp4&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output.gif&lt;/strong&gt; là tên file output. Đồng thời, phần đuôi &lt;strong&gt;.gif&lt;/strong&gt; giúp FFmpeg hiểu rằng bạn đang muốn chuyển video thành ảnh động GIF.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-hide_banner&lt;/strong&gt; dùng để ẩn những thông tin liên quan đến FFmpeg (phiên bản, các thư viện sử dụng,...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ví dụ mình convert thử một video dài 7s, kích thước 1920x1080, dung lượng ~ 5MB với câu lệnh trên và kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 644px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 13.333333333333334%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAj0lEQVQI1yXH6w6DIAxAYd//CZfFLJmiiNCi3FoKmsXs/PrO4EOu7cqFieUIGXzk2oiFWApVhyEV5vqs84+JxTiPPhLLML5f42fCI3K7fEiz2ha9q9WERKWKsbjo3Vg4QoqZV71vFvTuLJ6ltkHN0/xVOZfrvokIARA9ABJz6z3ECACFSFoTEUQ8z9D+9f4DxYKqAhHFepAAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Convert video thành ảnh động GIF với câu lệnh đơn giản&quot;
        title=&quot;Convert video thành ảnh động GIF với câu lệnh đơn giản&quot;
        src=&quot;/static/b1100e2bc47b3d1a93899ae05ab65e63/e8cbb/video-gif-1.png&quot;
        srcset=&quot;/static/b1100e2bc47b3d1a93899ae05ab65e63/103f2/video-gif-1.png 165w,
/static/b1100e2bc47b3d1a93899ae05ab65e63/748ba/video-gif-1.png 330w,
/static/b1100e2bc47b3d1a93899ae05ab65e63/e8cbb/video-gif-1.png 644w&quot;
        sizes=&quot;(max-width: 644px) 100vw, 644px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ảnh động GIF có kích thước cỡ ~21MB (gấp 4 lần video gốc).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tại sao ảnh động GIF lại nặng hơn nhiều so với video tương ứng?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bởi vì, ảnh động GIF được tạo bởi các ảnh riêng lẻ ứng với ảnh gốc. Trong khi đó, video chỉ lưu chúng lại thành các frame dạng I, P, B. Mà chỉ frame I là frame đầy đủ, còn frame P và B chỉ dùng để lưu lại sự thay đổi nhỏ giữa các frame. Điều này giải thích tại sao ảnh động GIF lại nặng hơn so với video tương ứng.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vậy làm sao tối ưu được kích thước của ảnh động GIF?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;tối-ưu-kích-thước-ảnh-động-gif&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#t%E1%BB%91i-%C6%B0u-k%C3%ADch-th%C6%B0%E1%BB%9Bc-%E1%BA%A3nh-%C4%91%E1%BB%99ng-gif&quot; aria-label=&quot;tối ưu kích thước ảnh động gif permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tối ưu kích thước ảnh động GIF&lt;/h2&gt;
&lt;p&gt;Thực ra, nếu nói tối ưu thì cũng không hẳn. Chỉ đơn giản là mình giảm kích thước của nó đi thôi.&lt;/p&gt;
&lt;p&gt;Có 3 cách để giảm kích thước của ảnh động GIF là:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Giảm thời lượng của ảnh động GIF. Ví dụ: thay vì độ dài 20 giây thì mình chỉ lấy 10 giây, bắt đầu từ giây thứ 5 đến giây thứ 15 chẳng hạn.&lt;/li&gt;
&lt;li&gt;Giảm kích thước của ảnh động GIF. Ví dụ: thay vì kích thước Full HD (1920x1080) thì mình giảm xuống HD (1280x720).&lt;/li&gt;
&lt;li&gt;Giảm tốc độ framerate (tức số frame trên 1 giây). Ví dụ: thay vì fps=30 thì mình giảm xuống còn fps=20.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Xem thêm: &lt;a href=&quot;/ffmpeg-tutorial-nhung-cau-lenh-ffmpeg-xu-ly-video/&quot;&gt;[FFmpeg tutorial] Những câu lệnh FFmpeg xử lý video&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;giảm-thời-lượng-ảnh-động-gif&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#gi%E1%BA%A3m-th%E1%BB%9Di-l%C6%B0%E1%BB%A3ng-%E1%BA%A3nh-%C4%91%E1%BB%99ng-gif&quot; aria-label=&quot;giảm thời lượng ảnh động gif permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Giảm thời lượng ảnh động GIF&lt;/h3&gt;
&lt;p&gt;Video &lt;em&gt;input.mp4&lt;/em&gt; bên trên có độ dài 7 giây. Mình muốn ảnh động GIF sẽ có độ dài 4 giây, bắt đầu từ giây thứ 2 đến giây thứ 6.&lt;/p&gt;
&lt;p&gt;Để làm việc này, mình có thể sử dụng 1 trong 2 câu lệnh sau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Cách 1:&lt;/span&gt;
ffmpeg -i input.mp4 -ss &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; -t &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; output_reduce_1.gif -hide_banner

&lt;span class=&quot;token comment&quot;&gt;# Cách 2:&lt;/span&gt;
ffmpeg -i input.mp4 -ss &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; -to &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt; output_reduce_2.gif -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.mp4&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-ss 2&lt;/strong&gt; xác định thời điểm bắt đầu, ở đây là giây thứ 2.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-t 4&lt;/strong&gt; xác định thời lượng muốn lấy, ở đây là 4 giây.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-to 6&lt;/strong&gt; xác định thời điểm kết thúc, ở đây là giây thứ 6.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output_reduce_1.gif&lt;/strong&gt;, &lt;strong&gt;output_reduce_2.gif&lt;/strong&gt; là tên file output&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-hide_banner&lt;/strong&gt; dùng để ẩn những thông tin liên quan đến FFmpeg (phiên bản, các thư viện sử dụng,...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 601px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 16.363636363636363%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVQI1yXGWw6DIBBAUfe/vibG2KZYBKQDiA6IPG0ab87H7WAeyOstF3m1VktZjVEKAAARr9acc1opa20IoZZyf621ln/dYxz6fny+CBMSlGVCkol+KOcLxFQl6InyDX2I2R+JTDMX3+PMR0g+xI5LymbBmKAzM8buOyptVrshulyqc15r48OZc4kxa222HVPKtx/1BqhkhczdSwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Kết quả sau khi giảm thời lượng ảnh động GIF&quot;
        title=&quot;Kết quả sau khi giảm thời lượng ảnh động GIF&quot;
        src=&quot;/static/88deea6f718308a3468a1ce27e72c872/f6e13/video-gif-2.png&quot;
        srcset=&quot;/static/88deea6f718308a3468a1ce27e72c872/103f2/video-gif-2.png 165w,
/static/88deea6f718308a3468a1ce27e72c872/748ba/video-gif-2.png 330w,
/static/88deea6f718308a3468a1ce27e72c872/f6e13/video-gif-2.png 601w&quot;
        sizes=&quot;(max-width: 601px) 100vw, 601px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Bạn có thể thấy là ảnh động GIF lần này có kích thức cỡ ~11MB (bằng một nửa so với ảnh động GIF ban đầu ~21MB).&lt;/p&gt;
&lt;h3 id=&quot;giảm-kích-thước-ảnh-động-gif&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#gi%E1%BA%A3m-k%C3%ADch-th%C6%B0%E1%BB%9Bc-%E1%BA%A3nh-%C4%91%E1%BB%99ng-gif&quot; aria-label=&quot;giảm kích thước ảnh động gif permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Giảm kích thước ảnh động GIF&lt;/h3&gt;
&lt;p&gt;Trong ví dụ trên, video có kích thước Full HD (1920x1080). Bây giờ mình sẽ giảm nó xuống HD (1280xx720) như sau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1280&lt;/span&gt;:720 output_reduce_3.gif -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.mp4&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-vf&lt;/strong&gt; là cờ dùng để khai báo việc sử dụng &lt;strong&gt;video filter&lt;/strong&gt;, với công thức là &lt;strong&gt;scale=1280:720&lt;/strong&gt; - là kích thước mong muốn.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output_reduce_3.gif&lt;/strong&gt; là tên file output&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-hide_banner&lt;/strong&gt; dùng để ẩn những thông tin liên quan đến FFmpeg (phiên bản, các thư viện sử dụng,...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 606px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 20.60606060606061%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuklEQVQI1yXH2Y6DIBQAUP//+yZpqmlqQUHgsoMsF9vJTJPzcqaoGX29diZrH3h9rI9SaQXG+YjjnXLRxv0v1z6M9dq4hqP1P9O6k5/bPC+rAG9DOcA9CV8JY9Kc/QM2kU2AS7ldqeDGFeUq1+tropzOy/J8rPf7sjPufNh2zrnQxiKOEOIhhA9xjKu2LoSUClrHr4nJYyWUUkYok8q4kIQEocBYXxr6mCVoH1LteNYG2oJxZ8PSeq79F5LS3+nRQ6NyAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Kết quả sau khi giảm độ phân giải&quot;
        title=&quot;Kết quả sau khi giảm độ phân giải&quot;
        src=&quot;/static/1dc74d35ba5a8f95ca637901864ce177/cec09/video-gif-3.png&quot;
        srcset=&quot;/static/1dc74d35ba5a8f95ca637901864ce177/103f2/video-gif-3.png 165w,
/static/1dc74d35ba5a8f95ca637901864ce177/748ba/video-gif-3.png 330w,
/static/1dc74d35ba5a8f95ca637901864ce177/cec09/video-gif-3.png 606w&quot;
        sizes=&quot;(max-width: 606px) 100vw, 606px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ảnh động GIF &lt;strong&gt;output_reduce_3.gif&lt;/strong&gt; lần này cũng có kích thước cỡ ~11MB.&lt;/p&gt;
&lt;h3 id=&quot;giảm-tốc-độ-framerate-của-ảnh-động-gif&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#gi%E1%BA%A3m-t%E1%BB%91c-%C4%91%E1%BB%99-framerate-c%E1%BB%A7a-%E1%BA%A3nh-%C4%91%E1%BB%99ng-gif&quot; aria-label=&quot;giảm tốc độ framerate của ảnh động gif permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Giảm tốc độ framerate của ảnh động GIF&lt;/h3&gt;
&lt;p&gt;Cũng trong ví dụ trên, video có &lt;strong&gt;fps=30&lt;/strong&gt;. Mình sẽ giảm tốc độ này xuống &lt;strong&gt;fps=20&lt;/strong&gt; bằng câu lệnh sau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -r &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt; output_reduce_4.gif -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định input, sau đó là tên file (&lt;strong&gt;input.mp4&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-r&lt;/strong&gt; là cờ xác định framerate mong muốn, sau đó là số tương ứng với fps (20)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output_reduce_4.gif&lt;/strong&gt; là tên file output&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-hide_banner&lt;/strong&gt; dùng để ẩn những thông tin liên quan đến FFmpeg (phiên bản, các thư viện sử dụng,...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 603px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 24.848484848484848%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA5ElEQVQY00XLyW6DMBRAUf7/46p2kaCkYBtM4+F5npKAMVUiVT27u7hd0vRGKUhV97rvewhev5iUUmutlOKcc9bmnGut3r+q/unogq6X73mipZTH/WGt5YwxxrUxrbUYAucixri9gQSl1P+8cELQSAnG46BA5hRAMKVk8PY4WslRgbiXfByt7ZtR4Iw5Wj1abXvteow+TuNXTz57fJ0kYfY8Lj1i46JUrDN3FyIoJAibcM/rJAYK0q/SrzqsHZVwQuKM4Yxh+PFEluHmEYtEZKq36Z1ElMVsVD8Rj5gnqtdZr8yuvxbQFkCzR/p6AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Kết quả sau khi giảm framerate&quot;
        title=&quot;Kết quả sau khi giảm framerate&quot;
        src=&quot;/static/ab29338cef36535909b975ea80423ad3/85b8d/video-gif-4.png&quot;
        srcset=&quot;/static/ab29338cef36535909b975ea80423ad3/103f2/video-gif-4.png 165w,
/static/ab29338cef36535909b975ea80423ad3/748ba/video-gif-4.png 330w,
/static/ab29338cef36535909b975ea80423ad3/85b8d/video-gif-4.png 603w&quot;
        sizes=&quot;(max-width: 603px) 100vw, 603px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Lúc này, ảnh động GIF &lt;strong&gt;output_reduce_4.gif&lt;/strong&gt; có kích thước cỡ ~15MB.&lt;/p&gt;
&lt;h3 id=&quot;kết-hợp-các-phương-pháp&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#k%E1%BA%BFt-h%E1%BB%A3p-c%C3%A1c-ph%C6%B0%C6%A1ng-ph%C3%A1p&quot; aria-label=&quot;kết hợp các phương pháp permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kết hợp các phương pháp&lt;/h3&gt;
&lt;p&gt;Nếu như việc sử dụng 1 trong 3 cách trên vẫn chưa đem lại kết quả như mong muốn thì bạn có thể kết hợp chúng lại.&lt;/p&gt;
&lt;p&gt;Giả sử mình sẽ kết hợp cả 3 phương pháp trên lại với nhau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -ss &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; -t &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1280&lt;/span&gt;:720 -r &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt; output_reduce_5.gif -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kết quả:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 605px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 27.878787878787882%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA+klEQVQY003MyY6DMBAEUP7/CyeChBA2u93GC4vbbhtFoJFmSnWpw6uq//QAUO5471EhIhpjcs6cknPOGGOtCyEws9baWldKyXeqZ/0ch5GIYkzGGCGEFAIAUmLmdD2hIiJmjpGkEHpZ/nD7er3btqkbKcE5N88zACil0q0vCoqZSylEN9b/cNe++0/fdZ1GXL0DKRUojZo55cyL1hqRmc+zxEgKwFp7nhcvJVePR1M3r59HM45C4dL1Qz/MwyT2g44QpxmmWe5HpMjbHj7DJCRS5EApUKqEVBJQSGWsX/fDWG/cav12UAwxWb8t1h2UQrxq3erWLaTf+QUSe1KnnrCWEgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Kết quả&quot;
        title=&quot;Kết quả&quot;
        src=&quot;/static/9944ff0e0ba28268a16b41794ce5f32c/21793/video-gif-5.png&quot;
        srcset=&quot;/static/9944ff0e0ba28268a16b41794ce5f32c/103f2/video-gif-5.png 165w,
/static/9944ff0e0ba28268a16b41794ce5f32c/748ba/video-gif-5.png 330w,
/static/9944ff0e0ba28268a16b41794ce5f32c/21793/video-gif-5.png 605w&quot;
        sizes=&quot;(max-width: 605px) 100vw, 605px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;WOW! Lần này, ảnh động GIF &lt;strong&gt;output_reduce_5.gif&lt;/strong&gt; có kích thước tương đương với video ban đầu ~5MB.&lt;/p&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là cách chuyển video thành ảnh động GIF, cũng như các phương pháp làm giảm kích thước của ảnh động GIF.&lt;/p&gt;
&lt;p&gt;Nếu có gì thắc mắc hoặc góp ý vui lòng để lại trong phần bình luận phía dưới. Mình sẽ cố gắng giải đáp.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[FFmpeg Tutorial] Lấy ảnh từ video với FFmpeg]]></title><description><![CDATA[Đã bao giờ bạn xem một video và thấy "ôi cô diễn viên xinh quá" hay "cảnh này đẹp quá". Rồi sau đó, bạn muốn lưu giữ lại làm kỉ niệm. Nhưng làm bằng cách nào đây? Tua đến vị trí đó…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-lay-anh-tu-video-voi-ffmpeg/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-lay-anh-tu-video-voi-ffmpeg/</guid><category><![CDATA[Xử lý video]]></category><pubDate>Sun, 14 Oct 2018 22:30:26 GMT</pubDate><content:encoded>&lt;p&gt;Đã bao giờ bạn xem một video và thấy &quot;ôi cô diễn viên xinh quá&quot; hay &quot;cảnh này đẹp quá&quot;. Rồi sau đó, bạn muốn lưu giữ lại làm kỉ niệm. Nhưng làm bằng cách nào đây? Tua đến vị trí đó rồi chụp lại màn hình? &lt;strong&gt;Không&lt;/strong&gt;. Vì bạn có thể lấy ảnh từ video với FFmpeg một cách dễ dàng.&lt;/p&gt;
&lt;p&gt;Thật đấy, tin mình đi và bắt đầu nhé!&lt;/p&gt;
&lt;h2 id=&quot;lấy-ra-tất-cả-các-ảnh-từ-video&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BA%A5y-ra-t%E1%BA%A5t-c%E1%BA%A3-c%C3%A1c-%E1%BA%A3nh-t%E1%BB%AB-video&quot; aria-label=&quot;lấy ra tất cả các ảnh từ video permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lấy ra tất cả các ảnh từ video&lt;/h2&gt;
&lt;p&gt;Cách đơn giản nhất để lấy ảnh từ video là trích xuất ra tất cả các ảnh. Để làm việc này, bạn có thể sử dụng câu lệnh sau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i mini-input.mp4 img%d.jpg -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ xác định file đầu vào, sau đó là tên file đầu vào (ví dụ: &lt;em&gt;mini-input.mp4&lt;/em&gt;). Ngoài ra, bạn cũng có thể sử dụng video với các định dạng khác như: webm, flv, mkv,...&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;img%d.jpg&lt;/strong&gt; là tham số dùng để xác định tên của file ảnh đầu ra. Ở đây, mình sử dụng file đầu ra dạng jpg. Tuy nhiên, bạn cũng có thể xuất ra file png hoặc bmp,...&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-hide_banner&lt;/strong&gt;: dùng để ẩn những thông tin không cần thiết liên quan đến FFmpeg như phiên bản, các thư viện sử dụng,... như mình đã nói trong bài viết về &lt;a href=&quot;/ffmpeg-tutorial-lay-thong-tin-video-bang-ffmpeg/&quot;&gt;lấy thông tin video bằng FFmpeg&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ở đây, với định dạng file đầu ra là &lt;strong&gt;img%d&lt;/strong&gt; thì các file ảnh đầu ra sẽ có tên lần lượt là: img1.jpg, img2.jpg, img3.jpg,... img10.jpg,... img100.jpg.... Nghĩa là độ dài kí tự không bằng nhau.&lt;/p&gt;
&lt;p&gt;Nếu muốn độ dài của chúng bằng nhau, bạn có thể sửa lại câu lệnh trên một chút. Thay vì dùng &lt;em&gt;img%d.jpg&lt;/em&gt; thì bạn dùng &lt;em&gt;img%nd.jpg&lt;/em&gt; (với &lt;strong&gt;n&lt;/strong&gt; là số tự nhiên). Cái này tương tự như lệnh &lt;em&gt;printf&lt;/em&gt; trong lập trình C vậy.&lt;/p&gt;
&lt;p&gt;Ví dụ: nếu bạn sử dụng &lt;strong&gt;img%3d.jpg&lt;/strong&gt; thì ảnh đầu ra sẽ tên lần lượt là: img001.jpg, img002.jpg, img003.jpg,...&lt;/p&gt;
&lt;h2 id=&quot;lấy-ra-một-vài-ảnh-từ-video&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BA%A5y-ra-m%E1%BB%99t-v%C3%A0i-%E1%BA%A3nh-t%E1%BB%AB-video&quot; aria-label=&quot;lấy ra một vài ảnh từ video permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lấy ra một vài ảnh từ video&lt;/h2&gt;
&lt;p&gt;Giả sử một video có framerate là 25 fps, độ dài 60 phút thì số lượng frame sẽ là: &lt;strong&gt;25 _ 60 _ 60 = 90000&lt;/strong&gt;. Như vậy là quá nhiều phải không?&lt;/p&gt;
&lt;p&gt;Trong khi bạn chỉ muốn lấy ra một vài bức ảnh trong đó, thì việc sử dụng cách trên là quá mất thời gian. Thậm chí, máy bạn còn có thể bị đơ, thiếu bộ nhớ,....&lt;/p&gt;
&lt;p&gt;Vì vậy, để lấy ra một vài bức ảnh từ video, bạn có thể sử dụng câu lệnh:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i mini-input.mp4 -ss 00:00:02.000 -vframes &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; img%d.jpg&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i mini-input.mp4&lt;/strong&gt; dùng để xác định file đầu vào.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-ss&lt;/strong&gt; là cờ dùng để xác định &lt;strong&gt;thời điểm bạn muốn lấy ảnh&lt;/strong&gt; từ video. Tiếp sau đó là thời gian theo định dạng như trong câu lệnh trên (ví dụ: 00:00:02.000 ứng với thời điểm 2 giây).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-vframes&lt;/strong&gt; là cờ dùng để xác định &lt;strong&gt;số frame&lt;/strong&gt; muốn lấy ra. Sau đó là số lượng frame (trong ví dụ trên là 5 frame).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;img%d.jpg&lt;/strong&gt; là định dạng file đầu ra, giống như phần trên.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lấy-ra-các-ảnh-cách-nhau-nhất-định&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BA%A5y-ra-c%C3%A1c-%E1%BA%A3nh-c%C3%A1ch-nhau-nh%E1%BA%A5t-%C4%91%E1%BB%8Bnh&quot; aria-label=&quot;lấy ra các ảnh cách nhau nhất định permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lấy ra các ảnh cách nhau nhất định&lt;/h2&gt;
&lt;p&gt;Ngoài các cách trên, bạn có thể lấy ảnh từ video dựa trên một khoảng cách thời gian nhất định. Ví dụ bạn có thể lấy ra tất cả các ảnh cách nhau mỗi 1 giây.&lt;/p&gt;
&lt;p&gt;Khi đó, bạn có thể dùng câu lệnh sau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i mini-input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;fps&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; img%d.jpg&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i mini-input.mp4&lt;/strong&gt; dùng để xác định file đầu vào.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-vf&lt;/strong&gt; là cờ dùng để áp dụng &lt;strong&gt;video filter&lt;/strong&gt; vào câu lệnh này. Sau đó là công thức áp dụng. Ở đây mình dùng &lt;strong&gt;fps=1&lt;/strong&gt;, nghĩa là lấy 1 ảnh sau mỗi 1 giây. Ngoài ra, bạn có thể sử dụng &lt;strong&gt;fps=1/n&lt;/strong&gt;, với &lt;strong&gt;n&lt;/strong&gt; là số tự nhiên. Khi đó, FFmpeg sẽ lấy ra 1 ảnh sau mỗi n giây.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;img%d.jpg&lt;/strong&gt; là định dạng file đầu ra, giống như phần trên.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Câu lệnh này có tác dụng khi bạn muốn lấy ra một số ảnh của video đầy đủ để làm một video dạng tóm tắt.&lt;/p&gt;
&lt;h2 id=&quot;lấy-ra-các-ảnh-là-keyframes&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BA%A5y-ra-c%C3%A1c-%E1%BA%A3nh-l%C3%A0-keyframes&quot; aria-label=&quot;lấy ra các ảnh là keyframes permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lấy ra các ảnh là keyframes&lt;/h2&gt;
&lt;p&gt;Các phương pháp trên rất tốt nhưng bị một vấn đề là: chất lượng frame ảnh lấy ra có khả năng sẽ không tốt.&lt;/p&gt;
&lt;p&gt;Vì đối với việc encode video, các frame sẽ được lưu trữ thành các frame dạng I, P, B. Trong đó, chỉ có frame dạng I là tương ứng với ảnh đầy đủ (là &lt;strong&gt;keyframe&lt;/strong&gt;), còn các frame P và B chỉ lưu trữ sự thay đổi giữa các frame.&lt;/p&gt;
&lt;p&gt;Do đó, để lấy ảnh từ video tốt nhất, bạn nên lấy ra các ảnh là keyframes bằng câu lệnh:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i mini-input.mp4 -vf &lt;span class=&quot;token string&quot;&gt;&quot;select=eq(pict_type\,I)&quot;&lt;/span&gt; -vsync vfr img%d.jpg&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i mini-input.mp4&lt;/strong&gt; dùng để xác định file đầu vào.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-vf&lt;/strong&gt; là cờ dùng để áp dụng &lt;strong&gt;video filter&lt;/strong&gt; vào câu lệnh này. Nhưng khác với câu lệnh phần trên, ở đây, mình sử dụng công thức &lt;code&gt;&quot;select=eq(pict_type,I)&quot;&lt;/code&gt;. Tạm dịch là: &quot;lựa chọn ra các frame kiểu I&quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-vsync vfr&lt;/strong&gt; dùng để nói với bộ filter sử dụng cơ chế đồng bộ bitrate. Thực ra, mình cũng không hiểu rõ cờ này cho lắm. Chỉ biết là nếu như không sử dụng cờ này thì kết quả có thể sẽ chứa những frame không phải là keyframe.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;img%d.jpg&lt;/strong&gt; là định dạng file đầu ra, giống như phần trên.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Như vậy là mình đã giới thiệu với bạn 4 cách để lấy ảnh từ video với FFmpeg. Mỗi cách có một tác dụng riêng. Tùy từng trường hợp mà bạn có thể chọn ra cách hợp lý nhất.&lt;/p&gt;
&lt;p&gt;Nếu có gì sai sót, mình rất mong nhận được sự góp ý từ bạn.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tham khảo&lt;/strong&gt;: &lt;a href=&quot;https://ffmpeg.org/ffmpeg.html&quot;&gt;ffmpeg document&lt;/a&gt;.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[FFmpeg Tutorial] Lấy thông tin video bằng FFmpeg]]></title><description><![CDATA[Lấy thông tin video bằng FFmpeg như thế nào và lấy để làm gì? Do là gần đây có nhiều bạn hỏi mình về việc cắt ghép video. Mà bạn ấy hay bị lỗi khi ghép nhiều video với nhau. Nguyên…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-lay-thong-tin-video-bang-ffmpeg/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-lay-thong-tin-video-bang-ffmpeg/</guid><category><![CDATA[Xử lý video]]></category><pubDate>Sun, 14 Oct 2018 12:00:17 GMT</pubDate><content:encoded>&lt;p&gt;Lấy thông tin video bằng FFmpeg như thế nào và lấy để làm gì?&lt;/p&gt;
&lt;p&gt;Do là gần đây có nhiều bạn hỏi mình về việc cắt ghép video. Mà bạn ấy hay bị lỗi khi ghép nhiều video với nhau.&lt;/p&gt;
&lt;p&gt;Nguyên nhân gây lỗi là do các file video đó không tương đồng nhau (về định dạng, framerate, bitrate,...). Mà chuyện tương đồng là cần thiết nếu bạn muốn ghép chúng lại thành một.&lt;/p&gt;
&lt;p&gt;Vì vậy, việc lấy thông tin của video trước khi ghép là vô cùng cần thiết. Qua đó, bạn sẽ biết mình phải &lt;a href=&quot;/ffmpeg-tutorial-nhung-cau-lenh-ffmpeg-xu-ly-video/&quot;&gt;xử lý video&lt;/a&gt; như thế nào trước khi ghép chúng lại với nhau.&lt;/p&gt;
&lt;p&gt;Để lấy thông tin video bằng FFmpeg có hai cách là: sử dụng &lt;strong&gt;ffmpeg.exe&lt;/strong&gt; và sử dụng &lt;strong&gt;ffprobe.exe&lt;/strong&gt; (đây là 2 trong 3 công cụ có được sau khi &lt;a href=&quot;https://completejavascript.com/huong-dan-tim-hieu-ffmpeg-co-ban/&quot;&gt;cài đặt FFmpeg&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id=&quot;lấy-thông-tin-video-sử-dụng-ffmpeg&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BA%A5y-th%C3%B4ng-tin-video-s%E1%BB%AD-d%E1%BB%A5ng-ffmpeg&quot; aria-label=&quot;lấy thông tin video sử dụng ffmpeg permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lấy thông tin video sử dụng ffmpeg&lt;/h2&gt;
&lt;h3 id=&quot;câu-lệnh&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A2u-l%E1%BB%87nh&quot; aria-label=&quot;câu lệnh permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Câu lệnh&lt;/h3&gt;
&lt;p&gt;Để lấy được thông tin video bằng &lt;strong&gt;ffmpeg&lt;/strong&gt; bạn có thể sử dụng câu lệnh sau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -hide_banner&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-i&lt;/strong&gt; là cờ dùng để xác định file input, sau đó là tên của file đầu vào (&lt;em&gt;input.mp4&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;-hide_banner&lt;/strong&gt; là cờ dùng để bỏ qua thông tin liên quan đến phiên bản, các thư viện mà FFmpeg sử dụng,...&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;phân-tích-kết-quả&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#ph%C3%A2n-t%C3%ADch-k%E1%BA%BFt-qu%E1%BA%A3&quot; aria-label=&quot;phân tích kết quả permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Phân tích kết quả&lt;/h3&gt;
&lt;p&gt;Ví dụ khi mình lấy thông tin của video bằng FFmpeg như sau:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 660px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.66666666666666%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAACAElEQVQoz42R7WqjUBCGRyNWTI4fVaOeo3H9QBPr5qsatn/SsGyhf3s/hY2WpqRQWExTktBA7mNvblldslnYH30YhhmYl5eZgfV6/fLyUpblqiyfl8siz4s8XywWRVHc39/P5/OHh4fFYvH09PT4+Jjn+fNyWb6+vRXffx52cHd35zhOp9MxsUkIMQwDY2xWWVXVdrtt27YsywghURRZlgUAiqIA4Ee5gpubG9/3B4NBGIayLFuWhTHmeb6eazQaDMNABVVxFL+uVjCdTg3DGI/HURRhjF3XHY1GcRwPh8MwDLvdbhzHZ2dnDMPUmqP4cDjAbDZLkqTf7ydJ4vt+EAS9Xi8MwzRNsyyL4/ji4iKKoiRJMMaEEM/zeJ4XRXG/38Pl5aWmqlmWOY4jSZIgCFEYeq4b+D7GWNO0IAgUReE4jud5hFCz2aw32m638OXqSjfNcZqG3e4nz1NU1bQs3TCIbRsYy+fnhBBd11GFJEkcxyGEWJZ9f3+Hb5MJ4fnPjuOJottqiRTlNJu41XIFwUdIQ8jAmOM4OKHe+bfz1+vrFsfJgtBWFE2WZUFQJUmRJJamGQD65M5HaJr+I86yDAAYhqEbDbqCqgL+ve3/nSeTSf1P6sPUzrvdDtI0BYC6/yB/nW9vbzVNs23bsixCSP3Muq5b0zStCnyCruubzeYXSyVlUMtfHr4AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Lấy thông tin của video sử dụng ffmpeg.exe&quot;
        title=&quot;Lấy thông tin của video sử dụng ffmpeg.exe&quot;
        src=&quot;/static/6357c99e4163c9eb94320ab1f39e6732/7c811/lay-thong-tin-video-ffmpeg-2.png&quot;
        srcset=&quot;/static/6357c99e4163c9eb94320ab1f39e6732/103f2/lay-thong-tin-video-ffmpeg-2.png 165w,
/static/6357c99e4163c9eb94320ab1f39e6732/748ba/lay-thong-tin-video-ffmpeg-2.png 330w,
/static/6357c99e4163c9eb94320ab1f39e6732/7c811/lay-thong-tin-video-ffmpeg-2.png 660w,
/static/6357c99e4163c9eb94320ab1f39e6732/3c503/lay-thong-tin-video-ffmpeg-2.png 677w&quot;
        sizes=&quot;(max-width: 660px) 100vw, 660px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Bạn có thể thấy video mà mình thử nghiệm ở đây có &lt;strong&gt;thời lượng&lt;/strong&gt; (duration) là 00:21:38.21 (tức ~ 21 phút 38 giây) và &lt;strong&gt;bitrate&lt;/strong&gt; là 1123kb/s.&lt;/p&gt;
&lt;p&gt;Ngoài ra, bạn cũng thấy rằng file này có 2 stream (hay gọi là 2 kênh cho dễ hiểu). Kênh 1 ứng với &lt;strong&gt;Stream #0:0&lt;/strong&gt; và kênh 2 ứng với &lt;strong&gt;Stream #0: 1&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kênh 1 (video) được encode theo &lt;a href=&quot;https://trac.ffmpeg.org/wiki/Encode/H.264&quot;&gt;chuẩn h264&lt;/a&gt; với profile level là &lt;strong&gt;Main&lt;/strong&gt;; mỗi frame ảnh có định dạng &lt;strong&gt;yuv420p&lt;/strong&gt;; &lt;strong&gt;kích thước&lt;/strong&gt; video là 854x480 (với width=854 và height=480); &lt;strong&gt;bitrate&lt;/strong&gt; của kênh video là 990 kb/s (dĩ nhiên sẽ nhỏ hơn bitrate tổng của cả video); tỉ lệ &lt;strong&gt;framerate&lt;/strong&gt; là 23.98 fps;&lt;/li&gt;
&lt;li&gt;Kênh 2 (audio) có chuẩn &lt;strong&gt;aac&lt;/strong&gt;; sample rate là 44100 Hz; âm thanh dạng stereo; bitrate là 127 kb/s.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Đây là những thông tin của video mà bạn cần phải biết. Ngoài ra, nếu muốn biết thêm nhiều thông tin hơn nữa thì bạn có thể sử dụng công cụ &lt;strong&gt;ffprobe.exe&lt;/strong&gt; như sau.&lt;/p&gt;
&lt;h2 id=&quot;lấy-thông-tin-video-sử-dụng-ffprobeexe&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BA%A5y-th%C3%B4ng-tin-video-s%E1%BB%AD-d%E1%BB%A5ng-ffprobeexe&quot; aria-label=&quot;lấy thông tin video sử dụng ffprobeexe permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lấy thông tin video sử dụng ffprobe.exe&lt;/h2&gt;
&lt;h3 id=&quot;câu-lệnh-cơ-bản&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A2u-l%E1%BB%87nh-c%C6%A1-b%E1%BA%A3n&quot; aria-label=&quot;câu lệnh cơ bản permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Câu lệnh cơ bản&lt;/h3&gt;
&lt;p&gt;Câu lệnh cơ bản sử dụng &lt;strong&gt;ffprobe.exe&lt;/strong&gt; để lấy thông tin video là:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffprobe -v error -show_format -show_streams input.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kết quả hiển thị khá dài:&lt;/p&gt;
&lt;pre lang=&quot;no-highlight&quot;&gt;&lt;code&gt;[STREAM]
    index=0
    codec_name=h264
    codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
    profile=Main
    codec_type=video
    codec_time_base=38946407/1867560000
    codec_tag_string=avc1
    codec_tag=0x31637661
    width=854
    height=480
    coded_width=854
    coded_height=480
    has_b_frames=2
    sample_aspect_ratio=0:1
    display_aspect_ratio=0:1
    pix_fmt=yuv420p
    level=30
    color_range=tv
    color_space=bt709
    color_transfer=bt709
    color_primaries=bt709
    chroma_location=left
    field_order=unknown
    timecode=N/A
    refs=1
    is_avc=true
    nal_length_size=4
    id=N/A
    r_frame_rate=24000/1001
    avg_frame_rate=933780000/38946407
    time_base=1/90000
    start_pts=0
    start_time=0.000000
    duration_ts=116839221
    duration=1298.213567
    bit_rate=990486
    max_bit_rate=N/A
    bits_per_raw_sample=8
    nb_frames=31126
    nb_read_frames=N/A
    nb_read_packets=N/A
    DISPOSITION:default=1
    DISPOSITION:dub=0
    DISPOSITION:original=0
    DISPOSITION:comment=0
    DISPOSITION:lyrics=0
    DISPOSITION:karaoke=0
    DISPOSITION:forced=0
    DISPOSITION:hearing_impaired=0
    DISPOSITION:visual_impaired=0
    DISPOSITION:clean_effects=0
    DISPOSITION:attached_pic=0
    DISPOSITION:timed_thumbnails=0
    TAG:creation_time=2013-03-21T04:50:31.000000Z
    TAG:language=und
    TAG:encoder=JVT/AVC Coding
    [/STREAM]
    [STREAM]
    index=1
    codec_name=aac
    codec_long_name=AAC (Advanced Audio Coding)
    profile=LC
    codec_type=audio
    codec_time_base=1/44100
    codec_tag_string=mp4a
    codec_tag=0x6134706d
    sample_fmt=fltp
    sample_rate=44100
    channels=2
    channel_layout=stereo
    bits_per_sample=0
    id=N/A
    r_frame_rate=0/0
    avg_frame_rate=0/0
    time_base=1/44100
    start_pts=0
    start_time=0.000000
    duration_ts=57250816
    duration=1298.204444
    bit_rate=127986
    max_bit_rate=185256
    bits_per_raw_sample=N/A
    nb_frames=55909
    nb_read_frames=N/A
    nb_read_packets=N/A
    DISPOSITION:default=1
    DISPOSITION:dub=0
    DISPOSITION:original=0
    DISPOSITION:comment=0
    DISPOSITION:lyrics=0
    DISPOSITION:karaoke=0
    DISPOSITION:forced=0
    DISPOSITION:hearing_impaired=0
    DISPOSITION:visual_impaired=0
    DISPOSITION:clean_effects=0
    DISPOSITION:attached_pic=0
    DISPOSITION:timed_thumbnails=0
    TAG:creation_time=2013-03-21T04:50:31.000000Z
    TAG:language=eng
    [/STREAM]
    [FORMAT]
    filename=input.mp4
    nb_streams=2
    nb_programs=0
    format_name=mov,mp4,m4a,3gp,3g2,mj2
    format_long_name=QuickTime / MOV
    start_time=0.000000
    duration=1298.213567
    size=182308296
    bit_rate=1123441
    probe_score=100
    TAG:major_brand=mp42
    TAG:minor_version=0
    TAG:compatible_brands=mp42isomavc1
    TAG:creation_time=2013-03-21T04:50:31.000000Z
    TAG:encoder=HandBrake rev4860 2012121899
    [/FORMAT]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Có khá nhiều thông tin ở đây mà mình nghĩ là rất khó để thể giải thích hết ở đây được (bạn thông cảm nhé).&lt;/p&gt;
&lt;p&gt;Dĩ nhiên, với yêu cầu sử dụng FFmpeg cơ bản thì mình nghĩ rằng bạn không cần thiết phải biết hết những thông tin này.&lt;/p&gt;
&lt;p&gt;Cái nào cần thì mình tra thôi. Nhưng, biết đâu đấy, sau này cần phải dùng thì sao nhỉ?&lt;/p&gt;
&lt;p&gt;À mà &lt;strong&gt;ffprobe.exe&lt;/strong&gt; còn hỗ trợ việc lấy ra thông tin video dạng JSON hoặc XML. Khi đó, bạn có thể sử dụng kết quả ở nhiều nơi khác nữa (khi lập trình hoặc viết script chạy tự động,...).&lt;/p&gt;
&lt;h3 id=&quot;lấy-thông-tin-video-dạng-json&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BA%A5y-th%C3%B4ng-tin-video-d%E1%BA%A1ng-json&quot; aria-label=&quot;lấy thông tin video dạng json permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lấy thông tin video dạng JSON&lt;/h3&gt;
&lt;p&gt;Để thực hiện việc này bạn chỉ cần thêm cờ &lt;strong&gt;-print_format&lt;/strong&gt; với giá trị &lt;strong&gt;json&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Khi đó, câu lệnh trên trở thành:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffprobe -v error -print_format json -show_format -show_streams input.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kết quả dạng JSON:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;streams&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;index&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;h264&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_long_name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;profile&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Main&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_type&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;video&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_time_base&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;38946407/1867560000&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_tag_string&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;avc1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_tag&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0x31637661&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;width&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;854&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;height&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;480&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;coded_width&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;854&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;coded_height&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;480&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;has_b_frames&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;sample_aspect_ratio&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0:1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;display_aspect_ratio&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0:1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;pix_fmt&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;yuv420p&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;level&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;color_range&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;tv&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;color_space&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;bt709&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;color_transfer&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;bt709&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;color_primaries&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;bt709&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;chroma_location&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;left&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;refs&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;is_avc&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;nal_length_size&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;4&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;r_frame_rate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;24000/1001&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;avg_frame_rate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;933780000/38946407&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;time_base&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1/90000&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;start_pts&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;start_time&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0.000000&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;duration_ts&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;116839221&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;duration&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1298.213567&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;bit_rate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;990486&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;bits_per_raw_sample&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;8&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;nb_frames&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;31126&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;disposition&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;default&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;dub&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;original&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;comment&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;lyrics&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;karaoke&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;forced&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;hearing_impaired&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;visual_impaired&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;clean_effects&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;attached_pic&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;timed_thumbnails&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;tags&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;creation_time&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2013-03-21T04:50:31.000000Z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;language&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;und&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;encoder&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;JVT/AVC Coding&quot;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;index&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;aac&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_long_name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;AAC (Advanced Audio Coding)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;profile&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;LC&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_type&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;audio&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_time_base&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1/44100&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_tag_string&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;mp4a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;codec_tag&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0x6134706d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;sample_fmt&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;fltp&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;sample_rate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;44100&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;channels&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;channel_layout&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;stereo&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;bits_per_sample&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;r_frame_rate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0/0&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;avg_frame_rate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0/0&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;time_base&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1/44100&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;start_pts&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;start_time&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0.000000&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;duration_ts&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;57250816&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;duration&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1298.204444&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;bit_rate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;127986&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;max_bit_rate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;185256&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;nb_frames&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;55909&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;disposition&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;default&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;dub&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;original&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;comment&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;lyrics&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;karaoke&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;forced&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;hearing_impaired&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;visual_impaired&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;clean_effects&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;attached_pic&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;timed_thumbnails&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;tags&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;creation_time&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2013-03-21T04:50:31.000000Z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;language&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;eng&quot;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;format&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;filename&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;input.mp4&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;nb_streams&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;nb_programs&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;format_name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;mov,mp4,m4a,3gp,3g2,mj2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;format_long_name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;QuickTime / MOV&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;start_time&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0.000000&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;duration&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1298.213567&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;182308296&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;bit_rate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1123441&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;probe_score&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;tags&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;major_brand&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;mp42&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;minor_version&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;0&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;compatible_brands&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;mp42isomavc1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;creation_time&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2013-03-21T04:50:31.000000Z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;encoder&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;HandBrake rev4860 2012121899&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;lấy-thông-tin-video-dạng-xml&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BA%A5y-th%C3%B4ng-tin-video-d%E1%BA%A1ng-xml&quot; aria-label=&quot;lấy thông tin video dạng xml permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lấy thông tin video dạng XML&lt;/h3&gt;
&lt;p&gt;Tương tự, để lấy thông tin video dạng XML, bạn chỉ cần thêm cờ &lt;strong&gt;-print_format&lt;/strong&gt; với giá trị là &lt;strong&gt;xml&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Khi đó, câu lệnh trên trở thành:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffprobe -v error -print_format xml -show_format -show_streams input.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kết quả dạng XML:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;xml&quot;&gt;&lt;pre class=&quot;language-xml&quot;&gt;&lt;code class=&quot;language-xml&quot;&gt;&lt;span class=&quot;token prolog&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;ffprobe&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;streams&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;stream&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;h264&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_long_name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;profile&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;Main&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;video&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_time_base&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;38946407/1867560000&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_tag_string&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;avc1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_tag&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0x31637661&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;854&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;480&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;coded_width&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;854&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;coded_height&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;480&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;has_b_frames&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;2&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;sample_aspect_ratio&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0:1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;display_aspect_ratio&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0:1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;pix_fmt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;yuv420p&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;30&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;color_range&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;tv&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;color_space&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;bt709&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;color_transfer&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;bt709&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;color_primaries&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;bt709&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;chroma_location&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;refs&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;is_avc&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;nal_length_size&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;4&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;r_frame_rate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;24000/1001&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;avg_frame_rate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;933780000/38946407&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;time_base&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1/90000&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;start_pts&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;start_time&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0.000000&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;duration_ts&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;116839221&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;duration&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1298.213567&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;bit_rate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;990486&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;bits_per_raw_sample&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;8&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;nb_frames&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;31126&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;disposition&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;dub&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;original&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;comment&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;lyrics&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;karaoke&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;forced&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;hearing_impaired&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;visual_impaired&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;clean_effects&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;attached_pic&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;timed_thumbnails&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;tag&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;creation_time&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;2013-03-21T04:50:31.000000Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;tag&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;language&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;und&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;tag&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;encoder&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;JVT/AVC Coding&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;stream&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;stream&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;aac&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_long_name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;AAC (Advanced Audio Coding)&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;profile&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;LC&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;audio&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_time_base&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1/44100&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_tag_string&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;mp4a&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;codec_tag&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0x6134706d&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;sample_fmt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;fltp&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;sample_rate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;44100&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;channels&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;2&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;channel_layout&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;stereo&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;bits_per_sample&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;r_frame_rate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0/0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;avg_frame_rate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0/0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;time_base&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1/44100&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;start_pts&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;start_time&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0.000000&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;duration_ts&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;57250816&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;duration&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1298.204444&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;bit_rate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;127986&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;max_bit_rate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;185256&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;nb_frames&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;55909&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;disposition&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;dub&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;original&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;comment&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;lyrics&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;karaoke&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;forced&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;hearing_impaired&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;visual_impaired&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;clean_effects&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;attached_pic&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;timed_thumbnails&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;tag&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;creation_time&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;2013-03-21T04:50:31.000000Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;tag&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;language&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;eng&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;stream&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;streams&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;format&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;input.mp4&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;nb_streams&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;2&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;nb_programs&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;format_name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;mov,mp4,m4a,3gp,3g2,mj2&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;format_long_name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;QuickTime / MOV&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;start_time&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0.000000&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;duration&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1298.213567&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;182308296&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;bit_rate&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1123441&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;probe_score&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;100&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;tag&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;major_brand&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;mp42&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;tag&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;minor_version&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;0&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;tag&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;compatible_brands&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;mp42isomavc1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;tag&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;creation_time&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;2013-03-21T04:50:31.000000Z&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;tag&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;encoder&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;HandBrake rev4860 2012121899&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;ffprobe&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là 2 cách để lấy thông tin video bằng FFmpeg. Nếu có gì sai sót, bạn vui lòng góp ý cho mình biết trong phần bình luận phía dưới nhé!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tham khảo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ffmpeg.org/ffprobe.html&quot;&gt;FFprobe Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://trac.ffmpeg.org/wiki/FFprobeTips&quot;&gt;FFprobe tips&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[FFmpeg tutorial] Những câu lệnh FFmpeg xử lý video]]></title><description><![CDATA[FFmpeg là một công cụ miễn phí mà rất mạnh trong việc xử lý hình ảnh, video, audio,... Nếu bạn chưa biết cách cài đặt FFmpeg, vui lòng tham khảo thêm tại bài viết hướng dẫn tìm…]]></description><link>https://phamvanlam.com/ffmpeg-tutorial-nhung-cau-lenh-ffmpeg-xu-ly-video/</link><guid isPermaLink="false">https://phamvanlam.com/ffmpeg-tutorial-nhung-cau-lenh-ffmpeg-xu-ly-video/</guid><category><![CDATA[Xử lý video]]></category><pubDate>Sat, 13 Oct 2018 16:35:40 GMT</pubDate><content:encoded>&lt;p&gt;FFmpeg là một công cụ miễn phí mà rất mạnh trong việc xử lý hình ảnh, video, audio,... Nếu bạn chưa biết cách cài đặt FFmpeg, vui lòng tham khảo thêm tại bài viết &lt;a href=&quot;https://completejavascript.com/huong-dan-tim-hieu-ffmpeg-co-ban/&quot;&gt;hướng dẫn tìm hiểu FFmpeg cơ bản&lt;/a&gt;. Còn trong bài viết này, mình sẽ giúp bạn tổng hợp những câu lệnh FFmpeg xử lý video đơn giản và hiệu quả nhất. Mời bạn theo dõi bài viết!&lt;/p&gt;
&lt;h2 id=&quot;thay-đổi-kích-thước-video&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#thay-%C4%91%E1%BB%95i-k%C3%ADch-th%C6%B0%E1%BB%9Bc-video&quot; aria-label=&quot;thay đổi kích thước video permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Thay đổi kích thước video&lt;/h2&gt;
&lt;h3 id=&quot;thay-đổi-kích-thước-video-với-kích-thước-xác-định&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#thay-%C4%91%E1%BB%95i-k%C3%ADch-th%C6%B0%E1%BB%9Bc-video-v%E1%BB%9Bi-k%C3%ADch-th%C6%B0%E1%BB%9Bc-x%C3%A1c-%C4%91%E1%BB%8Bnh&quot; aria-label=&quot;thay đổi kích thước video với kích thước xác định permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Thay đổi kích thước video với kích thước xác định&lt;/h3&gt;
&lt;p&gt;Nếu bạn đơn giản muốn thay đổi kích thước video thành một kích thước xác định trước, thì bạn có thể sử dụng câu lệnh sau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;320&lt;/span&gt;:240 output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;ffmpeg&lt;/em&gt;: tên chương trình&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-i&lt;/em&gt;: cờ xác định đầu vào (input)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;input.mp4&lt;/em&gt;: tên video đầu vào&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-vf&lt;/em&gt;: cờ xác định biểu thức cho việc scale video&lt;/li&gt;
&lt;li&gt;&lt;em&gt;scale=320:240&lt;/em&gt;: biểu thức để scale video&lt;/li&gt;
&lt;li&gt;&lt;em&gt;output.mp4&lt;/em&gt;: tên video đầu ra&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Câu lệnh này scale video thành kích thước 320x240 (width=320 và height=240). Lúc này toàn bộ video sẽ bị co hoặc dãn đến kích thước 320x240.&lt;/p&gt;
&lt;h3 id=&quot;thay-đổi-kích-thước-video-giữ-nguyên-tỉ-lệ&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#thay-%C4%91%E1%BB%95i-k%C3%ADch-th%C6%B0%E1%BB%9Bc-video-gi%E1%BB%AF-nguy%C3%AAn-t%E1%BB%89-l%E1%BB%87&quot; aria-label=&quot;thay đổi kích thước video giữ nguyên tỉ lệ permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Thay đổi kích thước video giữ nguyên tỉ lệ&lt;/h3&gt;
&lt;p&gt;Nếu chỉ sử dụng câu lệnh như trên thì rất có thể tỉ lệ width/height của video sẽ bị thay đổi, dẫn đến hình ảnh bị méo mó. Do đó, để giữ nguyên tỉ lệ video bạn có thể thay đổi câu lệnh trên một chút, bằng cách chỉ xác định width hoặc height, chiều còn lại bạn để -1, như sau đây.&lt;/p&gt;
&lt;p&gt;Giữ nguyên chiều rộng:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;320&lt;/span&gt;:-1 output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Giữ nguyên chiều cao:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;-1:240 output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Chú ý:&lt;/strong&gt; Một vài định dạng video yêu cầu chiều dài, chiều rộng phải chia hết cho số &lt;strong&gt;n&lt;/strong&gt;(thường n = 2). Khi đó, bạn chỉ cần thay &lt;em&gt;-1&lt;/em&gt; thành &lt;em&gt;-n&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Giữ nguyên chiều rộng:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;320&lt;/span&gt;:-n output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Giữ nguyên chiều cao:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;-n:240 output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;thay-đổi-kích-thước-video-sử-dụng-biến-số&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#thay-%C4%91%E1%BB%95i-k%C3%ADch-th%C6%B0%E1%BB%9Bc-video-s%E1%BB%AD-d%E1%BB%A5ng-bi%E1%BA%BFn-s%E1%BB%91&quot; aria-label=&quot;thay đổi kích thước video sử dụng biến số permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Thay đổi kích thước video sử dụng biến số&lt;/h3&gt;
&lt;p&gt;Nhiều khi bạn sẽ muốn thay đổi kích thước video bằng cách nhân/chia chiều rộng/cao cho một số bất kỳ. Lúc này bạn có thể sử dụng biến số iw (chiều rộng), ih (chiều cao). Ví dụ, để tăng kích thước chiều rộng và chiều cao của video lên 2 lần bạn có thể sử dụng câu lệnh sau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;iw*2:ih*2 output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ngược lại, nếu bạn muốn giảm kích thước video đi 2 lần, bạn có thể nhân 2 kích thước với 0.5:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;iw*0.5:ih*0.5 output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;hoặc chia 2 kích thước cho 2:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;iw/2:ih/2 output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;tránh-tăng-kích-thước-của-video-có-kích-thước-quá-nhỏ&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#tr%C3%A1nh-t%C4%83ng-k%C3%ADch-th%C6%B0%E1%BB%9Bc-c%E1%BB%A7a-video-c%C3%B3-k%C3%ADch-th%C6%B0%E1%BB%9Bc-qu%C3%A1-nh%E1%BB%8F&quot; aria-label=&quot;tránh tăng kích thước của video có kích thước quá nhỏ permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tránh tăng kích thước của video có kích thước quá nhỏ&lt;/h3&gt;
&lt;p&gt;Giả sử, bạn muốn thu nhỏ kích thước video xuống thành 320x240. Nhưng thực tế, kích thước của video đã nhỏ hơn 320x240 rồi. Khi đó, bạn muốn giữ nguyên kích thước của video. Hay nói cách khác, bạn sẽ chỉ thu nhỏ kích thước của video xuống 320x240 nếu kích thước thực tế lớn hơn 320x240.&lt;/p&gt;
&lt;p&gt;Lúc này, bạn có thể sử dụng biểu thức &lt;em&gt;min&lt;/em&gt;:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;min(320,iw)&apos;&lt;/span&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;min(240,ih)&apos;&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;làm-cho-video-phù-hợp-với-khung-hình-có-sẵn&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%C3%A0m-cho-video-ph%C3%B9-h%E1%BB%A3p-v%E1%BB%9Bi-khung-h%C3%ACnh-c%C3%B3-s%E1%BA%B5n&quot; aria-label=&quot;làm cho video phù hợp với khung hình có sẵn permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Làm cho video phù hợp với khung hình có sẵn&lt;/h3&gt;
&lt;p&gt;Trong trường hợp bạn muốn video của mình có kích thước phù hợp với một khung hình chữ nhật cho trước, mà vẫn muốn giữ nguyên tỉ lệ width/height. Khi đó bạn có thể sử dụng option &lt;em&gt;force_original_aspect_ratio&lt;/em&gt; với 2 giá trị là:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;decrease&lt;/em&gt;: video đầu ra sẽ tự động giảm kích thước nếu cần thiết&lt;/li&gt;
&lt;li&gt;&lt;em&gt;increase&lt;/em&gt;: video đầu ra sẽ tự động tăng kích thước nếu cần thiết&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ví dụ: đoạn code sau sẽ giảm kích thước của video để phù hợp với khung hình 320x240:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;w&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;320&lt;/span&gt;:h&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;240&lt;/span&gt;:force_original_aspect_ratio&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;decrease output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vì bạn giữ nguyên tỉ lệ video, nên rất có thể sẽ xuất hiện khoảng trống của video so với khung hình. Lúc này, bạn có thể sử dụng filter &lt;em&gt;pad&lt;/em&gt; để điền đầy màu đen vào khoảng trống kia:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token string&quot;&gt;&quot;scale=320:240:force_original_aspect_ratio=decrease,pad=320:240:(ow-iw)/2:(oh-ih)/2&quot;&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;xác-định-thuật-toán-scale&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#x%C3%A1c-%C4%91%E1%BB%8Bnh-thu%E1%BA%ADt-to%C3%A1n-scale&quot; aria-label=&quot;xác định thuật toán scale permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Xác định thuật toán scale&lt;/h3&gt;
&lt;p&gt;FFmpeg hỗ trợ nhiều loại thuật toán để scale video, bao gồm: &lt;em&gt;fastbilinear, bilinear, bicubic, experimental, neighbor, area, bicublin, gauss, sinc, lanczos, spline, accuraternd, fullchromaint, fullchromainp, bitexact&lt;/em&gt;. Thuật toán mặc định là: &lt;em&gt;bicubic&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Để có thể lựa chọn thuật toán thay đổi kích thước video, bạn cần sử dụng option &lt;em&gt;-sws_flags&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Ví dụ, bạn muốn sử dụng thuật toán &lt;em&gt;bilinear&lt;/em&gt; thay vì thuật toán mặc định &lt;em&gt;bicubic&lt;/em&gt; thì có thể sử dụng câu lệnh sau:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;320&lt;/span&gt;:240 -sws_flags bilinear output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Để sử dụng nhiều giá trị cho cờ trên, bạn có thể sử dụng dấu +, ví dụ:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -vf &lt;span class=&quot;token assign-left variable&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;320&lt;/span&gt;:240 -sws_flags lanczos+full_chroma_inp output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;thay-đổi-định-dạng-video&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#thay-%C4%91%E1%BB%95i-%C4%91%E1%BB%8Bnh-d%E1%BA%A1ng-video&quot; aria-label=&quot;thay đổi định dạng video permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Thay đổi định dạng video&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.xxx output.yyy&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File đầu vào là &lt;em&gt;input.xxx&lt;/em&gt; với xxx là các định dạng video của file đầu vào: mp4, avi, mpg, flv,…&lt;/li&gt;
&lt;li&gt;File đầu ra là &lt;em&gt;output.yyy&lt;/em&gt; với yyy cũng là các định dạng video của file đầu vào: mp4, avi, mpg, flv,…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ví dụ, mình muốn chuyển từ định dạng mp4 sang flv, thì câu lệnh sẽ là:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 output.flv&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;thay-đổi-framerate-của-video&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#thay-%C4%91%E1%BB%95i-framerate-c%E1%BB%A7a-video&quot; aria-label=&quot;thay đổi framerate của video permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Thay đổi framerate của video&lt;/h2&gt;
&lt;p&gt;Video thường có rất nhiều giá trị framerate khác nhau như: 24, 25, 29.97, 30, 60,... Khi bạn muốn ghép nhiều video với nhau thì một trong những việc bạn cần phải làm là đưa chúng về cùng framerate.&lt;/p&gt;
&lt;p&gt;Ví dụ, câu lệnh sau sẽ thay đổi framerate của video thành 25 (frame/second):&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.mp4 -r &lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt; output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;encode-video-thành-chuẩn-h264&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#encode-video-th%C3%A0nh-chu%E1%BA%A9n-h264&quot; aria-label=&quot;encode video thành chuẩn h264 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Encode video thành chuẩn H264&lt;/h2&gt;
&lt;p&gt;Chuẩn H264 (MPEG-4 Part 10, MPEG-4 AVC) là một chuẩn mã hoá video rất phổ biến. Những video theo chuẩn H264 thường có đuôi là &lt;em&gt;.mp4&lt;/em&gt;. Vì vậy, những video theo chuẩn này có thể play trên rất nhiều thiết bị khác nhau.&lt;/p&gt;
&lt;p&gt;Để encode video thành chuẩn H264, bạn có thể sử dụng 2 phương pháp: &lt;a href=&quot;https://trac.ffmpeg.org/wiki/Encode/H.264#crf&quot;&gt;Constant Rate Factor (CRF)&lt;/a&gt; hoặc &lt;a href=&quot;https://trac.ffmpeg.org/wiki/Encode/H.264#twopass&quot;&gt;Two-Pass ABR&lt;/a&gt;. Tuy nhiên, mình thấy phương pháp CRF có vẻ đơn giản hơn.&lt;/p&gt;
&lt;p&gt;Ví dụ câu lệnh sau sẽ encode video về chuẩn H264 sử dụng CRF:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input.avi -c:v libx264 -preset slow -crf &lt;span class=&quot;token number&quot;&gt;22&lt;/span&gt; -c:a copy output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ngoài những thứ cơ bản mà mình đã nói ở các phần trên thì những thông tin bạn cần phải quan tâm đó là:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;-c:v&lt;/em&gt;: cờ dùng để xác định thư viện dùng để encode h264&lt;/li&gt;
&lt;li&gt;&lt;em&gt;libx264&lt;/em&gt;: tên thư viện dùng để encode h264. Ngoài &lt;em&gt;libx264&lt;/em&gt;, bạn có thể sử dụng lib &lt;em&gt;h264&lt;/em&gt;. Nói vậy thôi, nhưng thực tế, &lt;em&gt;h264&lt;/em&gt; chỉ free cho việc decode h264. Trong khi đó, &lt;em&gt;libx264&lt;/em&gt; là free, open source cho cả decode và encode. Vì vậy, bạn nên sử dụng &lt;em&gt;libx264&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-preset&lt;/em&gt;: cờ dùng để xác định preset được sử dụng. Giá trị này sẽ quyết định tốc độ mã hoá.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;slow&lt;/em&gt;: tên preset sử dụng. Ngoài &lt;em&gt;slow&lt;/em&gt;, bạn có thể dùng: &lt;em&gt;ultrafast, superfast, veryfast, faster, fast, medium (default preset), slow, slower, veryslow&lt;/em&gt;. Trong dãy các giá trị trên, từ trái sang phải sẽ cho chất lượng video tăng dần, nhưng tốc độ mã hoá sẽ giảm dần. Hay nói cách khác, tốc độ mã hoá video càng chậm thì chất lượng video càng tốt.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-crf&lt;/em&gt;: cờ xác định hệ số CRF.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;22&lt;/em&gt;: hệ số CRF. Giá trị CRF có thể là từ 0 đến 51, với giá trị mặc định là 23. Giá trị CRF càng lớn thì chất lượng video càng giảm và ngược lại.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-c:a&lt;/em&gt;: cờ dùng để xác định thư viện encode audio.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;copy&lt;/em&gt;: trong bài viết này, mình chỉ quan tâm tới video, nên audio sẽ không thay đổi. Hay nó sẽ được copy từ input sang output.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;thay-đổi-bitrate-của-video&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#thay-%C4%91%E1%BB%95i-bitrate-c%E1%BB%A7a-video&quot; aria-label=&quot;thay đổi bitrate của video permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Thay đổi bitrate của video&lt;/h2&gt;
&lt;p&gt;Giả sử bạn đang muốn Live Streaming một video. Video này có bitrate cỡ 5Mbps. Tuy nhiên, tốc độ mạng cho phép chỉ trong khoảng 1Mbps. Lúc này, bạn cần phải giảm bitrate của video xuống nhỏ hơn 1Mbps.&lt;/p&gt;
&lt;p&gt;Ví dụ câu lệnh sau sẽ giới hạn bitrate của video xuống nhỏ hơn hoặc bằng 1Mbps:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ffmpeg -i input -c:v libx264 -crf &lt;span class=&quot;token number&quot;&gt;23&lt;/span&gt; -maxrate 1M -bufsize 2M output.mp4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Trong đó, những giá trị quan trọng là:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;-maxrate 1M&lt;/em&gt;: xác định bitrate tối đa là 1Mbps&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-bufsize 2M&lt;/em&gt;: xác định buffer cho việc encode video là 2MB.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-crf 23&lt;/em&gt;: xác định hệ số CRF là 23&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là một số câu lệnh FFmpeg xử lý video rất phổ biến. Nếu có câu lệnh nào bạn chưa hiểu hoặc bạn cần phải xử lý video về một khía cạnh nào đó mà mình chưa chia sẻ thì bạn có thể để lại câu hỏi trong phần bình luận, mình sẽ cố gắng sưu tầm và chia sẻ lại với bạn.&lt;/p&gt;
&lt;h3 id=&quot;tham-khảo&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#tham-kh%E1%BA%A3o&quot; aria-label=&quot;tham khảo permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tham khảo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://trac.ffmpeg.org/wiki/Scaling&quot;&gt;Scaling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://trac.ffmpeg.org/wiki/Encode/H.264&quot;&gt;Encode/H264&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/11004137/re-sampling-h264-video-to-reduce-frame-rate-while-maintaining-high-image-quality&quot;&gt;Re-sampling H264 video to reduce frame rate while maintaining high image quality&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://superuser.com/questions/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player/1136305#1136305&quot;&gt;Resizing videos with ffmpeg/avconv to fit into static sized player&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[Lightworks 12.6 tutorial] Import tệp tin đa phương tiện vào Lightworks]]></title><description><![CDATA[Tạo mới một project trong Lightworks xong rồi thì sao? Video này sẽ hướng dẫn bạn cách import tệp tin đa phương tiện vào Lightworks, như tệp tin hình ảnh, âm thanh, video,... Sau…]]></description><link>https://phamvanlam.com/lightworks-12-6-tutorial-import-tep-tin-da-phuong-tien-vao-lightworks/</link><guid isPermaLink="false">https://phamvanlam.com/lightworks-12-6-tutorial-import-tep-tin-da-phuong-tien-vao-lightworks/</guid><pubDate>Sat, 13 Oct 2018 15:05:27 GMT</pubDate><content:encoded>&lt;p&gt;Tạo mới một project trong Lightworks xong rồi thì sao? Video này sẽ hướng dẫn bạn cách import tệp tin đa phương tiện vào Lightworks, như tệp tin hình ảnh, âm thanh, video,...&lt;/p&gt;
&lt;p&gt;Sau khi xem xong video, bạn sẽ biết được hai cách để import các tệp tin đa phương tiện vào Lightworks...&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/wVN9_8qPxTw?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Trong video tiếp theo, mình dự định sẽ chia sẻ với bạn cách để sắp xếp nội dung trong project Lightworks.&lt;/p&gt;
&lt;p&gt;Hy vọng bạn tiếp tục theo dõi và ủng hộ để mình có thêm nhiều động lực làm các video tiếp theo.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[Lightworks 12.6 tutorial] Tạo mới một project trong Lightworks]]></title><description><![CDATA[Bạn đã tải và cài đặt phần mềm chỉnh sửa video Lightworks chưa? Nếu xong rồi thì mình sẽ bắt đầu tạo mới một project trong Lightworks. Sau đó là cài đặt về chất lượng video, tỉ lệ…]]></description><link>https://phamvanlam.com/lightworks-12-6-tutorial-tao-moi-mot-project-trong-lightworks/</link><guid isPermaLink="false">https://phamvanlam.com/lightworks-12-6-tutorial-tao-moi-mot-project-trong-lightworks/</guid><pubDate>Sat, 13 Oct 2018 14:59:53 GMT</pubDate><content:encoded>&lt;p&gt;Bạn đã &lt;a href=&quot;/lightworks-12-6-tutorial-tai-va-cai-dat-phan-mem-chinh-sua-video-lightworks-cho-windows/&quot;&gt;tải và cài đặt&lt;/a&gt; phần mềm chỉnh sửa video Lightworks chưa? Nếu xong rồi thì mình sẽ bắt đầu tạo mới một project trong Lightworks.&lt;/p&gt;
&lt;p&gt;Sau đó là cài đặt về chất lượng video, tỉ lệ frame - frame rate,...&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/H4fJr-wFyR8?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Trong video tiếp theo, mình sẽ chia sẻ với bạn cách để import các tệp tin đa phương tiện vào một project Lightworks.&lt;/p&gt;
&lt;p&gt;Hy vọng bạn tiếp tục theo dõi và ủng hộ để mình có thêm nhiều động lực làm các video tiếp theo.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[Lightworks 12.6 tutorial] Tải và cài đặt phần mềm chỉnh sửa video Lightworks cho Windows]]></title><description><![CDATA[Tạm thời dừng lại với phần mềm chỉnh sửa ảnh mã nguồn mở GIMP. Hôm nay, mình sẽ giới thiệu với bạn cách tải và cài đặt phần mềm chỉnh sửa video Lightworks cho Windows - cũng như…]]></description><link>https://phamvanlam.com/lightworks-12-6-tutorial-tai-va-cai-dat-phan-mem-chinh-sua-video-lightworks-cho-windows/</link><guid isPermaLink="false">https://phamvanlam.com/lightworks-12-6-tutorial-tai-va-cai-dat-phan-mem-chinh-sua-video-lightworks-cho-windows/</guid><category><![CDATA[Tải và cài đặt]]></category><pubDate>Sat, 13 Oct 2018 14:53:07 GMT</pubDate><content:encoded>&lt;p&gt;Tạm thời dừng lại với phần mềm chỉnh sửa ảnh mã nguồn mở &lt;a href=&quot;/category/gimp-28-tutorial/&quot;&gt;GIMP&lt;/a&gt;. Hôm nay, mình sẽ giới thiệu với bạn cách tải và cài đặt phần mềm chỉnh sửa video Lightworks cho Windows - cũng như tìm hiểu các tính năng của nó.&lt;/p&gt;
&lt;p&gt;Tuy đây không phải là phần mềm mã nguồn mở, nhưng nó miễn phí và khá mạnh. Đó là lý do mình dành thời gian để tìm hiểu phần mềm này.&lt;/p&gt;
&lt;h2 id=&quot;giới-thiệu-về-lightworks&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#gi%E1%BB%9Bi-thi%E1%BB%87u-v%E1%BB%81-lightworks&quot; aria-label=&quot;giới thiệu về lightworks permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Giới thiệu về Lightworks&lt;/h2&gt;
&lt;p&gt;Lightworks là một phần mềm miễn phí giúp chỉnh sửa clip, video một cách chuyên nghiệp. Nó giúp bạn cắt, ghép và thêm hiệu ứng vào video một cách dễ dàng…&lt;/p&gt;
&lt;p&gt;Lightworks hỗ trợ xuất bản video ở hầu hết các định dạng từ SD, HD,... đến độ phân giải 4K.&lt;/p&gt;
&lt;p&gt;Trong 25 năm phát triển của mình, Lightworks đã được sử dụng để chỉnh sửa cho các bộ phim nổi tiếng của Hollywood như: The Wolf of Wall Street, LA Confidential, Pulp Fiction, Heat, Road to Perdition, Hugo, The King’s Speech,…&lt;/p&gt;
&lt;p&gt;Điều này chứng tỏ rằng, Lightworks là một phần mềm rất mạnh mẽ và đáng để sử dụng.&lt;/p&gt;
&lt;h2 id=&quot;lightworks-ngoài-phiên-bản-free-thì-còn-có-bản-pro&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#lightworks-ngo%C3%A0i-phi%C3%AAn-b%E1%BA%A3n-free-th%C3%AC-c%C3%B2n-c%C3%B3-b%E1%BA%A3n-pro&quot; aria-label=&quot;lightworks ngoài phiên bản free thì còn có bản pro permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lightworks ngoài phiên bản Free thì còn có bản Pro&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Phiên bản miễn phí: Bạn có thể nhận được phiên bản Free của Lightworks một cách đơn giản thông qua việc đăng ký trên trang chủ. Với phiên bản Free, license có giá trị sử dụng trong 7 ngày. Sau 7 ngày, Lightworks sẽ hỏi lại bạn. Lúc này, bạn có thể tiếp tục sử dụng license Free (khi đó license lại được làm mới) hoặc nâng cấp lên phiên bản Pro. Phiên bản Free có hạn chế ở chỗ là nó chỉ cho phép xuất bản Video Youtube tối đa là HD (720p) và video Vimeo tối đa là 1080p (Full HD). Tuy nhiên, theo mình thì HD cũng khá là ổn rồi.&lt;/li&gt;
&lt;li&gt;Phiên bản Pro: Bạn có thể chọn license hàng tháng, năm hoặc mãi mãi. Phiên bản Pro này hỗ trợ nhiều định dạng hơn và chất lượng video xuất bản cho phép tới 4K hoặc DVD, Blu-ray,… Rõ ràng, nếu bạn là một nhà làm phim chuyên nghiệp thì bạn có thể chọn sử dụng phiên bản Pro.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tính-năng-của-lightworks&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#t%C3%ADnh-n%C4%83ng-c%E1%BB%A7a-lightworks&quot; aria-label=&quot;tính năng của lightworks permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tính năng của Lightworks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Chạy trên cả 3 nền tảng hệ điều hành: Windows, Linux và Mac OS X.&lt;/li&gt;
&lt;li&gt;Hỗ trợ nhiều định dạng video khác nhau: ProRes, Avid DNxHD, AVC-Intra, DVCPRO HD, RED R3D, DPX, AVCHD (with AC3 audio), H.264, XDCAM EX / HD 422.&lt;/li&gt;
&lt;li&gt;Có thể xuất bản định dạng cho web: H.264, MPEG-4/AVC. Bạn cũng có thể chọn tải trực tiếp video lên tài khoản Youtube hoặc Vimeo.&lt;/li&gt;
&lt;li&gt;Tốc độ chạy nhanh&lt;/li&gt;
&lt;li&gt;Hỗ trợ nhiều hiệu ứng&lt;/li&gt;
&lt;li&gt;Có thể &lt;a href=&quot;/gimp-2-8-tutorial-tuy-chinh-giao-dien-gimp/&quot;&gt;tùy chỉnh giao diện&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tải-và-cài-đặt-phần-mềm-lightworks-cho-windows&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#t%E1%BA%A3i-v%C3%A0-c%C3%A0i-%C4%91%E1%BA%B7t-ph%E1%BA%A7n-m%E1%BB%81m-lightworks-cho-windows&quot; aria-label=&quot;tải và cài đặt phần mềm lightworks cho windows permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Tải và cài đặt phần mềm Lightworks cho Windows&lt;/h2&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/772Bl1pJaTY?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;h2 id=&quot;kết-luận&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#k%E1%BA%BFt-lu%E1%BA%ADn&quot; aria-label=&quot;kết luận permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kết luận&lt;/h2&gt;
&lt;p&gt;Rõ ràng, Lightworks có quá nhiều ưu điểm. Ở đây, mình sẽ hướng dẫn bạn tải và cài đặt phần mềm chỉnh sửa video Lightworks với phiên bản miễn phí cho Windows.&lt;/p&gt;
&lt;p&gt;Vì theo mình, Lightworks có thể cung cấp đầy đủ công cụ để chỉnh sửa, cắt, ghép video với nhiều hiệu ứng đẹp. Và nó đúng là một đối thủ xứng tầm cho các phần mềm chỉnh sửa video miễn phí khác.&lt;/p&gt;
&lt;p&gt;Hy vọng bạn cũng thấy được những lợi ích lớn lao từ phần mềm miễn phí này.&lt;/p&gt;
&lt;p&gt;Trong video tiếp theo, mình sẽ giới thiệu với bạn cách để tạo một project mới trong Lightworks.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[GIMP 2.8 tutorial] Tạo ảnh phản chiếu - reflection trong GIMP]]></title><description><![CDATA[Bạn đã biết tạo ảnh lồng trong chữ chưa? Hôm nay, mình sẽ giới thiệu với bạn thủ thuật tạo ảnh phản chiếu trong GIMP. Thủ thuật thực hiện được tóm tắt như sau.  Các bước thực hiện…]]></description><link>https://phamvanlam.com/gimp-2-8-tutorial-tao-anh-phan-chieu-reflection-trong-gimp/</link><guid isPermaLink="false">https://phamvanlam.com/gimp-2-8-tutorial-tao-anh-phan-chieu-reflection-trong-gimp/</guid><pubDate>Sat, 13 Oct 2018 14:40:31 GMT</pubDate><content:encoded>&lt;p&gt;Bạn đã biết &lt;a href=&quot;/gimp-2-8-tutorial-tao-anh-long-trong-chu-trong-gimp/&quot;&gt;tạo ảnh lồng trong chữ&lt;/a&gt; chưa? Hôm nay, mình sẽ giới thiệu với bạn thủ thuật tạo ảnh phản chiếu trong GIMP.&lt;/p&gt;
&lt;p&gt;Thủ thuật thực hiện được tóm tắt như sau.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/xGZkVl2QTVY?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;h2 id=&quot;các-bước-thực-hiện&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A1c-b%C6%B0%E1%BB%9Bc-th%E1%BB%B1c-hi%E1%BB%87n&quot; aria-label=&quot;các bước thực hiện permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Các bước thực hiện&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Tạo mới một &lt;strong&gt;Image&lt;/strong&gt;, và viết chữ lên đó (Lưu ý là: ở đây mình làm ví dụ với chữ. Thực tế, bạn có thể tạo ảnh phản chiếu cho một đối tượng hay một ảnh bất kỳ.)&lt;/li&gt;
&lt;li&gt;Nhân đôi layer chữ đó: &lt;strong&gt;nhấn chuột phải&lt;/strong&gt; vào layer đó và chọn &lt;strong&gt;Duplicate Layer&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Chọn công cụ &lt;strong&gt;Flip Tool&lt;/strong&gt; để tạo ảnh phản chiếu. Có hai loại là: theo chiều dọc và theo chiều ngang. Ở đây mình chọn phản chiếu theo chiều dọc.&lt;/li&gt;
&lt;li&gt;Sau khi đã tạo được ảnh phản chiếu theo chiều dọc rồi. Chọn công cụ di chuyển để di chuyển layer đó xuống phía dưới. Lúc này, về cơ bản là đã hoàn thành việc tạo ảnh phản chiếu rồi. Công việc còn lại là điều chỉnh để tạo hiệu ứng đẹp mắt.&lt;/li&gt;
&lt;li&gt;Nhấn chuột phải vào layer chứa ảnh phản chiếu, chọn &lt;strong&gt;Add Layer Mask&lt;/strong&gt; để tạo hiệu ứng màu thay đổi.&lt;/li&gt;
&lt;li&gt;Tiếp theo chọn công cụ &lt;strong&gt;Blend Tool&lt;/strong&gt; để tạo hiệu ứng màu &lt;strong&gt;Gradient&lt;/strong&gt;. Điều chỉnh &lt;strong&gt;độ mờ đục&lt;/strong&gt; cho layer chứa ảnh phản chiếu...&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là các bước thực hiện thủ thuật tạo ảnh phản chiếu trong GIMP. Trong video tiếp theo, mình dự định sẽ giới thiệu với bạn thủ thuật tạo ảnh động.&lt;/p&gt;
&lt;p&gt;Hy vọng bạn tiếp tục theo dõi và ủng hộ để mình có thêm nhiều động lực làm các video hướng dẫn học các phần mềm mã nguồn mở miễn phí.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[GIMP 2.8 tutorial] Tạo ảnh lồng trong chữ trong GIMP]]></title><description><![CDATA[Bài viết trước mình đã hướng dẫn bạn cách để làm mờ nền ảnh trong GIMP rồi. Hôm nay, mình sẽ giới thiệu tiếp với bạn thủ thuật để tạo ảnh lồng trong chữ. Việc thực hiện thủ thuật…]]></description><link>https://phamvanlam.com/gimp-2-8-tutorial-tao-anh-long-trong-chu-trong-gimp/</link><guid isPermaLink="false">https://phamvanlam.com/gimp-2-8-tutorial-tao-anh-long-trong-chu-trong-gimp/</guid><category><![CDATA[Thủ thuật chữ]]></category><pubDate>Sat, 13 Oct 2018 14:32:46 GMT</pubDate><content:encoded>&lt;p&gt;Bài viết trước mình đã hướng dẫn bạn cách để &lt;a href=&quot;/gimp-2-8-tutorial-lam-mo-nen-blur-background-anh-trong-gimp/&quot;&gt;làm mờ nền&lt;/a&gt; ảnh trong GIMP rồi. Hôm nay, mình sẽ giới thiệu tiếp với bạn thủ thuật để tạo ảnh lồng trong chữ.&lt;/p&gt;
&lt;p&gt;Việc thực hiện thủ thuật này bao gồm các bước sau.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/H3jGWSXdkIE?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;h2 id=&quot;các-bước-thực-hiện&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A1c-b%C6%B0%E1%BB%9Bc-th%E1%BB%B1c-hi%E1%BB%87n&quot; aria-label=&quot;các bước thực hiện permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Các bước thực hiện&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Mở ảnh và viết chữ lên đó.&lt;/li&gt;
&lt;li&gt;Chọn vào layer chữ và tạo vùng chọn: nhấn chuột phải vào layer chữ, chọn &lt;strong&gt;Alpha to Selection&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Chọn vào layer ảnh: trên thanh công cụ, chọn &lt;strong&gt;Select / Invert&lt;/strong&gt; để tạo vùng chọn là vùng còn lại&lt;/li&gt;
&lt;li&gt;Trên thanh công cụ, chọn &lt;strong&gt;Layer / Transparency / Add Alpha Channel&lt;/strong&gt; để có thể xóa vùng chọn này thành trong suốt.&lt;/li&gt;
&lt;li&gt;Chọn công cụ xóa - &lt;strong&gt;Eraser Tool&lt;/strong&gt; để xóa vùng chọn trên thành trong suốt&lt;/li&gt;
&lt;li&gt;Ẩn layer chữ đi. Lúc này, về cơ bản là mình đã hoàn thành việc tạo ảnh lồng trong chữ.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;kế-hoạch-tiếp-theo&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#k%E1%BA%BF-ho%E1%BA%A1ch-ti%E1%BA%BFp-theo&quot; aria-label=&quot;kế hoạch tiếp theo permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kế hoạch tiếp theo&lt;/h2&gt;
&lt;p&gt;Tiếp theo, mình sẽ giới thiệu với bạn thủ thuật tạo ảnh phản chiếu - reflection trong phần mềm mã nguồn mở GIMP.&lt;/p&gt;
&lt;p&gt;Hy vọng bạn tiếp tục theo dõi và ủng hộ để mình có thêm nhiều động lực làm các video hướng dẫn học các phần mềm mã nguồn mở miễn phí.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[GIMP 2.8 tutorial] Làm mờ nền - blur background ảnh trong GIMP]]></title><description><![CDATA[Xin chào, bạn đã biết cách tạo bóng đổ cho chữ trong GIMP chưa? Hôm nay, mình xin giới thiệu với bạn thủ thuật làm sao để làm mờ nền - blur background ảnh trong phần mềm mã nguồn…]]></description><link>https://phamvanlam.com/gimp-2-8-tutorial-lam-mo-nen-blur-background-anh-trong-gimp/</link><guid isPermaLink="false">https://phamvanlam.com/gimp-2-8-tutorial-lam-mo-nen-blur-background-anh-trong-gimp/</guid><pubDate>Sat, 13 Oct 2018 14:24:58 GMT</pubDate><content:encoded>&lt;p&gt;Xin chào, bạn đã biết cách &lt;a href=&quot;/gimp-2-8-tutorial-hai-cach-tao-bong-do-drop-shadow-trong-gimp/&quot;&gt;tạo bóng đổ&lt;/a&gt; cho chữ trong GIMP chưa? Hôm nay, mình xin giới thiệu với bạn thủ thuật làm sao để làm mờ nền - blur background ảnh trong phần mềm mã nguồn mở GIMP.&lt;/p&gt;
&lt;p&gt;Việc này sẽ làm nổi bật hơn thành phần chính của bức ảnh, thành phần nền sẽ bị mờ đi. Qua đó, bức ảnh sẽ trở nên nổi bật và đẹp hơn.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/epyHAk-FPEE?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;h2 id=&quot;các-bước-chính-thực-hiện&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A1c-b%C6%B0%E1%BB%9Bc-ch%C3%ADnh-th%E1%BB%B1c-hi%E1%BB%87n&quot; aria-label=&quot;các bước chính thực hiện permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Các bước chính thực hiện&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Nhân đôi layer ảnh: chọn vào layer ảnh, nhấn chuột phải và chọn &lt;strong&gt;Duplicate Layer&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Bắt đầu với layer ở phía trên, ta lựa chọn công cụ &lt;strong&gt;Free Select Tool&lt;/strong&gt; để tạo vùng chọn ứng với thành phần chính của bức ảnh (thành phần còn lại sẽ bị làm mờ)&lt;/li&gt;
&lt;li&gt;Làm mịn vùng chọn: Trên thanh công cụ, chọn &lt;strong&gt;Select / Feather&lt;/strong&gt;. Sau đó, bạn lựa chọn thông số phù hợp.&lt;/li&gt;
&lt;li&gt;Đảo ngược vùng chọn để chọn vùng còn lại - cần làm mờ: Trên thanh công cụ, chọn &lt;strong&gt;Select / Invert&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Tiếp đến chọn &lt;strong&gt;Layer / Transparency / Add Alpha Channel&lt;/strong&gt; để mình có thể xóa vùng chọn thành trong suốt.&lt;/li&gt;
&lt;li&gt;Chọn công cụ xóa &lt;strong&gt;Eraser Tool&lt;/strong&gt; để xóa nền thành trong suốt. Sau bước này, mình đã có thành phần chính - không làm mờ ở layer phía trên.&lt;/li&gt;
&lt;li&gt;Tiếp đến, bạn chọn layer phía dưới để làm mờ: Trên thanh công cụ chọn &lt;strong&gt;Filters / Blur / Gaussian Blur&lt;/strong&gt;. Bạn chọn thông số cho phù hợp&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Về cơ bản đến đây là mình đã hoàn thành việc làm mờ nền - blur background ảnh trong GIMP.&lt;/p&gt;
&lt;h2 id=&quot;kế-hoạch-tiếp-theo&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#k%E1%BA%BF-ho%E1%BA%A1ch-ti%E1%BA%BFp-theo&quot; aria-label=&quot;kế hoạch tiếp theo permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kế hoạch tiếp theo&lt;/h2&gt;
&lt;p&gt;Tiếp theo mình dự định làm video giới thiệu về thủ thuật làm ảnh lồng trong chữ.&lt;/p&gt;
&lt;p&gt;Hy vọng bạn tiếp tục theo dõi và ủng hộ để mình có thêm nhiều động lực làm các video hướng dẫn học các phần mềm mã nguồn mở, miễn phí nhé!&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[GIMP 2.8 tutorial] Hai cách tạo bóng đổ - drop shadow trong GIMP]]></title><description><![CDATA[Bài viết trước mình đã nói về cách tạo chữ vòng theo đường vẽ. Hôm nay, mình sẽ tiếp tục hướng dẫn bạn một thủ thuật khá hay và được sử dụng phổ biến. Đó là tạo bóng đổ - drop…]]></description><link>https://phamvanlam.com/gimp-2-8-tutorial-hai-cach-tao-bong-do-drop-shadow-trong-gimp/</link><guid isPermaLink="false">https://phamvanlam.com/gimp-2-8-tutorial-hai-cach-tao-bong-do-drop-shadow-trong-gimp/</guid><category><![CDATA[Thủ thuật chữ]]></category><pubDate>Sat, 13 Oct 2018 14:18:00 GMT</pubDate><content:encoded>&lt;p&gt;Bài viết trước mình đã nói về cách &lt;a href=&quot;/gimp-2-8-tutorial-tao-chu-vong-theo-duong-ve-trong-gimp/&quot;&gt;tạo chữ vòng theo đường vẽ&lt;/a&gt;. Hôm nay, mình sẽ tiếp tục hướng dẫn bạn một thủ thuật khá hay và được sử dụng phổ biến. Đó là tạo bóng đổ - drop shadow.&lt;/p&gt;
&lt;p&gt;Cụ thể là mình sẽ giới thiệu với bạn hai cách để tạo bóng đổ - drop shadow.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/yot4gVSssFg?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Để tạo bóng đổ - drop shadow, đầu tiên mình sẽ phải tạo mới một Image và viết chữ lên đó. Tiếp theo là việc áp dụng hai cách tạo bóng đổ sau.&lt;/p&gt;
&lt;h2 id=&quot;cách-1-sử-dụng-hiệu-ứng-có-sẵn&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A1ch-1-s%E1%BB%AD-d%E1%BB%A5ng-hi%E1%BB%87u-%E1%BB%A9ng-c%C3%B3-s%E1%BA%B5n&quot; aria-label=&quot;cách 1 sử dụng hiệu ứng có sẵn permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Cách 1: Sử dụng hiệu ứng có sẵn&lt;/h2&gt;
&lt;p&gt;Để sử dụng hiệu ứng này, bạn thao tác như sau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chọn vào layer chứa chữ.&lt;/li&gt;
&lt;li&gt;Trên thanh công cụ, chọn &lt;strong&gt;Filters / Light and Shadow / Drop Shadow&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Trong cửa sổ hiện ra, bạn tùy chỉnh các thông số theo ý của mình. Như vậy là hoàn thành.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Chú ý&lt;/strong&gt;: sau thao tác trên, bạn đã tạo được ra một layer mới chứa thành phần bóng đổ - drop shadow. Bạn có thể di chuyển layer này để thay đổi vị trí bóng đổ theo ý muốn.&lt;/p&gt;
&lt;h2 id=&quot;cách-2-sử-dụng-vùng-chọn--tô-màu--di-chuyển&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A1ch-2-s%E1%BB%AD-d%E1%BB%A5ng-v%C3%B9ng-ch%E1%BB%8Dn--t%C3%B4-m%C3%A0u--di-chuy%E1%BB%83n&quot; aria-label=&quot;cách 2 sử dụng vùng chọn  tô màu  di chuyển permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Cách 2: Sử dụng vùng chọn + tô màu + di chuyển&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Đầu tiên bạn chọn vào layer chứa chữ&lt;/li&gt;
&lt;li&gt;Nhấn chuột phải và chọn &lt;strong&gt;Alpha to Selection&lt;/strong&gt; để tạo vùng chọn là chữ đã viết&lt;/li&gt;
&lt;li&gt;Tạo mới một layer phía dưới layer chứa chữ để chứa thành phần bóng đổ&lt;/li&gt;
&lt;li&gt;Tô màu lên layer mới tạo theo vùng chọn là chữ&lt;/li&gt;
&lt;li&gt;Di chuyển layer chứa thành phần bóng đổ để thay đổi vị trí của bóng đổ.&lt;/li&gt;
&lt;li&gt;Làm mờ thành phần bóng đổ bằng cách: nhấn vào layer bóng đổ; trên thanh công cụ chọn &lt;strong&gt;Filters / Blur / Gaussian Blur&lt;/strong&gt;; trong cửa sổ hiện ra bạn tùy chỉnh thông số theo ý muốn là hoàn thành.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là 2 cách tạo bóng đổ - drop shadow trong phần mềm mã nguồn mở GIMP. Theo quan điểm cá nhân thì mình thích sử dụng cách thứ hai hơn.&lt;/p&gt;
&lt;p&gt;Còn bạn thì sao?&lt;/p&gt;
&lt;p&gt;Hãy chia sẻ với mọi người bằng cách để lại bình luận phía dưới nhé.&lt;/p&gt;
&lt;p&gt;Cám ơn bạn đã theo dõi video. Hy vọng bạn tiếp tục ủng hộ để mình có thêm nhiều động lực làm các video tiếp theo về hướng dẫn sử dụng các phần mềm mã nguồn mở, miễn phí.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[GIMP 2.8 tutorial] Tạo chữ vòng theo đường vẽ trong GIMP]]></title><description><![CDATA[Xin chào bạn! Bạn đã biết tạo viền ngoài cho chữ trong GIMP chưa? Hôm nay mình sẽ tiếp tục hướng dẫn bạn một thủ thuật hay với chữ. Đó là tạo chữ vòng theo đường vẽ. Thủ thuật với…]]></description><link>https://phamvanlam.com/gimp-2-8-tutorial-tao-chu-vong-theo-duong-ve-trong-gimp/</link><guid isPermaLink="false">https://phamvanlam.com/gimp-2-8-tutorial-tao-chu-vong-theo-duong-ve-trong-gimp/</guid><category><![CDATA[Thủ thuật chữ]]></category><pubDate>Sat, 13 Oct 2018 14:07:37 GMT</pubDate><content:encoded>&lt;p&gt;Xin chào bạn! Bạn đã biết &lt;a href=&quot;/gimp-2-8-tutorial-tao-vien-ngoai-cho-chu-trong-gimp-tao-outline/&quot;&gt;tạo viền ngoài cho chữ&lt;/a&gt; trong GIMP chưa? Hôm nay mình sẽ tiếp tục hướng dẫn bạn một thủ thuật hay với chữ. Đó là tạo chữ vòng theo đường vẽ.&lt;/p&gt;
&lt;p&gt;Thủ thuật với chữ này rất đơn giản, bao gồm những bước như sau.&lt;/p&gt;
&lt;h2 id=&quot;nội-dung-các-bước&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#n%E1%BB%99i-dung-c%C3%A1c-b%C6%B0%E1%BB%9Bc&quot; aria-label=&quot;nội dung các bước permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Nội dung các bước&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Viết trước một dòng chữ mà bạn định tạo cho nó vòng theo một đường mà ta sẽ vẽ sau.&lt;/li&gt;
&lt;li&gt;Tạo &lt;strong&gt;Path&lt;/strong&gt; (có hai cách để tạo Path mà mình sẽ giới thiệu sau).&lt;/li&gt;
&lt;li&gt;Trong tab &lt;strong&gt;Layers&lt;/strong&gt;, nhấn vào layer chữ, chọn &lt;strong&gt;Text along Path&lt;/strong&gt; để tạo một Path mới - là dòng chữ vừa rồi được vòng theo đường vẽ Path ban đầu.&lt;/li&gt;
&lt;li&gt;Trong tab &lt;strong&gt;Paths&lt;/strong&gt;, bạn nhấn vào một Path và chọn &lt;strong&gt;Path to Selection&lt;/strong&gt;. Lúc này, mình có một vùng chọn là chữ đã uốn vòng theo đường vẽ.&lt;/li&gt;
&lt;li&gt;Bạn quay về tab &lt;strong&gt;Layers&lt;/strong&gt;, tạo mới một &lt;strong&gt;Layers&lt;/strong&gt;, sau đó tô màu cho vùng chọn trên layer vừa tạo. Như vậy là hoàn thành việc tạo chữ vòng theo đường vẽ trong GIMP rồi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/jAUSbnH6bD8?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;h2 id=&quot;hai-cách-tạo-path&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#hai-c%C3%A1ch-t%E1%BA%A1o-path&quot; aria-label=&quot;hai cách tạo path permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Hai cách tạo Path&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cách trực tiếp: Sử dụng &lt;strong&gt;Paths Tool&lt;/strong&gt;. Bạn chỉ cần vẽ và điều chỉnh sao cho phù hợp là đã tạo được một Path rồi.&lt;/li&gt;
&lt;li&gt;Cách gián tiếp: Sử dụng vùng chọn. Bạn có thể sử dụng &lt;strong&gt;Rectangle Select Tool&lt;/strong&gt;, &lt;strong&gt;Ellipse Select Tool&lt;/strong&gt;,... để tạo nên một vùng chọn. Trên tab &lt;strong&gt;Paths&lt;/strong&gt;, bạn chọn chức năng &lt;strong&gt;Selection to Path&lt;/strong&gt; là có thể tạo ra một Path mới từ vùng chọn vừa vẽ.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lời-kết&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#l%E1%BB%9Di-k%E1%BA%BFt&quot; aria-label=&quot;lời kết permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Lời kết&lt;/h2&gt;
&lt;p&gt;Trên đây là bài hướng dẫn về thủ thuật tạo chữ vòng theo đường vẽ trong phần mềm mã nguồn mở GIMP.&lt;/p&gt;
&lt;p&gt;Mình hy vọng bạn sẽ tiếp tục theo dõi và ủng hộ để mình có thêm nhiều động lực làm tiếp các video về hướng dẫn sử dụng các phần mềm mã nguồn mở, miễn phí.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[GIMP 2.8 tutorial] Tạo viền ngoài cho chữ trong GIMP - tạo outline]]></title><description><![CDATA[Xin chào bạn, như đã nói trong bài về một số thủ thuật cơ bản với chữ trong GIMP. Bài này, mình sẽ hướng dẫn bạn thủ thuật tạo viền ngoài cho chữ trong GIMP - tiếng anh gọi là…]]></description><link>https://phamvanlam.com/gimp-2-8-tutorial-tao-vien-ngoai-cho-chu-trong-gimp-tao-outline/</link><guid isPermaLink="false">https://phamvanlam.com/gimp-2-8-tutorial-tao-vien-ngoai-cho-chu-trong-gimp-tao-outline/</guid><category><![CDATA[Thủ thuật chữ]]></category><pubDate>Sat, 13 Oct 2018 13:55:08 GMT</pubDate><content:encoded>&lt;p&gt;Xin chào bạn, như đã nói trong bài về một số &lt;a href=&quot;/gimp-2-8-tutorial-mot-so-thu-thuat-co-ban-voi-chu-trong-gimp/&quot;&gt;thủ thuật cơ bản với chữ&lt;/a&gt; trong GIMP. Bài này, mình sẽ hướng dẫn bạn thủ thuật tạo viền ngoài cho chữ trong GIMP - tiếng anh gọi là outline.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/tWnHJVV8LDQ?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;h2 id=&quot;cách-tạo-viền-ngoài-cho-chữ-trong-gimp&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#c%C3%A1ch-t%E1%BA%A1o-vi%E1%BB%81n-ngo%C3%A0i-cho-ch%E1%BB%AF-trong-gimp&quot; aria-label=&quot;cách tạo viền ngoài cho chữ trong gimp permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Cách tạo viền ngoài cho chữ trong GIMP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Đầu tiên, bạn viết chữ mà bạn muốn tạo viền - outline cho nó.&lt;/li&gt;
&lt;li&gt;Tạo một layer mới dạng &lt;strong&gt;Transparency&lt;/strong&gt; để chứa thành phần viền - outline.&lt;/li&gt;
&lt;li&gt;Trong tab quản lý &lt;strong&gt;Layers&lt;/strong&gt;, chọn vào layer chữ đã viết, nhấn chuột phải và chọn &lt;strong&gt;Alpha to Selection&lt;/strong&gt; để tạo vùng chọn ứng với chữ đã viết&lt;/li&gt;
&lt;li&gt;Tiếp theo là mở rộng vùng chọn: trên thanh công cụ, chọn &lt;strong&gt;Select / Grow&lt;/strong&gt;. Trong cửa sổ hiện ra, bạn tùy chọn giá trị mở rộng hợp lý, rồi &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Trong tab quản lý &lt;strong&gt;Layers&lt;/strong&gt;, chọn vào layer outline đã tạo ở bước 2. Sau đó, bạn chọn màu muốn tô cho viền, rồi chọn công cụ &lt;strong&gt;Bucket Fill Tool&lt;/strong&gt; trên &lt;strong&gt;ToolBox&lt;/strong&gt; để đổ màu vào vùng chọn. Chú ý là vị trí layer chứa thành phần outline phải ở dưới layer chứa chữ mà bạn đã viết.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;kế-hoạch-tiếp-theo&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#k%E1%BA%BF-ho%E1%BA%A1ch-ti%E1%BA%BFp-theo&quot; aria-label=&quot;kế hoạch tiếp theo permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kế hoạch tiếp theo&lt;/h2&gt;
&lt;p&gt;Trong các video tiếp theo, mình sẽ tiếp tục hướng dẫn bạn một vài thủ thuật và hiệu ứng khác với chữ.&lt;/p&gt;
&lt;p&gt;Hy vọng bạn sẽ tiếp tục theo dõi và ủng hộ để mình có thêm nhiều động lực làm tiếp các video về hướng dẫn sử dụng các phần mềm mã nguồn mở, miễn phí.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[GIMP 2.8 tutorial] Một số thủ thuật cơ bản với chữ trong GIMP]]></title><description><![CDATA[Trước khi xem video này, nếu bạn chưa xem video hướng dẫn tùy chỉnh giao diện GIMP thì mời bạn xem tại đây. Còn tiếp theo sẽ là video hướng dẫn một số thủ thuật cơ bản với chữ…]]></description><link>https://phamvanlam.com/gimp-2-8-tutorial-mot-so-thu-thuat-co-ban-voi-chu-trong-gimp/</link><guid isPermaLink="false">https://phamvanlam.com/gimp-2-8-tutorial-mot-so-thu-thuat-co-ban-voi-chu-trong-gimp/</guid><category><![CDATA[Thủ thuật chữ]]></category><pubDate>Sat, 13 Oct 2018 13:47:42 GMT</pubDate><content:encoded>&lt;p&gt;Trước khi xem video này, nếu bạn chưa xem video hướng dẫn tùy chỉnh giao diện GIMP thì mời bạn xem tại &lt;a href=&quot;/gimp-2-8-tutorial-tuy-chinh-giao-dien-gimp/&quot;&gt;đây&lt;/a&gt;. Còn tiếp theo sẽ là video hướng dẫn một số thủ thuật cơ bản với chữ trong GIMP.&lt;/p&gt;
&lt;p&gt;Trong video này, mình sẽ đưa ra những thủ thuật và hiệu ứng mà theo mình nó được sử dụng phổ biến nhất.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/VT9t0Airq0s?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;h2 id=&quot;nội-dung-chính&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#n%E1%BB%99i-dung-ch%C3%ADnh&quot; aria-label=&quot;nội dung chính permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Nội dung chính&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Những cấu hình cơ bản bao gồm: thay đổi font chữ, kích cỡ chữ, kiểu chữ (đậm, nghiêng, gạch chân, gạch ngang) và thay đổi khoảng cách giữa các dòng hay các kí tự trong một dòng.&lt;/li&gt;
&lt;li&gt;Hiệu ứng làm mờ chữ&lt;/li&gt;
&lt;li&gt;Hiệu ứng tạo bóng đổ&lt;/li&gt;
&lt;li&gt;Hiệu ứng làm chữ lượn sóng&lt;/li&gt;
&lt;li&gt;Hiệu ứng làm nổi chữ: trên thanh công cụ&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;dự-định-tiếp-theo&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#d%E1%BB%B1-%C4%91%E1%BB%8Bnh-ti%E1%BA%BFp-theo&quot; aria-label=&quot;dự định tiếp theo permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Dự định tiếp theo&lt;/h2&gt;
&lt;p&gt;Tiếp theo mình sẽ tiếp tục làm video hướng dẫn các thủ thuật về chữ. Cụ thể mình sẽ làm một video để hướng dẫn bạn tạo viền - outline cho chữ.&lt;/p&gt;
&lt;p&gt;Hy vọng bạn sẽ tiếp tục theo dõi và ủng hộ để mình có thêm nhiều động lực làm tiếp các video về hướng dẫn sử dụng các phần mềm mã nguồn mở, miễn phí.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[GIMP 2.8 tutorial] Tùy chỉnh giao diện GIMP]]></title><description><![CDATA[Sau khi đã tìm hiểu giao diện tổng quan của GIMP xong, tiếp theo sẽ là video về tùy chỉnh giao diện GIMP. Trong video này, mình sẽ hướng dẫn bạn tùy chỉnh giao diện GIMP, sao cho…]]></description><link>https://phamvanlam.com/gimp-2-8-tutorial-tuy-chinh-giao-dien-gimp/</link><guid isPermaLink="false">https://phamvanlam.com/gimp-2-8-tutorial-tuy-chinh-giao-dien-gimp/</guid><category><![CDATA[Giao diện]]></category><pubDate>Sat, 13 Oct 2018 13:39:39 GMT</pubDate><content:encoded>&lt;p&gt;Sau khi đã tìm hiểu giao diện &lt;a href=&quot;/gimp-2-8-tutorial-tim-hieu-giao-dien-tong-quan-cua-gimp/&quot;&gt;tổng quan của GIMP&lt;/a&gt; xong, tiếp theo sẽ là video về tùy chỉnh giao diện GIMP.&lt;/p&gt;
&lt;p&gt;Trong video này, mình sẽ hướng dẫn bạn tùy chỉnh giao diện GIMP, sao cho nó phù hợp và thuận tiện nhất đối với bạn.&lt;/p&gt;
&lt;p&gt;Qua đó, giúp bạn dễ dàng hơn trong việc học phần mềm mã nguồn mở GIMP này.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/80b_E_0Tryk?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;h2 id=&quot;kế-hoạch-tiếp-theo&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#k%E1%BA%BF-ho%E1%BA%A1ch-ti%E1%BA%BFp-theo&quot; aria-label=&quot;kế hoạch tiếp theo permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kế hoạch tiếp theo&lt;/h2&gt;
&lt;p&gt;Trong các bài tiếp theo, mình sẽ tiếp tục áp dụng GIMP vào để thiết kế, hay chỉnh sửa hình ảnh.&lt;/p&gt;
&lt;p&gt;Mình sẽ cố gắng trình bày chi tiết nhất có thể để bạn có thể thấy được cái hay của những phần mềm mã nguồn mở, miễn phí.&lt;/p&gt;
&lt;p&gt;Hy vọng bạn sẽ tiếp tục theo dõi và ủng hộ.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[GIMP 2.8 tutorial] Tìm hiểu giao diện tổng quan của GIMP]]></title><description><![CDATA[Bài viết trước, mình đã trình bày về cách tải và cài đặt phần mềm GIMP cho Windows. Bài viết này, mình sẽ tìm hiểu giao diện tổng quan của GIMP. Mình sẽ trình bày một cách cơ bản…]]></description><link>https://phamvanlam.com/gimp-2-8-tutorial-tim-hieu-giao-dien-tong-quan-cua-gimp/</link><guid isPermaLink="false">https://phamvanlam.com/gimp-2-8-tutorial-tim-hieu-giao-dien-tong-quan-cua-gimp/</guid><category><![CDATA[Giao diện]]></category><pubDate>Sat, 13 Oct 2018 13:29:41 GMT</pubDate><content:encoded>&lt;p&gt;Bài viết trước, mình đã trình bày về cách &lt;a href=&quot;/gimp-2-8-tutorial-huong-dan-tai-va-cai-dat-phan-mem-gimp-cho-windows/&quot;&gt;tải và cài đặt&lt;/a&gt; phần mềm GIMP cho Windows. Bài viết này, mình sẽ tìm hiểu giao diện tổng quan của GIMP.&lt;/p&gt;
&lt;p&gt;Mình sẽ trình bày một cách cơ bản nhất. Qua đó, bạn sẽ có một cái nhìn tổng quan về phần mềm mã nguồn mở GIMP.&lt;/p&gt;
&lt;p&gt;Mình xin nhắc lại là chỉ trình bày một cách cơ bản nhất. Cụ thể về các thành phần này, mình sẽ tìm hiểu dần trong các video sau.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/DpdKWI1cqLA?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;h2 id=&quot;kế-hoạch-tiếp-theo&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#k%E1%BA%BF-ho%E1%BA%A1ch-ti%E1%BA%BFp-theo&quot; aria-label=&quot;kế hoạch tiếp theo permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Kế hoạch tiếp theo&lt;/h2&gt;
&lt;p&gt;Từ các bài tiếp theo, mình sẽ bắt đầu áp dụng GIMP vào để thiết kế, hay chỉnh sửa hình ảnh.&lt;/p&gt;
&lt;p&gt;Mình sẽ cố gắng trình bày chi tiết nhất có thể để bạn có thể thấy được cái hay của những phần mềm mã nguồn mở, miễn phí.&lt;/p&gt;
&lt;p&gt;Hy vọng bạn sẽ tiếp tục theo dõi và ủng hộ.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item><item><title><![CDATA[[GIMP 2.8 tutorial] Hướng dẫn tải và cài đặt phần mềm GIMP cho Windows]]></title><description><![CDATA[GIMP là một trong những phần mềm thiết kế, chỉnh sửa ảnh mã nguồn mở, miễn phí tốt nhất. Nói đến đây, có bạn nói rằng: "Làm gì có cái gì miễn phí mà tốt" hay "Tiền nào của đấy thôi…]]></description><link>https://phamvanlam.com/gimp-2-8-tutorial-huong-dan-tai-va-cai-dat-phan-mem-gimp-cho-windows/</link><guid isPermaLink="false">https://phamvanlam.com/gimp-2-8-tutorial-huong-dan-tai-va-cai-dat-phan-mem-gimp-cho-windows/</guid><category><![CDATA[Tải và cài đặt]]></category><pubDate>Sat, 13 Oct 2018 13:15:54 GMT</pubDate><content:encoded>&lt;p&gt;GIMP là một trong những phần mềm thiết kế, chỉnh sửa ảnh mã nguồn mở, miễn phí tốt nhất.&lt;/p&gt;
&lt;p&gt;Nói đến đây, có bạn nói rằng: &quot;Làm gì có cái gì miễn phí mà tốt&quot; hay &quot;Tiền nào của đấy thôi&quot;,...&lt;/p&gt;
&lt;p&gt;Thực tế là mình cũng đã từng nghĩ như vậy.&lt;/p&gt;
&lt;p&gt;Tuy nhiên, sau khi dùng GIMP được một thời gian mình nhận ra rằng GIMP hoàn toàn có thể làm được những gì mà phần mềm chỉnh sửa ảnh chuyên nghiệp Adobe Photoshop làm được.&lt;/p&gt;
&lt;p&gt;Vì vậy, nếu như bạn quyết định học và lựa chọn GIMP như là một công cụ để thiết kế, chỉnh sửa hình ảnh thì mình tin rằng: đó là một quyết định đúng đắn.&lt;/p&gt;
&lt;p&gt;Để tải và cài đặt phần mềm mã GIMP cho Windows, xin mời bạn theo dõi video.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.515151515151516%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/HrptjogsEgo?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Nếu có gì thắc mắc về cách tải và cài đặt phần mềm GIMP cho Windows, bạn có thể để lại câu hỏi trong phần bình luận phía dưới.&lt;/p&gt;
&lt;p&gt;Mình sẽ cố gắng để giải đáp.&lt;/p&gt;</content:encoded><author>admin@phamvanlam.com</author></item></channel></rss>