美文网首页
FFmpeg(五)实现视频编辑

FFmpeg(五)实现视频编辑

作者: 默默_大魔王 | 来源:发表于2023-03-07 02:04 被阅读0次

前面已经介绍了视频的格式,这篇文章我们去编辑一下视频

简单介绍和我们要使用的工具
ffmpeg:包含FFmpeg的各种功能,如:gif、格式转换、截图、编解码等
ffplay:一个使用了FFmpeg和SDL库的、简单的、可移植的媒体播放器
ffprobe:用来查看多媒体文件的信息
ffserver:与流媒体服务器有关,负责响应客户端的流媒体请求,把流媒体数据发送给客户端

常用命令:

常用命令 表述
-version 显示版本
-demuxers 显示可用的demuxers
--muxers 显示可用的-muxers
-devices 显示可用的设备
-codecs 显示所有的编解码器
-decoders 显示可用的解码器
-encoders 显示所有的编码器
-bsfs 显示比特流filter
-formats 显示可用的格式
-protocols 显示可用的协议
-filters 显示可用的过滤器
-pix_fmts 显示可用的像素格式
-sample_fmts 显示可用的采样格式
-layouts 显示channel名称
-colors 显示识别的颜色名称

如果要播放一个视频 输入以下命令(我电脑已安装ffmpeg,并且有视频文件)

//播放视频          
ffplay D:\ffmpeg\test.mp4    
//剪切视频 
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi    

我们写一个本地方法,让ffmpeg帮我们剪辑视频

new Thread(new Runnable() {
            @Override
            public void run() {
                //ss 开始时间  tt 结束时间
                String cmd = "ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi ";
                //把命令交给native层处理,native 调用ffmpeg SDK
                run(cmd.split("[ \\t]+"));
            }
        }).start();

public native int run(String[] cmd);


直接看native方法

#include <jni.h>
#include "ffmpeg.h"

JNIEXPORT jint

JNICALL
Java_com_tj_myapplication_MainActivity_run(
        JNIEnv *env, jclass obj, jobjectArray commands) {
    int argc = (*env)->GetArrayLength(env, commands);
    char *argv[argc];

    int i;
    for (i = 0; i < argc; i++) {
        jstring js = (jstring) (*env)->GetObjectArrayElement(env, commands, i);
        argv[i] = (char *) (*env)->GetStringUTFChars(env, js, 0);
    }
    return runCmd(argc, argv);
}

修改ffmpeg.c里面的方法

int runCmd(int argc, char **argv)
{
    略...最后添加下面代码,恢复状态
    nb_filtergraphs = 0;
    progress_avio = NULL;
    input_streams = NULL;
    nb_input_streams = 0;
    input_files = NULL;
    nb_input_files = 0;
    output_streams = NULL;
    nb_output_streams = 0;
    output_files = NULL;
    nb_output_files = 0;

    return main_return_code;
}
//ffmpeg.h文件里面添加
int runCmd(int argc, char **argv);


相关文章

  • FFmpeg编辑视频

    FFmpeg组成 构成FFmpeg主要有三个部分: 第一部分是四个作用不同的工具软件,分别是:ffmpeg.exe...

  • Android集成FFmpeg并实现视频转码

    通过编译FFmpeg并集成到Android App中实现视频转码,也可以直接执行FFmpeg命令实现视频拼接、剪切...

  • ffmpeg使用总结

    需求:实现Android上使用ffmpeg进行视频裁剪,压缩功能 使用到相关技术: 1FFmpeg实现录制视频 采...

  • 使用ffmpeg编辑视频

    合并视频 创建一个文本文件filelist.txt:file 'input1.mkv'file 'input2.m...

  • 音视频处理

    音视频编码 AudioTrack播放 视频编码 OpenGL 绘制 视频编辑转码 视频滤镜 牟仯 FFmpeg4A...

  • Android MediaCodec图片合成视频

    利用MediaCodec可以录制视频,可是可以将图片合成视频吗?之前使用ffmpeg来实现。但是,ffmpeg却是...

  • ffmpeg 安装教程(Windows)

    ffmpeg的用途:视频编辑 下载 进入官网,选择需要下载的文件,官方网址:http://ffmpeg.org/d...

  • iOS 集成FFmpeg环境(一):命令行转换视频格式

    作用:FFmpeg 可以用来转换视频格式,根据FFmpeg实现环境的配置来更改视频的格式。例如:将flv格式转换成...

  • ffmpeg 常用操作命令总结

    ffmpeg介绍 ffmpeg 是一个非常流行且好用的图像、音视频处理工具。可以实现视频分割,截图,转码,合并,水...

  • 音视频开发—FFMpeg编码&解码

    FFMpeg 作为音视频领域的开源工具,它几乎可以实现所有针对音视频的处理,本文主要利用 FFMpeg 官方提供的...

网友评论

      本文标题:FFmpeg(五)实现视频编辑

      本文链接:https://www.haomeiwen.com/subject/nyesbrtx.html