ffmpeg - a(audio)/v(video)
- 下载文件 -
ffmpeg -i source.m3u8 -c copy output.mp4
-y 覆盖输出文件
- 提取音频
ffmpeg -i source.mp4 -vn source.mp3
; 去掉音频ffmpeg -i source.mp4 -vcodec copy -an output.mp4
ex: ffmpeg -i video.flv -vn -ar 44100 -ac 2 -ab 192 -f mp3 audio.mp3 vn: helps to disable video recording during the conversion. ar: helps you set audio sampling rate in Hz. ab: set the audio bitrate. ac: to set the number of audio channels. -f: format. https://www.tecmint.com/ffmpeg-commands-for-video-audio-and-image-conversion-in-linux/ 可使用 `ffprobe source.mp4` 拿到文件细节,比如音频格式 .aac
- 音频/视频截取
ffmpeg -i source.mp3 -ss 00:00:05 -t 00:04:45 -acodec copy target.mp3
- Ref-ss position, ex: 00:00:10.540 -t duration 持续多久 -to position http://ffmpeg.org/ffmpeg-all.html#Main-options
- 截图 -
ffmpeg -ss 00:00:05 -i source.mp4 -vframes 1 out.jpg
-vframes n 截 n 张图 可使用 `-vf fps=24/1` 来设置每秒截取多少张图 使用 `-vf scale=480:-1` 指定图片大小 基于视频创建 gif 文件 ffmpeg -i ./v1.mp4 -vf "fps=24" -loop 0 output.gif ffmpeg -i ./v1.mp4 -vf "fps=24,scale=640:-1" -loop 0 output.gif https://superuser.com/questions/556029/how-do-i-convert-a-video-to-gif-using-ffmpeg-with-reasonable-quality
-
音画不同步多半是在 vfr(可变帧率)和 cfr(固定帧率)之间转换的时候视频帧时间戳没有更新导致的,不知道为啥 ffmpeg 会默认以这种一定会导致错误的方式工作,但我们手动加入参数后就可以修正这个问题。如果是一个 vfr 视频,ffmpeg 默认会转换成 cfr,如果不希望它转换的话,则在前置参数的位置加一个-vsync passthrough,视频帧率模式就不会被转换了,这样只要原视频音画是同步的,那转出来音画肯定也是同步的,因为时间戳完全没有变。 Ref
ffmpeg -i source.mp4 -vf "transpose=1" target.mp4
- Ref 使用 filter 改变画面方向
名词
- Variable Bitrate (VBR),动态比特率编码
- Constant Bitrate (CBR),固定码率
- fps(Frames Per Second),帧率 - 每秒钟播放的图片数
- 分辨率 (px)
- 采样率 (赫兹 Hz) - 指每秒钟对音频信号的采样次数
其它
- 容器[封装格式]/数据[v/a] - Ref
- hevc => H.265
- 1k bit = 1024 bit?
- 为什么视频网站的视频链接地址是 blob?