视频解封装,提取音频或者视频数据
分离视频中的音频和视频数据。提取的视频与源视频使用相同编码器,舍弃音频数据
ffmpeg -i input.mov -c:v copy -an output.mov (-c:v copy表示保持源文件编码器,-an表示舍弃音频数据)
分离视频中的音频和视频数据。提取的音频与源视频中音频使用相同编码器,舍弃视频数据
ffmpeg -i input.mov -c:a copy -vn output.mov (-c:a copy表示目标保持源文件编码器相同,-vn表示舍弃视频数据)
从某时间间隔,剪切一段视频。目标与源使用相同的编码器。
ffmpeg -i input.mov -ss 5 -t 10 -c copy ouput.mov (-ss 5表示从第5秒开始,-t 10表示提取10秒,-c copy表示目的与源使用相同的编码器)
从视频文件中抽取出可以播放的h.264
ffmpeg -i input.flv -c copy -bsf h264_mp4toannexb output.h264
ffmpeg -i input.mp4 -vcodec copy -an -bsf h264_mp4toannexb output1.h264
ffmpeg -i input.mp4 -vcodec copy -bsf h264_mp4toannexb output.h264
视频格式转换
使用ffmpeg默认的目标文件编码器和目标编码参数,将源格式转目的封装格式
ffmpeg -i xxx.mov ouput.avi
结果,文件output.avi封装格式内部使用的编码格式可能与 xxx.mov使用的编码格式不同,用户没有在命令行指定目标文件的参数信息,ffmpeg使用默认的参数进行转码。
ffmpeg保证目的文件与源文件一样的视频编码指令,不改变源格式的编码器格式,只改变源文件的封装格式,将源格式转目的封装格式
use ffmpeg to transform mp4 to same high-quality avi file? - Ask Ubuntu
由于只是在封装层转换,所以速度非常快,最大的保证一致
ffmpeg -i filename.mp4 -vcodec copy -acodec copy filename.avi
ffmpeg保证目的文件与源文件一样的视频编码质量,改变目标文件的编码器
ffmpeg改变源文件的编码格式,进行封装和编码格式的转换,但是要保证质量,各种参数与转换前一致
ffmpeg -i input.avi -sameq -vcodec libx264 -acodec libmp3lame output.mpg
Option ‘sameq’ was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Failed to set value ‘1’ for option ‘sameq’: Invalid argument
Error parsing global options: Invalid argument
解决:
ffmpeg -i youtube-101.mp4 -qscale:v 0 -qscale:a 0 -vcodec libx264 -acodec aac output2.mp4
指定目标文件的编码器格式,将源格式转目的封装格式
ffmpeg -i xxx.mov -c:v mjpeg ouput.avi (v表示视频,-c表示指定目标文件编码器格式)
mp4转avs
- ffmpeg -formats |grep avs
D avs AVS
DE cavsvideo raw Chinese AVS (Audio Video Standard) video - ffmpeg -codecs |grep avs
D.V.L. avs AVS (Audio Video Standard) video
DEV.L. cavs Chinese AVS (Audio Video Standard) (AVS1-P2, JiZhun profile) (encoders: libxavs ) - 保证上面为DE,转换需要编码器,如果没有AVS编码器,需要安装
- ffmpeg -i SampleVideo_360x240_10mb.mp4 -c:v cavs -f cavsvideo fuck.avs
mp4转rv编码器
ffmpeg -i SampleVideo_360x240_10mb.mp4 -c:v rv20 -f rm SampleVideo_360x240_10mb.rmvb
mp4文件转换为hls文件
ios - Mp4 to HLS using ffmpeg - Stack Overflow
ffmpeg -i input.mp4 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls index.m3u8
将 hls的 ts合并为原格式
FFMpeg无损合并视频的多种方法 - 专注流媒体技术与方案! - CSDN博客
调整视频播放速度
视频播放时,2倍速播放,保持图片和声音同步
ffmpeg -i youtube-101.mp4 -vf setpts=PTS/2 -af atempo=2.0 -r:v 60 output.mp4视频播放时,4倍速播放,但是图片和声音不同步了
ffmpeg -i youtube-101.mp4 -vf setpts=PTS/4 youtube-101-4speed.mp4
YUV序列转AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
切割
ffmpeg -ss 00:00:00 -i input.mp4 -c copy -t 60 output.mp4
-ss 表示视频分割的起始时间,-t 表示分割时长,同时也可以用 00:01:00表示
注意 :-ss 要放在 -i 之前
利用FFmpeg进行视频文件进行分割 - CSDN博客
缩放
下面两条命令有相同效果
ffmpeg -i input.mpg -s 320x240 output.mp4
ffmpeg -i input.mpg -vf scale=320:240 output.mp4
对输入视频成比例缩放
改变为源视频一半大小
ffmpeg -i input.mpg -vf scale=iw/2:ih/2 output.mp4
改变为原视频的90%大小:
ffmpeg -i input.mpg -vf scale=iw*0.9:ih*0.9 output.mp4
举例
在未知视频的分辨率时,保证调整的分辨率与源视频有相同的横纵比。
宽度固定400,高度成比例:
ffmpeg -i input.avi -vf scale=400:400/a
ffmpeg -i input.avi -vf scale=400:-1
相反地,高度固定300,宽度成比例:
ffmpeg -i input.avi -vf scale=-1:300
ffmpeg -i input.avi -vf scale=300*a:300
解码
ffmpeg -i video.mp4 -c:v rawvideo -pix_fmt yuv420p out.yuv
ffmpeg -i video.mp4 -pix_fmt yuv420p out.yuv
音频命令
显示ffmpeg支持的音频原始格式
ffmpeg -formats | grep PCM
使用Audacity播放pcm需要的设定
编码方式: 几位编码
字节序: 大小端、没有尾端
声道数: 几个声道
采样频率:
解码为特定格式的pcm
ffmpeg -i test1.flv -f s16le -acodec pcm_s16le output.raw //-f表示输出文件格式
解码为能播放的wav(wav后缀默认能播放,pcm不能)(wav为对pcm加了头信息)
ffmpeg -i test1.flv output.wav
从视频中采集音频
ffmpeg -i video.avi -f mp3 audio.mp3
播放视频
原始尺寸播放
ffplay -i filepath
指定播放时显示尺寸
ffplay -x 720 -y 576 -i filepath
指定播放窗口的显示标题
ffplay -window_titile titile -i filepath
播放yuv
ffplay -f rawvideo -video_size 720x240 -i inputfile_path
图片
保证原分辨率的情况下,降低图片质量,减少图片大小
ffmpeg -i ‘mmexport1499054133974.jpg’ -vf thumbnail,scale=358:441 -frames:v 1 ‘image_location.jpg’
ffmpeg reduce image quality, NOT size - Stack Overflow