ffmpeg使用的那些知识
FFmpeg官网地址:http://ffmpeg.org/
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
1. 需要将flv转成mp4时, avi 转mp4, 压缩mp4 时
ffmpeg -i 你的视频.flv 输出的视频.mp4 ffmpeg -i 你的视频.avi 输出的视频.mp4 ffmpeg -i 你的视频.mp4 输出的视频.mp4
2. 当需要将大于1M的文件进行压缩时:
for file in $(find . -type f -size +1M) do ffmpeg -i $file $file.mp4; done;
3. 当需要视频中某一时间的截图时:
ffmpeg -ss 视频中的时间 -i 你的视频.mp4 -vframes 1 截图的名称.jpg 例: ffmpeg -ss 00:00:07 -i 你的视频.mp4 -vframes 1 截图的名称.jpg
4. 需要对某一文件夹内的视频文件自动处理时:
for dirname in $(find . -type d|grep "./") do echo $dirname; cd $dirname; ffmpeg -ss 00:00:07 -i 01*\.mp4 -vframes 1 00-cover.jpg; cd ../; done
5. 需要对某一文件夹内的视频文件自动处理时:
for dirname in $(find . -type d|grep "./") do echo $dirname; cd $dirname; ffmpeg -ss 00:00:07 -i 01*\.mp4 -vframes 1 00-cover.jpg; cd ../; done
6. 需要对某类文件进行重命名时(非ffmpeg):
for dir_a in $(ls) do cd $dir_a; rename 's/(\d\d)\-(\d)\_/$1\-0$2\_/' *; cd ..; done;
7. 当你的mp4文件需要放到网上边下边播时, 而目前的mp4文件又不支持时, 可以通过以下处理解决:
如下:
ffmpeg -i 你的视频.mp4 -movflags faststart -acodec copy -vcodec copy 输出的视频.mp4
或
qt-faststart 你的视频.mp4 输出的视频.mp4
moov : 参考:
http://ali-tmhly.h5.neone.com.cn/
https://www.zhangxinxu.com/wordpress/2018/12/handbrake-web-mp4-video-compress/
mp4视频文件头中,包含一些元数据。元数据包含:视频的宽度高度、视频时长、编码格式等。mp4元数据通常在视频文件的头部,这样播放器在读取文件时会最先读取视频的元数据,然后开始播放视频。
当然也存在这样一种情况:mp4视频的元数据处于视频文件最后,这样播放器在加载视频文件时,一直读取到最后,才读取到视频信息,然后开始播放。如果缺少元数据,也是这样的情况。这就出现了mp4视频不支持边加载、边播放的问题。
qt-faststart简介
qt-faststart是一个由Mike Melanson (melanson@pcisys.net)写的开源程序,是一个命令行工具。 你可能可以在很多地方找到它的源码,我一般是在FFmpeg的源码中拿, 它通常放在FFmpeg源码的tools目录下, 比如github仓库中的位置为https://github.com/FFmpeg/FFmpeg/blob/master/tools/qt-faststart.c。 该程序只有一个源码文件,很小(不到13KB)。
qt-faststart编译与使用
make tools/qt-faststart.c 之前先要进行./configure && make
要使用它需要先编译,这个程序能利用大多数编译工具实现编译, 因为我一般在linux下使用, 所以直接make tools/qt-faststart.c 即可在tools目录下产生出名为qt-faststart的可执行文件, 然后把编译输出结果放置到系统搜索路径中即可以qt-faststart来进行调用使用了。 qt-faststart的使用十分简单,其调用格式为 qt-faststart <inMp4FilePath> <outMp4FilePath><inMp4FilePath>:表示调整前的mp4文件路径<outMp4FilePath>:表示调整后的输出mp4文件路径 mp4文件路径可以是绝对或者相对路径。