视频剪切我意外的发现上一次的视频压缩的代码能够运行FFmpeg视频剪切的命令,但是不能做视频合并的命令,因为不能读取记录了几个视频的路径的txt文件。

这里我就说直说视频剪切的过程,不说代码,只说log,毕竟我也不清楚代码往哪运行了


上一次的项目地址
https://github.com/979451341/FFmpegCompress

首先我们需要将项目代码里改一下,将runCommand函数传入的参数改成下面这样

                    int ret = FFmpegNativeBridge.runCommand(new String[]{"ffmpeg","-ss", "00:00:00","-t","00:00:10","-i", et_input.getText().toString(),"-vcodec", "copy","-acodec", "copy",et_output.getText().toString()});

开始就是解析命令

读取开始时间,就是-ss后面的"00:00:00",你也可以写成0

03-10 14:19:55.430 21706-22256/org.voiddog.ffmpeg D/TAG: Splitting the commandline.
03-10 14:19:55.430 21706-22256/org.voiddog.ffmpeg D/TAG: Reading option '-ss' ...
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG:  matched as option 'ss' (set the start time offset) with argument ’00:00:00'.

读取结束时间,就是-t后面的时间,你也可以写成10

03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Reading option '-t' ...
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG:  matched as option 't' (record or transcode "duration" seconds of audio/video) with argument ’00:00:10'.

设置输入视频文件,就是切割这个视频文件的前10秒形成新的视频

03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Reading option '-i' ...
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG:  matched as input url with argument '/storage/emulated/0/pauseRecordDemo/video/video.mp4'.

复制视频流

03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Reading option '-vcodec' ...
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG:  matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'copy'.

复制音频流

03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Reading option '-acodec' ...
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG:  matched as option 'acodec' (force audio codec ('copy' to copy stream)) with argument 'copy'.

最后就是选择输出视频文件路径

03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Reading option '/storage/emulated/0/pauseRecordDemo/video/compress6.mp4' ...
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG:  matched as output url.
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Finished splitting the commandline.
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Parsing a group of options: global .
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Successfully parsed a group of options.

开始创建并配置输出视频文件

03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Parsing a group of options: input url /storage/emulated/0/pauseRecordDemo/video/video.mp4.
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Applying option ss (set the start time offset) with argument 00:00:00.
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Applying option t (record or transcode "duration" seconds of audio/video) with argument 00:00:10.
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Successfully parsed a group of options.

然后打开它

03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Opening an input file: /storage/emulated/0/pauseRecordDemo/video/video.mp4.
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Opening '/storage/emulated/0/pauseRecordDemo/video/video.mp4' for reading
03-10 14:19:55.431 21706-22256/org.voiddog.ffmpeg D/TAG: Setting default whitelist 'file,crypto'
03-10 14:19:55.434 21706-22256/org.voiddog.ffmpeg D/TAG: Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
03-10 14:19:55.434 21706-22256/org.voiddog.ffmpeg D/TAG: ISO: File Type Major Brand: mp42

解析输出视频文件的头部,不知道啥用

03-10 14:19:55.441 21706-22256/org.voiddog.ffmpeg D/TAG: stts: 0 ctts: 7507, ctts_index: 0, ctts_count: 699
03-10 14:19:55.441 21706-22256/org.voiddog.ffmpeg D/TAG: stts: 3753 ctts: 7507, ctts_index: 0, ctts_count: 699
03-10 14:19:55.441 21706-22256/org.voiddog.ffmpeg D/TAG: stts: 7507 ctts: 7507, ctts_index: 0, ctts_count: 699
03-10 14:19:55.441 21706-22256/org.voiddog.ffmpeg D/TAG: stts: 11260 ctts: 15015, ctts_index: 1, ctts_count: 699
03-10 14:19:55.441 21706-22256/org.voiddog.ffmpeg D/TAG: stts: 15014 ctts: 7508, ctts_index: 2, ctts_count: 699

获取编码器,和获取输入视频文件的媒体格式信息

03-10 14:19:55.600 21706-22256/org.voiddog.ffmpeg D/TAG: Parsing MediaFormat {image-data=java.nio.HeapByteBuffer[pos=0 lim=104 cap=104], mime=video/raw, crop-top=0, crop-right=1279, slice-height=720, color-format=21, height=720, width=1280, crop-bottom=719, crop-left=0, stride=1280}
03-10 14:19:55.601 21706-22256/org.voiddog.ffmpeg I/TAG: Output crop parameters top=0 bottom=719 left=0 right=1279, resulting dimensions width=1280 height=720
03-10 14:19:55.601 21706-22256/org.voiddog.ffmpeg D/TAG: MediaCodec 0xe4998b40 started successfully
03-10 14:19:55.601 21706-22256/org.voiddog.ffmpeg I/TAG: MediaCodec started successfully, ret = 0

获取输入视频文件的相关数据

