pull/209/head
xufulong 3 years ago
parent db88223c62
commit de77f007cf
  1. 3
      README.md
  2. 161
      doc/FFmpeg_command_line.md

@ -49,6 +49,3 @@ When it finishes probing, the result of metadata will display on screen.<br>
### Preview thumbnail when seeking: ### Preview thumbnail when seeking:
![preview](https://github.com/xufuji456/FFmpegAndroid/blob/master/gif/preview.gif) ![preview](https://github.com/xufuji456/FFmpegAndroid/blob/master/gif/preview.gif)
***
<br><br>

@ -7,71 +7,70 @@ ffprobe用于检测多媒体流格式;ffplay用于播放视频,包括本地与
# 一、ffmpeg命令行 # 一、ffmpeg命令行
## 1、命令行参数介绍 ## 1、命令行参数介绍
Print help / information / capabilities:<br> Print help / information / capabilities:<br>
--help topic show help<br> --help topic |show help<br>
-version show version<br> -version |show version<br>
-formats show available formats<br> -formats |show available formats<br>
-muxers show available muxers<br> -muxers |show available muxers<br>
-demuxers show available demuxers<br> -demuxers |show available demuxers<br>
-devices show available devices<br> -devices |show available devices<br>
-codecs show available codecs<br> -codecs |show available codecs<br>
-decoders show available decoders<br> -decoders |show available decoders<br>
-encoders show available encoders<br> -encoders |show available encoders<br>
-bsfs show available bit stream filters<br> -bsfs |show available bit stream filters<br>
-protocols show available protocols<br> -protocols |show available protocols<br>
-filters show available filters<br> -filters |show available filters<br>
-pix_fmts show available pixel formats<br> -pix_fmts |show available pixel formats<br>
-sample_fmts show available audio sample formats<br> -sample_fmts |show available audio sample formats<br>
-hwaccels show available HW acceleration methods<br> -hwaccels |show available HW acceleration methods<br>
Global options (affect whole program instead of just one file:<br> Global options (affect whole program instead of just one file:<br>
-v loglevel set logging level<br> -v loglevel |set logging level<br>
-y overwrite output files<br> -y |overwrite output files<br>
-n never overwrite output files<br> -n |never overwrite output files<br>
-filter_threads number of non-complex filter threads<br> -filter_threads |number of non-complex filter threads<br>
-stats print progress report during encoding<br> -stats |print progress report during encoding<br>
-vol volume change audio volume (256=normal)<br> -vol volume |change audio volume (256=normal)<br>
Per-file main options:<br> Per-file main options:<br>
-f fmt force format<br> -f fmt |force format<br>
-c codec codec name<br> -c codec |codec name<br>
-codec codec codec name<br> -codec codec |codec name<br>
-t duration record or transcode "duration" seconds of audio/video<br> -t duration |record or transcode "duration" seconds of audio/video<br>
-to time_stop record or transcode stop time<br> -to time_stop |record or transcode stop time<br>
-fs limit_size set the limit file size in bytes<br> -fs limit_size |set the limit file size in bytes<br>
-ss time_off set the start time offset<br> -ss time_off |set the start time offset<br>
-sseof time_off set the start time offset relative to EOF<br> -sseof time_off |set the start time offset relative to EOF<br>
-frames number set the number of frames to output<br> -frames number |set the number of frames to output<br>
-filter filter_graph set stream filtergraph<br> -filter filter_graph set stream filtergraph<br>
-discard discard<br> -discard |discard<br>
-disposition disposition<br> -disposition |disposition<br>
Video options:<br> Video options:<br>
-vframes number set the number of video frames to output<br> -vframes number |set the number of video frames to output<br>
-r rate set frame rate (Hz value, fraction or abbreviation)<br> -r rate |set frame rate (Hz value, fraction or abbreviation)<br>
-s size set frame size (WxH or abbreviation)<br> -s size |set frame size (WxH or abbreviation)<br>
-aspect aspect set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)<br> -aspect aspect |set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)<br>
-bits_per_raw_sample number set the number of bits per raw sample<br> -vn |disable video<br>
-vn disable video<br> -vcodec codec |force video codec ('copy' to copy stream)<br>
-vcodec codec force video codec ('copy' to copy stream)<br> -timecode hh:mm:ss |set initial TimeCode value.<br>
-timecode hh:mm:ss[:;.]ff set initial TimeCode value.<br> -vf filter_graph |set video filters<br>
-vf filter_graph set video filters<br> -ab bitrate |audio bitrate (please use -b:a)<br>
-ab bitrate audio bitrate (please use -b:a)<br> -b bitrate |video bitrate (please use -b:v)<br>
-b bitrate video bitrate (please use -b:v)<br>
Audio options:<br> Audio options:<br>
-aframes number set the number of audio frames to output<br> -aframes number |set the number of audio frames to output<br>
-aq quality set audio quality (codec-specific)<br> -aq quality |set audio quality (codec-specific)<br>
-ar rate set audio sampling rate (in Hz)<br> -ar rate |set audio sampling rate (in Hz)<br>
-ac channels set number of audio channels<br> -ac channels |set number of audio channels<br>
-an disable audio<br> -an |disable audio<br>
-acodec codec force audio codec ('copy' to copy stream)<br> -acodec codec |force audio codec ('copy' to copy stream)<br>
-vol volume change audio volume (256=normal)<br> -vol volume |change audio volume (256=normal)<br>
-af filter_graph set audio filters<br> -af filter_graph |set audio filters<br>
Subtitle options:<br> Subtitle options:<br>
-s size set frame size<br> -s size |set frame size<br>
-sn disable subtitle<br> -sn |disable subtitle<br>
-scodec codec force subtitle codec ('copy' to copy stream)<br> -scodec codec |force subtitle codec ('copy' to copy stream)<br>
命令行整体格式:以ffmpeg开头,参数之间用空格隔开,每个参数key以"-"开头,后面跟着参数value,输出文件放在命令行最后。<br> 命令行整体格式:以ffmpeg开头,参数之间用空格隔开,每个参数key以"-"开头,后面跟着参数value,输出文件放在命令行最后。<br>
@ -139,29 +138,29 @@ ffmpeg -ss 10 -i input.mp4 -f image2 -vframes 1 -an screenshot.jpg<br>
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=10:20 pic_watermark.mp4<br> ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=10:20 pic_watermark.mp4<br>
如果要灵活设置左上角、右上角、左下角、右下角位置,可以使用case语句,其中main_w代表视频宽度,<br> 如果要灵活设置左上角、右上角、左下角、右下角位置,可以使用case语句,其中main_w代表视频宽度,<br>
main_h代表视频高度,overlay_w代表水印宽度,overlay_h代表水印高度:<br> main_h代表视频高度,overlay_w代表水印宽度,overlay_h代表水印高度:<br>
```
public static String obtainOverlay(int offsetX, int offsetY, int location) {<br> public static String obtainOverlay(int offsetX, int offsetY, int location) {
switch (location) {<br> switch (location) {
case 2:<br> case 2:
return "overlay='(main_w-overlay_w)-" + offsetX + ":" + offsetY + "'";<br> return "overlay='(main_w-overlay_w)-" + offsetX + ":" + offsetY + "'";
case 3:<br> case 3:
return "overlay='" + offsetX + ":(main_h-overlay_h)-" + offsetY + "'";<br> return "overlay='" + offsetX + ":(main_h-overlay_h)-" + offsetY + "'";
case 4:<br> case 4:
return "overlay='(main_w-overlay_w)-" + offsetX + ":(main_h-overlay_h)-" + offsetY + "'";<br> return "overlay='(main_w-overlay_w)-" + offsetX + ":(main_h-overlay_h)-" + offsetY + "'";
case 1:<br> case 1:
default:<br> default:
return "overlay=" + offsetX + ":" + offsetY;<br> return "overlay=" + offsetX + ":" + offsetY;
}<br> }
}<br> }
public static String[] addWaterMarkImg(String inputPath, String imgPath, int location,<br> public static String[] addWaterMarkImg(String inputPath, String imgPath, int location,
int offsetXY, String outputPath) {<br> int offsetXY, String outputPath) {
String overlay = obtainOverlay(offsetXY, offsetXY, location);<br> String overlay = obtainOverlay(offsetXY, offsetXY, location);
String waterMarkCmd = "ffmpeg -i %s -i %s -filter_complex %s -preset:v superfast %s";<br> String waterMarkCmd = "ffmpeg -i %s -i %s -filter_complex %s -preset:v superfast %s";
waterMarkCmd = String.format(waterMarkCmd, inputPath, imgPath, overlay, outputPath);<br> waterMarkCmd = String.format(waterMarkCmd, inputPath, imgPath, overlay, outputPath);
return waterMarkCmd.split(" ");<br> return waterMarkCmd.split(" ");
}<br> }
```
### 3.5 GIF水印 ### 3.5 GIF水印
使用-ignore_loop 0代表GIF循环显示,其他操作与图片水印一致:<br> 使用-ignore_loop 0代表GIF循环显示,其他操作与图片水印一致:<br>
ffmpeg -i input.mp4 -ignore_loop 0 -i logo.gif -filter_complex overlay=10:20 gif_mark.mp4<br> ffmpeg -i input.mp4 -ignore_loop 0 -i logo.gif -filter_complex overlay=10:20 gif_mark.mp4<br>
@ -189,12 +188,8 @@ ffmpeg -ss 20 -accurate_seek -t 10 -i input.mp4 -an -r 5 %3d.jpg<br>
使用setpts设置视频速度,atempo设置音频速度:<br> 使用setpts设置视频速度,atempo设置音频速度:<br>
ffmpeg -i in.mp4 -filter_complex [0:v]setpts=%.2f*PTS[v];[0:a]atempo=%.2f[a] -map [v] -map [a] out.mp4<br> ffmpeg -i in.mp4 -filter_complex [0:v]setpts=%.2f*PTS[v];[0:a]atempo=%.2f[a] -map [v] -map [a] out.mp4<br>
### 3.12 插入封面 ### 3.12 旋转视频
其中-disposition:v:1 attached_pic代表封面:<br> ffmpeg -i in.mp4 -c copy -metadata:s:\v:0 rotate=90 out.mp4<br>
ffmpeg -i in.mp4 -i photo.png -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic out.mp4<br>
### 3.13 旋转视频
ffmpeg -i in.mp4 -c copy -metadata:s:v:0 rotate=90 out.mp4<br>
# 二、ffplay命令行 # 二、ffplay命令行
ffplay主要用于播放视频,也可以播放网络流,示例如下:<br> ffplay主要用于播放视频,也可以播放网络流,示例如下:<br>

Loading…
Cancel
Save