Loading... !!! <!-- wp:paragraph --> <p>转自:https://www.jianshu.com/p/4f399b9dfb43</p> <!-- /wp:paragraph --> <!-- wp:heading {"level":3} --> <h3>转码</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>最简单命令如下:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i out.ogv -vcodec h264 out.mp4 ffmpeg -i out.ogv -vcodec mpeg4 out.mp4 ffmpeg -i out.ogv -vcodec libxvid out.mp4 ffmpeg -i out.mp4 -vcodec wmv1 out.wmv ffmpeg -i out.mp4 -vcodec wmv2 out.wmv </code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>-i 后面是输入文件名。-vcodec 后面是编码格式,h264 最佳,但 Windows 系统默认不安装。如果是要插入 ppt 的视频,选择 wmv1 或 wmv2 基本上万无一失。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>附加选项:-r 指定帧率,-s 指定分辨率,-b 指定比特率;于此同时可以对声道进行转码,-acodec 指定音频编码,-ab 指定音频比特率,-ac 指定声道数,例如</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i out.ogv -s 640x480 -b 500k -vcodec h264 -r 29.97 -acodec libfaac -ab 48k -ac 2 out.mp4 </code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>剪切</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>用 -ss 和 -t 选项, 从第 30 秒开始,向后截取 10 秒的视频,并保存:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i input.wmv -ss 00:00:30.0 -c copy -t 00:00:10.0 output.wmv ffmpeg -i input.wmv -ss 30 -c copy -t 10 output.wmv </code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>达成相同效果,也可以用 -ss 和 -to 选项, 从第 30 秒截取到第 40 秒:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i input.wmv -ss 30 -c copy -to 40 output.wmv </code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>值得注意的是,ffmpeg 为了加速,会使用关键帧技术, 所以有时剪切出来的结果在起止时间上未必准确。 通常来说,把 -ss 选项放在 -i 之前,会使用关键帧技术; 把 -ss 选项放在 -i 之后,则不使用关键帧技术。 如果要使用关键帧技术又要保留时间戳,可以加上 -copyts 选项:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4 </code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>合并</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>把两个视频文件合并成一个。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>简单地使用 concat demuxer,示例:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>$ cat mylist.txt file '/path/to/file1' file '/path/to/file2' file '/path/to/file3' $ ffmpeg -f concat -i mylist.txt -c copy output </code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>更多时候,由于输入文件的多样性,需要转成中间格式再合成:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi </code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>调整播放速度</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>加速四倍:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i TheOrigin.mp4 -vf "setpts=0.25*PTS" UpTheOrigin.mp4 </code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>四倍慢速:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i TheOrigin.mp4 -vf "setpts=4*PTS" DownTheOrigin.mp4 </code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>帧率设置</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>使用-r选项<br> 语法是:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i input -r fps output </code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>例如:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i input.avi -r 30 output.mp4 </code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>使用fps filter</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>另一个设置帧率是用fps filter,特别是在filterchains使用时非常有用。<br> 例如:修改输入文件的帧率到25</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -v clip.mpg -vf fps=fps=25 clip.webm </code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>比特率设置</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>比特率也是一个决定音视频总体质量的参数。他决定每个时间单位处理的bit数。<br> 设置比特率:</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>比特率决定处理1s的编码流需要多少bits,设置用-b选项。区分音视频用-b:a和-b:v<br> 例如:设置整体1.5Mbit每秒</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i file.avi -b 1.5M file.mp4 ffmpeg -i input.avi -b:v 1500K output.mp4 </code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>CBR设置</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>CBR设置一般用作直播流,比如视频会议。为输出设置CBR,有三个参数必须设置为同一个值。<br> bitrate(-b option), minimal rate(-minrate), maximal rate(-maxrate)。maximal rate需要设置-bufsize选项。例如设置CBR为0.5Mbit/s。</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i in.avi -b 0.5M -minrate 0.5M -maxrate 0.5M -bufsize 1M output.mkv </code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>设置输出文件的最大size</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>用-fs选项。<br> 例如设置输出文件的最大的size为10M</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>ffmpeg -i input.avi -fs 10MB output.mp4 </code></pre> <!-- /wp:code --> <!-- wp:heading {"level":3} --> <h3>文件大小计算</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>文件的大小是是音视频流大小的和。<br> 视频流的大小的方程式是(除以8是由bits到bytes的转换):</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>video_size = video_bitrate * time_in_seconds / 8; </code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>如果音频是解压缩的,计算公式是:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>audio_size = smpaling_rate * bit_depth * channels * time_in_second / 8; </code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>例如:计算10分钟的视频, 1500kbits/s 视频比特率和 128kbits/s的音频比特率,用下面的计算方法:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>file_size = video_size + audio_size; file_size = (video_bitrate + audio_bitrate) * time_in_seconds / 8; file_size = (1500 kbits/s + 128kbits/s) * 600s file_size = 1628kbits/s * 600s file_size = 976800kb = 976800000 b / 8 = 122100000 B / 1024 = 119238.28125KB file_size = 119238.28125 KB / 1024 = 116.443634033203125MB = 116.44M </code></pre> <!-- /wp:code --> !!! Last modification:October 24, 2019 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 1 如果觉得我的文章对你有用,请随意赞赏