03-10 14:19:55.643 21706-22256/org.voiddog.ffmpeg D/TAG: After avformat_find_stream_info() pos: 1343 bytes read:93574 seeks:2 frames:4
03-10 14:19:55.643 21706-22256/org.voiddog.ffmpeg I/TAG: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/pauseRecordDemo/video/video.mp4':
03-10 14:19:55.643 21706-22256/org.voiddog.ffmpeg I/TAG:   Metadata:
03-10 14:19:55.643 21706-22256/org.voiddog.ffmpeg I/TAG:     major_brand     :
03-10 14:19:55.643 21706-22256/org.voiddog.ffmpeg I/TAG: mp42
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:     minor_version   :
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: 512
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:     compatible_brands:
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: isomiso2avc1mp41
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:     encoder         :
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: HandBrake 0.10.0 2014112200
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:   Duration:
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: 00:00:31.81
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: , start:
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: 0.083000
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: , bitrate:
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: 1878 kb/s
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:     Stream #0:0
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: (und)
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg D/TAG: , 3, 1/90000
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: : Video: h264 (avc1 / 0x31637661), nv12, 1280x720, 1728 kb/s
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: ,
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: 23.98 fps,
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: 23.98 tbr,
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: 90k tbn,
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: 90k tbc
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:  (default)
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:     Metadata:
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:       handler_name    :
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: VideoHandler
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:     Stream #0:1
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: (und)
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg D/TAG: , 1, 1/48000
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: : Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 146 kb/s
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:  (default)
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:     Metadata:
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG:       handler_name    :
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg I/TAG: Stereo
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg D/TAG: Successfully opened the file.

配置输出视频文件的相关数据

03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg D/TAG: Parsing a group of options: output url /storage/emulated/0/pauseRecordDemo/video/compress6.mp4.
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg D/TAG: Applying option vcodec (force video codec ('copy' to copy stream)) with argument copy.
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg D/TAG: Applying option acodec (force audio codec ('copy' to copy stream)) with argument copy.
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg D/TAG: Successfully parsed a group of options.
03-10 14:19:55.644 21706-22256/org.voiddog.ffmpeg D/TAG: Opening an output file: /storage/emulated/0/pauseRecordDemo/video/compress6.mp4.
03-10 14:19:55.648 21706-22256/org.voiddog.ffmpeg D/TAG: Setting default whitelist 'file,crypto'
03-10 14:19:55.649 21706-22256/org.voiddog.ffmpeg D/TAG: Successfully opened the file.
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: Output #0, mp4, to '/storage/emulated/0/pauseRecordDemo/video/compress6.mp4':
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:   Metadata:
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:     major_brand     :
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: mp42
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:     minor_version   :
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: 512
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:     compatible_brands:
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: isomiso2avc1mp41
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:     encoder         :
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: Lavf57.73.100
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:     Stream #0:0
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: (und)
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg D/TAG: , 0, 1/90000
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: : Video: h264 ([33][0][0][0] / 0x0021), nv12, 1280x720, q=2-31, 1728 kb/s
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: ,
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: 23.98 fps,
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: 23.98 tbr,
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: 90k tbn,
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: 90k tbc
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:  (default)
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:     Metadata:
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:       handler_name    :
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: VideoHandler
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:     Stream #0:1
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: (und)
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg D/TAG: , 0, 1/48000
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: : Audio: aac ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 146 kb/s
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:  (default)
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:     Metadata:
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:       handler_name    :
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: Stereo

将输入视频文件的音视频流的前10秒数据复制到输出视频文件
明明是最重要的部分,却只有这点log

03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: Stream mapping:
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:   Stream #0:0 -> #0:0
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:  (copy)
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:   Stream #0:1 -> #0:1
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG:  (copy)
03-10 14:19:55.650 21706-22256/org.voiddog.ffmpeg I/TAG: Press [q] to stop, [?] for help

统计出之前复制的数据的包

03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg I/TAG: frame=  244 fps=0.0 q=-1.0 Lsize=    2522kB time=00:00:10.06 bitrate=2052.0kbits/s speed= 136x    
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg I/TAG: video:2280kB audio:233kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead:
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg I/TAG: 0.355927%
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG: Input file #0 (/storage/emulated/0/pauseRecordDemo/video/video.mp4):
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG:   Input stream #0:0 (video):
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG: 245 packets read (2343932 bytes);
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG:   Input stream #0:1 (audio):
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG: 474 packets read (238991 bytes);
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG:   Total: 719 packets (2582923 bytes) demuxed
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG: Output file #0 (/storage/emulated/0/pauseRecordDemo/video/compress6.mp4):
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG:   Output stream #0:0 (video):
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG: 244 packets muxed (2335158 bytes);
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG:   Output stream #0:1 (audio):
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG: 473 packets muxed (238407 bytes);
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg V/TAG:   Total: 717 packets (2573565 bytes) muxed
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg D/TAG: 0 frames successfully decoded, 0 decoding errors
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg D/TAG: Statistics: 60 seeks, 764 writeouts
03-10 14:19:55.725 21706-22256/org.voiddog.ffmpeg D/TAG: Statistics: 2662503 bytes read, 2 seeks

