<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Some stuff (Записи о ffmpeg)</title><link>https://psss.site/</link><description></description><atom:link href="https://psss.site/categories/ffmpeg.xml" rel="self" type="application/rss+xml"></atom:link><language>ru</language><copyright>Contents © 2026 &lt;a href="mailto:none@example.com"&gt;None&lt;/a&gt; 
&lt;br/&gt;
Все материалы доступны как &lt;a rel="license" href="http://creativecommons.org/publicdomain/zero/1.0/"&gt;
общественное достояние CC0 1.0 Universal (CC0 1.0) Public Domain Dedication&lt;/a&gt;.
</copyright><lastBuildDate>Sat, 10 Oct 2026 15:26:38 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Копирование метаданных с одного mp3 в другой (ffmpeg)</title><link>https://psss.site/posts/ffmpeg/</link><dc:creator>None</dc:creator><description>&lt;p&gt;Файл &lt;code&gt;mp3copy_id.bat&lt;/code&gt; следующего содержания:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;@echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;off&lt;/span&gt;

&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;имя&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;второго&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;файла&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;без&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;пути&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;и&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;расширения&lt;/span&gt;
&lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;F&lt;/span&gt;&lt;span class="o"&gt;=%~&lt;/span&gt;&lt;span class="n"&gt;n2&lt;/span&gt;
&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;расширение&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;второго&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;файла&lt;/span&gt;
&lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;E&lt;/span&gt;&lt;span class="o"&gt;=%~&lt;/span&gt;&lt;span class="n"&gt;x2&lt;/span&gt;

&lt;span class="n"&gt;ffmpeg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;"%1"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ffmetadata&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;_metadata&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt;

&lt;span class="n"&gt;ffmpeg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;"%2"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ffmetadata&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;_metadata&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;copy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;map_metadata&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;"%F%.1%E%"&lt;/span&gt;

&lt;span class="n"&gt;del&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;_metadata&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Запускать так:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;mp3copy_id &amp;lt;src_mp3_file&amp;gt; &amp;lt;dest_mp3_file&amp;gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Скрипт создаст третий файл (медиа скопировано со второго, 
метаданные с первого). Имя файла будет такое же как у второго, 
но с добавленной &lt;code&gt;.1&lt;/code&gt; в имя файла.&lt;/p&gt;</description><category>audio</category><category>ffmpeg</category><guid>https://psss.site/posts/ffmpeg/</guid><pubDate>Mon, 23 Jun 2025 20:27:34 GMT</pubDate></item><item><title>ffmpeg кодирование mp4</title><link>https://psss.site/posts/ffmpeg-kodirovanie-mp4/</link><dc:creator>None</dc:creator><description>&lt;h3&gt;Подходит для телеги (mov)&lt;/h3&gt;
&lt;p&gt;С указанием битрейта и простым копированием звука&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;inputfile&lt;span class="w"&gt; &lt;/span&gt;-c:v&lt;span class="w"&gt; &lt;/span&gt;libx264&lt;span class="w"&gt; &lt;/span&gt;-b:v&lt;span class="w"&gt; &lt;/span&gt;1500k&lt;span class="w"&gt; &lt;/span&gt;-c:a&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;outfile.mov
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;С указанием качества и кодированием звука в mp3 &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;inputfile&lt;span class="w"&gt; &lt;/span&gt;-c:v&lt;span class="w"&gt; &lt;/span&gt;libx264&lt;span class="w"&gt; &lt;/span&gt;-crf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-codec:a&lt;span class="w"&gt; &lt;/span&gt;libmp3lame&lt;span class="w"&gt; &lt;/span&gt;-qscale:a&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;outfile.mov
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Чем выше параметр &lt;code&gt;-crf&lt;/code&gt; тем ниже качество видео и меньше размер файла.
Аналогично, чем выше параметр &lt;code&gt;-qscale&lt;/code&gt; тем ниже качество звука и меньше размер файла.&lt;/p&gt;
&lt;h3&gt;Подходит для показа в браузере chromium (webm)&lt;/h3&gt;
&lt;p&gt;С указанием качества и кодированием звука &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-c:v&lt;span class="w"&gt; &lt;/span&gt;libvpx&lt;span class="w"&gt; &lt;/span&gt;-b:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-crf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-codec:a&lt;span class="w"&gt; &lt;/span&gt;libvorbis&lt;span class="w"&gt; &lt;/span&gt;-ac&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-b:a&lt;span class="w"&gt; &lt;/span&gt;160k
ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;inputfile&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$OPTS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;outfile.webm
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Чем выше параметр &lt;code&gt;-crf&lt;/code&gt; тем ниже качество видео и меньше размер файла.
Параметр &lt;code&gt;-b:a&lt;/code&gt; - битрейт аудио.&lt;/p&gt;
&lt;h3&gt;Кодирование видео снятого с экрана&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;inputfile&lt;span class="w"&gt; &lt;/span&gt;-c:v&lt;span class="w"&gt; &lt;/span&gt;libx264&lt;span class="w"&gt; &lt;/span&gt;-tune&lt;span class="w"&gt; &lt;/span&gt;stillimage&lt;span class="w"&gt; &lt;/span&gt;-preset&lt;span class="w"&gt; &lt;/span&gt;slower&lt;span class="w"&gt; &lt;/span&gt;-crf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-codec:a&lt;span class="w"&gt; &lt;/span&gt;libmp3lame&lt;span class="w"&gt; &lt;/span&gt;-qscale:a&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;outfile.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Включение субтитров&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;inputfile&lt;span class="w"&gt; &lt;/span&gt;-filter:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;subtitles&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;subtitles.srt&lt;span class="w"&gt; &lt;/span&gt;-c:v&lt;span class="w"&gt; &lt;/span&gt;libx264&lt;span class="w"&gt; &lt;/span&gt;-crf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-codec:a&lt;span class="w"&gt; &lt;/span&gt;libmp3lame&lt;span class="w"&gt; &lt;/span&gt;-qscale:a&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;outfile.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;В имени файла субтитров нежелательны пробелы (по крайней мере для версии под Windows).&lt;/p&gt;
&lt;p&gt;Более подробно &lt;a href="https://en.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/subtitle_options"&gt;о субтитрах в ffmpeg&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Видео из одного файла, звук из отдельного&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# копирование данных без перекодирования&lt;/span&gt;
ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input_video.mov&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input_audio.mp3&lt;span class="w"&gt; &lt;/span&gt;-c:v&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;-c:a&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt;  &lt;/span&gt;-map&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:v:0&lt;span class="w"&gt; &lt;/span&gt;-map&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;:a:0&lt;span class="w"&gt;  &lt;/span&gt;outfile.mp4

