基于mp4parser的视频抽帧降帧率

本文介绍了如何利用mp4parser库从视频中抽帧并降低帧率,以此减小视频存储量。虽然可能导致播放质量问题,但提供了具体的实现代码。在操作过程中遇到内存溢出和帧拼接问题,并给出了临时解决方案。
摘要由CSDN通过智能技术生成

1. 功能

从原始视频中均匀抽取一部分帧,合成新的视频文件。

2. 优点

降低原始视频的存储量大小,精简保存。

3. 缺点

丢帧太多的话,会导致视频播放过程中花屏,甚至视频无法播放。

4. 代码

(基于mp4parser的代码来做的)

import org.mp4parser.Container;
import org.mp4parser.IsoFile;
import org.mp4parser.muxer.Movie;
import org.mp4parser.muxer.Track;
import org.mp4parser.muxer.builder.DefaultMp4Builder;
import org.mp4parser.muxer.container.mp4.MovieCreator;
import org.mp4parser.muxer.tracks.AppendTrack;
import org.mp4parser.muxer.tracks.ClippedTrack;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

/**
 * Removes some samples in the middle
 * Suppose newFrameRate == m, and frameRate == n
 * If m < n, then we take m frames of one second on average to create the new video.
 */
public class DecreaseFPS {
    public static void main(String[] args) throws IOException {
        //String audioEnglish = RemoveSomeSamplesExample.class.getProtectionDomain().getCodeSource().getLocation().getFile() + "/count-english-audio.mp4";
        String srcVideoPath = "test.mp4";
        String dstVideoPath = "removeSampleOutput.mp4";
        removeFrames(srcVideoPath, dstVideoPath);
    }
    
    public static void removeFrames(String srcVideoPath, String dstVideoPath) throws IOException {   
        double videoDuration = getDuration(srcVideoPath);
        Movie originalMovie = MovieCreator.build
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值