利用MP4Box.js可以查看mp4文件的信息。
mp4文件由很多box组成,box的类型非常多,但大多都是可选的,mp4根目录必选的有3个box组成:
box是可以嵌套的,moov中又嵌套了很多box:
trak又由下列box组成:
mdia又由下列box组成:
在mvhd中保存了两个重要信息:
总时长 = duration/timescale
每秒图片数(fps) = sample_count/总时长
因为音频的体积较小,相对视频可以忽略,所以影响视频文件大小主要来自视频。视频其实就是连续播放图片,当每秒播放超过24幅图片时(24fps),由于人眼的视觉暂留效果,所以看起来视频是连续的。所以从原理上我们可以推测出视频大小与下面几个因素有关:
查看文件信息:
ffprobe 1.mov
转换成 mp4 格式
ffmpeg -i 1.mov -vcodec copy -acodec copy temp.mp4
wmv格式转换成 mp4 格式
ffmpeg -i input.wmv -c:v libx264 -crf 23 -c:a aac -q:a 100 output.mp4
批量wmv转mp4
for file in ./*.flv; do ffmpeg -i $file -c:v libx264 -crf 23 -c:a aac -q:a 100 $file.mp4;done
降低帧率
ffmpeg -i temp.mp4 -r 24 out.mp4
裁剪视频
ffmpeg -ss 00:00:00 -t 00:00:30 -i 1.mp4 -vcodec copy -acodec copy out.mp4
合并文件
ffmpeg -f concat -i filelist.txt -c copy output.mp4
其中filelist.txt内容如下
file '1.mp4'
file '2.mp4'
file '3.mp4'
批量转换格式
for file in ./*.flv; do ffmpeg -i $file -vcodec copy -acodec copy $file.mp4;done
rtmp推流
ffmpeg -re -stream_loop -1 -i test.mp4 -vcodec copy -acodec copy -f flv -y rtmp://camera-fivecakes.oss-cn-beijing-internal.aliyuncs.com/live/test_channel
对于矢量字体来说,像素点越多,字体显示越细腻,曲线更加顺滑,但是增加像素会让字体更小。Mac用4个物理像素显示原本一个物理像素,即实际的物理像素长和宽都变为原来的2倍,这样做在增加矢量字体细腻的同时不改变字体大小。
对于非矢量的图片和视频来说,像素点和真实的物理像素点逐一对应,但是设置图片和录屏尺寸的时候,是逻辑像素的尺寸,即宽高都是真实像素的一半。
期望将视频的宽高比为16:9,录制时设置1024×576,输出的视频尺寸为2048 × 1152。