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文件路径可以是绝对或者相对路径。


image.png


image.png