效果

这个compress6.mp4就是从video.mp4切割出来的,video.mp4是31秒,compress6.mp4是10秒的时长,他们的体积大小吻合时间比例。

Android 音视频深入 二十一 FFmpeg视频剪切相关推荐

  1. Android基础知识(二十一):Android五大存储之文件存储、Content Provider存储和网络存储

    Android基础知识(二十一):Android五大存储之文件存储.Content Provider存储和网络存储 一.Android存储--持久化技术 数据持久化是指将那些内存中的瞬时数据保存到存储 ...

  2. CYQ.Data 轻量数据层之路 使用篇-MAction 数据查询 视频 D (二十一)

    2019独角兽企业重金招聘Python工程师标准>>> 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三)   的附加视频教 ...

  3. Android产品研发(二十一)--Android中的UI优化

    转载请标明出处:一片枫叶的专栏 上一篇文章中我们讲解了Android产品研发过程中的代码Review.通过代码Review能够提高产品质量,增强团队成员之间的沟通,提高开发效率,所以良好的产品开发迭代 ...

  4. Android 天气APP(二十一)滑动改变UI、增加更多天气数据展示,最多未来15天天气预报

    上一篇:Android 天气APP(二十)增加欢迎页及白屏黑屏处理.展示世界国家/地区的城市数据 前言   写APP是有很多细节需要处理的,这些细节可以提高你的APP的使用概率.这已经是第二十一篇文章 ...

  5. Gstreamer之gst_element_set_state (pipeline, GST_STATE_PLAYING)播放视频流程(二十一)

    1.GStreamer是什么? 众所周知,Microsoft's Windows和Apple's MacOS对多媒体设备.多媒体创作.播放和实时处理等方面都有很好的支持,而Linux对多媒体应用一直略 ...

  6. java视频切片_使用ffmpeg视频切片并加密和视频AES-128加密后播放

    创建加密文件:将一个mp4视频文件切割为多个ts片段,并在切割过程中对每一个片段使用AES-128 加密,最后生成一个m3u8的视频索引文件: 1.加密用的key(文件则保存当前目录) 指令:open ...

  7. 视频处理小技巧|ffmpeg视频命令行快速旋转视频

    拍视频没注意,横屏内容拍成了竖屏,变成这样了: 直接用剪映呢,旋转后大小不对,虽然也有办法可以调整,但以后还会用这些视频,所以决定修正原始视频. 想起以前用过的强大视频转换命令行工具ffmpeg, 应 ...

  8. Python-OpenCV 处理视频(二): 视频处理

    0x00. 使用 Canny 算法边缘识别 Canny 算法是一种多级边缘识别算法. Canny边缘识别算法可以分为以下5个步骤: 应用高斯滤波来平滑图像,目的是去除噪声. 找寻图像的强度梯度(int ...

  9. Android简明开发教程二十一:访问Internet 绘制在线地图

    在例子Android简明开发教程十七:Dialog 显示图像 中我们留了一个例子DrawMap()没有实现,这个例子显示在线地图,目前大部分地图服务器都是将地图以图片存储以提高响应速度. 一般大小为2 ...

最新文章

  1. C++多线程:thread类创建线程的多种方式
  2. Nhibernate 3.0 cookbook学习笔记 一对多与多对多映射
  3. php操作session
  4. python2和3的编码区别_Python2和3字符编码的区别
  5. mysql 自动分表_Mysql Event 自动分表
  6. 蓝桥杯 算法训练 安慰奶牛
  7. django在window和linux,从windows导入Django项目到linux时出错
  8. python35个关键字_Python必须了解的35个关键词
  9. Android 微信分享信息
  10. 有关STL使用上的一些注意事项。关于某些函数的参数问题。
  11. 电子仿真软件MultiSIM
  12. 算术逻辑运算单元ALU的串行和并行加法器
  13. 微信程序开发之小程序入门
  14. tablayout 滚动模式_Android底部导航栏(可滑动)----TabLayout+viewPager
  15. ToggleSwitch控件介绍
  16. 案例3 淘宝点击关闭二维码
  17. Java中long类型直接赋值大数字的问题
  18. leetcode题目1528. 重新排列字符串
  19. 图论-全源最短路径-对比Floyd算法与暴力Dijkstra算法
  20. [LeetCode/Scala] 第188场周赛

热门文章

  1. jquery-1.11.3.min.js —— jquery库
  2. 江恩 计算机,《相龙决江恩计算器2018》设计原理及超级功能
  3. ASP.NET MVC和Bootstrap制作一个员工信息表
  4. 机器学习课后题——线性回归模型
  5. DNS欺骗攻击、DDoS攻击、XSS攻击和SYN Flooding攻击
  6. 【HTML】一个简单的课程表
  7. nodejs Koa框架及常用中间件
  8. typecho安装教程
  9. [深度学习][原创]objects365类别名2021版
  10. windows11画画、绘画、画图软件在哪?