&lt;span class="c1"&gt;# перекодирование видео, копирование звука&lt;/span&gt;
ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input_video.mov&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input_audio.mp3&lt;span class="w"&gt; &lt;/span&gt;-c:v&lt;span class="w"&gt; &lt;/span&gt;libx264&lt;span class="w"&gt; &lt;/span&gt;-crf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-c:a&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt;  &lt;/span&gt;-map&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:v:0&lt;span class="w"&gt; &lt;/span&gt;-map&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;:a:0&lt;span class="w"&gt;  &lt;/span&gt;outfile.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Ссылки&lt;/h3&gt;
&lt;h4&gt;Примеры:&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://dev.to/cypark/useful-ffmpeg-commands-by-examples-5dj4"&gt;Ссылка&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Опции для mp3&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://trac.ffmpeg.org/wiki/Encode/MP3"&gt;Ссылка&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Опции для vp8&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://wiki.webmproject.org/ffmpeg"&gt;Ссылка&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Опции для vp9&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://wiki.webmproject.org/ffmpeg/vp9-encoding-guide"&gt;Ссылка&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://write.corbpie.com/mp4-to-vp9-webm-encoding-with-ffmpeg/"&gt;Ссылка&lt;/a&gt;&lt;/p&gt;</description><category>ffmpeg</category><category>video</category><guid>https://psss.site/posts/ffmpeg-kodirovanie-mp4/</guid><pubDate>Fri, 08 Apr 2022 10:14:46 GMT</pubDate></item><item><title>ffmpeg tips</title><link>https://psss.site/posts/ffmpeg-tips/</link><dc:creator>None</dc:creator><description>&lt;h2&gt;FFMPEG tips&lt;/h2&gt;
&lt;h3&gt;выдрать звук и сохранить в mp3 с высшим качеством&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;inputfile&lt;span class="w"&gt; &lt;/span&gt;-q:a&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;outputfile.mp3
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Масштабирование&lt;/h3&gt;
&lt;p&gt;Без сохранения aspect ratio&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;complex.mov&lt;span class="w"&gt; &lt;/span&gt;-crf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-vf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;640&lt;/span&gt;:360&lt;span class="w"&gt; &lt;/span&gt;complex-small.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;С сохранением aspect ratio&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input.jpg&lt;span class="w"&gt; &lt;/span&gt;-vf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;320&lt;/span&gt;:-1&lt;span class="w"&gt; &lt;/span&gt;output_320.png
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Some codecs require the size of width and height to be кратны &lt;em&gt;n&lt;/em&gt;. 
Для этого в качестве высоты надо установить &lt;em&gt;-n&lt;/em&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input.jpg&lt;span class="w"&gt; &lt;/span&gt;-vf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;320&lt;/span&gt;:-2&lt;span class="w"&gt; &lt;/span&gt;output_320.png
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://trac.ffmpeg.org/wiki/Scaling"&gt;Подробней про хитрое масштабирование&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;concat files&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;concat&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;mylist.txt&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;complex.mov
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;mylist.txt:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="na"&gt;file filename1&lt;/span&gt;
&lt;span class="c1"&gt;#comment&lt;/span&gt;
&lt;span class="na"&gt;file filename2&lt;/span&gt;
&lt;span class="na"&gt;....&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;speedup without sound&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;o1-20.mp4&lt;span class="w"&gt; &lt;/span&gt;-an&lt;span class="w"&gt; &lt;/span&gt;-filter:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"setpts=0.25*PTS"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;o-fast.mp4

ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;complex-small.mp4&lt;span class="w"&gt;  &lt;/span&gt;-movflags&lt;span class="w"&gt; &lt;/span&gt;+faststart&lt;span class="w"&gt; &lt;/span&gt;-pix_fmt&lt;span class="w"&gt; &lt;/span&gt;yuv420p&lt;span class="w"&gt; &lt;/span&gt;-crf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-an&lt;span class="w"&gt; &lt;/span&gt;-filter:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"setpts=0.2*PTS"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;complex-fast.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;speedup with sound&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;complex-small.mp4&lt;span class="w"&gt;  &lt;/span&gt;-movflags&lt;span class="w"&gt; &lt;/span&gt;+faststart&lt;span class="w"&gt; &lt;/span&gt;-pix_fmt&lt;span class="w"&gt; &lt;/span&gt;yuv420p&lt;span class="w"&gt; &lt;/span&gt;-crf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;-filter_complex&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"[0:v]setpts=0.125*PTS[v];[0:a]atempo=2.0,atempo=2.0,atempo=2.0[a]"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-map&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"[v]"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-map&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"[a]"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;compex-fast-big.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;crop&lt;/h3&gt;
&lt;p&gt;Use the crop filter:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;.mp4&lt;span class="w"&gt; &lt;/span&gt;-filter:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"crop=out_w:out_h:x:y"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;out.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To crop a 80x60 section, starting from position (200, 100):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;.mp4&lt;span class="w"&gt; &lt;/span&gt;-filter:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"crop=80:60:200:100"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-c:a&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;out.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The audio is stream copied in this example, so re-encoding is avoided.&lt;/p&gt;
&lt;p&gt;To crop the bottom right quarter:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;.mp4&lt;span class="w"&gt; &lt;/span&gt;-filter:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"crop=in_w/2:in_h/2:in_w/2:in_h/2"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-c:a&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;out.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This is the same as:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;.mp4&lt;span class="w"&gt; &lt;/span&gt;-filter:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"crop=320/2:240/2:320/2:240/2"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-c:a&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;out.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Which is the same as:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;.mp4&lt;span class="w"&gt; &lt;/span&gt;-filter:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"crop=240:120:240:120"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-c:a&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;out.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can refer to the input image size with in_w and in_h as shown in this first example. The output width and height can also be used with out_w and out_h.&lt;/p&gt;
&lt;p&gt;Crop 20 pixels from the top, and 20 from the bottom:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;.mp4&lt;span class="w"&gt; &lt;/span&gt;-filter:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"crop=in_w:in_h-40"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-c:a&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;out.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The filter will automatically center the crop if x and y are omitted such as in this example.&lt;/p&gt;
&lt;p&gt;Preview:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffplay&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input&lt;span class="w"&gt; &lt;/span&gt;-vf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"crop=in_w:in_h-40"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Яркость/контраст/гамма/насыщенность&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;.mp4&lt;span class="w"&gt; &lt;/span&gt;-vf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;eq&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;gamma&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.5:saturation&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.3&lt;span class="w"&gt; &lt;/span&gt;-crf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;out.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;crop и сохранение в animated gif&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;.mp4&lt;span class="w"&gt; &lt;/span&gt;-filter:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"crop=300:800:200:-400"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-pix_fmt&lt;span class="w"&gt; &lt;/span&gt;rgb24&lt;span class="w"&gt; &lt;/span&gt;-r&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;tower1.gif
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Сохранение в webm для стикеров telegram&lt;/h3&gt;
&lt;p&gt;Надо constant quality, не constrained, поэтому &lt;code&gt;-b:v 0&lt;/code&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input.mp4&lt;span class="w"&gt; &lt;/span&gt;-c:v&lt;span class="w"&gt; &lt;/span&gt;libvpx-vp9&lt;span class="w"&gt; &lt;/span&gt;-crf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-b:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;output.webm
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ещё вариант с масштабом жестким без сохранения aspect ratio:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input_file.mp4&lt;span class="w"&gt; &lt;/span&gt;-framerate&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-c:v&lt;span class="w"&gt; &lt;/span&gt;libvpx-vp9&lt;span class="w"&gt; &lt;/span&gt;-an&lt;span class="w"&gt; &lt;/span&gt;-vf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;:512&lt;span class="w"&gt; &lt;/span&gt;-pix_fmt&lt;span class="w"&gt; &lt;/span&gt;yuva420p&lt;span class="w"&gt; &lt;/span&gt;output_sticker.webm
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;cut&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input.wmv&lt;span class="w"&gt; &lt;/span&gt;-ss&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;00&lt;/span&gt;:00:30.0&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;00&lt;/span&gt;:00:10.0&lt;span class="w"&gt; &lt;/span&gt;output.wmv
ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input.wmv&lt;span class="w"&gt; &lt;/span&gt;-ss&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;output.wmv

ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input.mp4&lt;span class="w"&gt; &lt;/span&gt;-ss&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-to&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;40&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;output.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can also put -ss before -i !!!&lt;/p&gt;
&lt;p&gt;The -t option doesn't work for short videos, but it does for longer videos.
For short videos it seems that -frames:v is better. This is what worked for me.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-ss&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input.mp4&lt;span class="w"&gt; &lt;/span&gt;-frames:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-vcodec&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;-acodec&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;output.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;For me -t option didn't work, but -vframes worked.
I prefer using #frames, since I would rather cut at
I-Frames and I found out GOP for video using ffprobe.&lt;/p&gt;
&lt;p&gt;The command line that worked for me is:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-ss&lt;span class="w"&gt; &lt;/span&gt;60s&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input.wmv&lt;span class="w"&gt; &lt;/span&gt;-vframes&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1800&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-acodec&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;-vcodec&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;output.wmv
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;By the way, putting -ss in the front of -i makes a big difference in execution time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Inaccurate seek&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-noaccurate_seek&lt;span class="w"&gt; &lt;/span&gt;-ss&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;120&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input.mp4&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;-vcodec&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;-acodec&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="w"&gt; &lt;/span&gt;-to&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-avoid_negative_ts&lt;span class="w"&gt; &lt;/span&gt;make_zero&lt;span class="w"&gt; &lt;/span&gt;output.mp4
&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;For browser&lt;/h2&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;input_file&lt;span class="w"&gt; &lt;/span&gt;-q:v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-q:a&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-movflags&lt;span class="w"&gt; &lt;/span&gt;+faststart&lt;span class="w"&gt; &lt;/span&gt;-pix_fmt&lt;span class="w"&gt; &lt;/span&gt;yuv420p&lt;span class="w"&gt; &lt;/span&gt;-acodec&lt;span class="w"&gt; &lt;/span&gt;libvorbis&lt;span class="w"&gt; &lt;/span&gt;-vcodec&lt;span class="w"&gt; &lt;/span&gt;libtheora&lt;span class="w"&gt; &lt;/span&gt;output.ogv
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;After that create html file:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;TITLE&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;video&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"1024"&lt;/span&gt; &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"576"&lt;/span&gt; &lt;span class="na"&gt;controls&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"controls"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;source&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"output.ogv"&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'video/ogg; codecs="theora, vorbis"'&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  Тег video не поддерживается вашим браузером.
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;video&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;br&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;br&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Генерация сигналов&lt;/h2&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;ffmpeg&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;lavfi&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sine=frequency=1000:sample_rate=48000:duration=5"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-af&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"volume=-6dB"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-c:a&lt;span class="w"&gt; &lt;/span&gt;pcm_s16le&lt;span class="w"&gt; &lt;/span&gt;test.wav
&lt;/pre&gt;&lt;/div&gt;</description><category>ffmpeg</category><category>video</category><guid>https://psss.site/posts/ffmpeg-tips/</guid><pubDate>Fri, 08 Jan 2021 10:42:18 GMT</pubDate></item></channel></rss>