【问题标题】:create mp4 video for play online by ffmpeg widthout preload通过 ffmpeg widthout preload 创建 mp4 视频以在线播放
【发布时间】:2014-07-02 15:18:32
【问题描述】:

我使用 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

【问题讨论】:

    标签: html video ffmpeg video-streaming mp4


    【解决方案1】:

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

    如果您想要更快地开始,请查看可流式传输格式,例如 HLS 或 MPEG-DASH。某些平台原生支持这些格式,例如 iOS 和 Android 都支持 HLS。

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

    Apple 有很好的工具和文档来帮助您准备流媒体视频。

    【讨论】:

    • 我的视频比特率约为 128Kbps(每秒 16KB)。对于持续时间较短(约 5 分钟)的视频,我没有这个问题。我的视频中的 4MB 预加载(1 小时 34 分钟和 100MB)意味着加载约 22 分钟预加载!!!我认为这个问题是针对视频片段的。
    • 您可以使用 isoviewer 工具检查您的 mp4 文件 - code.google.com/p/mp4parser 您也可以尝试使用分段 mp4 - stackoverflow.com/questions/8616855/…
    猜你喜欢
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2013-08-08
    相关资源
    最近更新 更多