创建mp4视频,由ffmpeg在线播放,无需预加载

时间:2014-05-14 13:59:30

标签: html5 video ffmpeg video-streaming mp4

我使用ffmpeg创建一个可在线播放的可流式mp4视频文件。但转换后的视频尝试在开始时加载3-4 MB的视频数据。然后视频可以播放和搜索。

我尝试通过不同的ffmpeg命令删除启动加载数据。但每个命令都有问题。

我的第一个命令(在开始和可搜索时加载3-4 MB的视频数据):

ffmpeg -i file.mkv -movflags faststart -s 500x268 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -b:v 100k -b:a 45k 1.mp4

和其他命令(在开始时删除3-4 MB加载数据且不可搜索):

ffmpeg -i CloudywithaChanceofMeatballs.mkv -movflags faststart -frag_size 1024 -s 500x268 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -b:v 100k -b:a 45k 1.mp4
ffmpeg -i DespicableMe2MiniMovie.mkv -movflags faststart -s 500x268 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -b:v 100k -b:a 45k 2.mp4
ffmpeg -i DespicableMe2MiniMovie.mkv -movflags faststart -frag_size 10240 -s 500x268 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -b:v 100k -b:a 45k 2.mp4
ffmpeg -i DespicableMe2MiniMovie.mkv -movflags faststart -frag_duration 2000 -s 500x268 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -b:v 100k -b:a 45k 2.mp4
ffmpeg -i CloudywithaChanceofMeatballs.mkv -movflags faststart -frag_duration 2000 -s 500x268 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -b:v 100k -b:a 45k 2.mp4
ffmpeg -i CloudywithaChanceofMeatballs.mkv -movflags frag_keyframe+empty_moov -s 500x268 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -b:v 100k -b:a 45k 2.mp4
ffmpeg -i CloudywithaChanceofMeatballs.mkv -g 52 -movflags frag_keyframe+empty_moov -s 500x268 -vf "movie=watermark.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -b:v 100k -b:a 45k 2.mp4

我也使用了这个命令(它在开始时加载3-4 MB的视频数据,像ffmpeg的第一个代码一样可以搜索):

MP4Box -add video.mp4 videos.mp4
MP4Box -inter 500 video.mp4

我的视频文件持续时间为:1小时34分钟,转换后的大小为~100MB

1 个答案:

答案 0 :(得分:0)

通常视频播放器会在缓冲区中积累足够的数据以便能够播放。缓冲区大小可能会有所不同,但最长可达10-30秒。

如果您想要更快的启动,那么请查看可流式格式,例如HLS或MPEG-DASH。有些平台本身支持这些格式,例如,iOS和Android都支持HLS。

我们的想法是,HLS引用了具有不同比特率的多个版本的视频,并且根据您的网络条件,它可以根据网络速度动态调整质量。此外,通常播放器以最低比特率开始播放,因此需要较少的数据下载,然后逐渐切换到更高的比特率。

Apple拥有关于如何为流式传输准备视频的好工具和文档。