剪切视频:
ffmpeg -ss 00:00:00 -t 00:09:23 -i fuli.mp4 -vcodec copy -acodec copy output.mp4

  • -ss 指定从什么时间开始
  • -t 指定需要截取多长时间,如果不指定,则剪切到最后
  • -i 指定输入文件

合并视频,list.txt 中,每一行一个文件,格式:file './split.mp4'
ffmpeg -f concat -i list.txt -c copy concat.mp4
如果不是MP4要重新编码:ffmpeg -f concat -i list.txt -y -c:v libx264 -strict -2 concat.mp4
另一种方式:ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg

旋转视频,2种方式:
1、重新编码,很耗时,但效果最好(很多视频还能优化编码后在保留效果的前提下使文件变得更小)。其中transspose:0-逆时针旋转90度,垂直翻转;1-顺时针90度;2-逆时针旋转90度;3-顺时针旋转90度,垂直翻转。
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
2、仅仅更改元数据中的旋转设置
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
如果希望保留源视频的日期、摄像机等详细信息,则:
ffmpeg -i input.mp4 -map_metadata 0 -metadata:s:v rotate="90" -codec copy output.mp4

将文件当做直播送至live
ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName

将直播媒体保存至本地文件
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv

将其中一个直播流,视频改用h264压缩,音频不变,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream

将其中一个直播流,视频改用h264压缩,音频改用faac压缩,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream

将其中一个直播流,视频不变,音频改用faac压缩,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream

将一个高清流,复制为几个不同视频清晰度的流重新发布,其中音频不变
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec copy -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec copy -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec copy -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k

功能一样,只是采用-x264opts选项
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a copy -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a copy -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a copy -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k

将当前摄像头及音频通过DSSHOW采集,视频h264、音频faac压缩后发布
ffmpeg -r 25 -f dshow -s 640×480 -i video="video source name":audio="audio source name" -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name

将一个JPG图片经过h264压缩循环输出为mp4视频
ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4

将普通流视频改用h264压缩,音频不变,送至高清流服务(新版本FMS live=1)
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv "rtmp://server/live/h264Stream live=1"

把文件转成m3u8 方法(原样拷贝)
ffmpeg -re -i /root/video.mpg -codec copy -map 0 -f segment -segment_list playlist.m3u8 -segment_list_flags +live -segment_time 10 out%03d.ts

play_url
读取rtmp流转成m3u8
ffmpeg -rw_timeout 8000000 -v verbose -i rtmp://*.com/ -force_key_frames "expr:gte(t,n_forced1)" -c:v libx264 -c:a aac -ac 1 -strict -2 -crf 20 -profile:v main -maxrate 2500k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 5 -start_number 1 -f segment -segment_list D:\rev\playlist.m3u8 -segment_list_flags +live -segment_time 5 D:\rev\out%04d.ts

将视频转码为mp4
ffmpeg -i 本地视频地址 -y -c:v libx264 -strict -2 转换视频.mp4

将mp4格式转换为ts格式
ffmpeg -y -i 本地视频.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 转换视频.ts

将ts文件进行切片
ffmpeg -i 本地视频.ts -c copy -map 0 -f segment -segment_list 视频索引.m3u8 -segment_time 5 前缀-%03d.ts

截屏保存为图片(ss后面为时间,秒为单位,0为第一侦):
ffmpeg -i C:\Video\test.mp4 -ss 0 -f image2 C\:Image\out.jpg