剪切/拼接视频文件是一种常见需求。在线视频网站现在往往将一个视频文件分割成 n 段,以减少流量消耗。使用 DownloadHelper/DownThemAll 这类工具下载下来的往往就是分割后的文件。能实现剪切/拼接视频文件的工具多种多样,但往往都需要进行视频重编码(transcoding),这就不可避免的带来了视频质量上的损耗,更不用提那长的令人发指的转换时间了…

其实借助 ffmpeg 我们就可以在不进行视频重编码的情况下完成此类任务:

剪切:

ffmpeg -i input.mp4 -ss **START_TIME** -t **STOP_TIME** -acodec copy -vcodec copy output.mp4

其中 START_TIME/STOP_TIME 的格式可以写成两种格式:

以秒为单位计数: 80

时:分:秒: 00:01:20

拼接 :

拼接的情况稍微复杂些,我们需要将需要拼接的视频文件按以下格式保存在一个列表 list.txt 中:

file '/path/to/file1'

file '/path/to/file2'

file '/path/to/file3'

相应的命令为:

ffmpeg -f concat -i **list.txt** -c copy output.mp4

由于不需要重编码,这两条命令几乎是即时完成的。

#!/bin/bash

#cut/join videos using ffmpeg without quality loss

if [ -z $1 ] || [ -z $2 ]; then

echo "Usage:$0 c[ut] seconds "

echo " eg. $0 c 10 80 example.mp4"

echo " eg. $0 c 00:00:10 00:01:20 example.mp4"

echo "Usage:$0 j[oin] "

echo " eg. $0 j avi"

exit

fi

case "$1" in

c)

echo "cuttig video..."

fileName=$(echo $4 | cut -f 1 -d '.')

fileType=$(echo $4 | cut -f 2 -d '.')

ffmpeg -i $4 -ss $2 -t $3 -acodec copy -vcodec copy $fileName-$2-$3.$fileType

;;

j)

echo "joinning videos..."

rm temp_list.txt

for f in ./*.$2; do echo "file '$f'" >> temp_list.txt; done

printf "file '%s'\n" ./*.$2 > temp_list.txt

ffmpeg -f concat -i temp_list.txt -c copy output.$2

rm temp_list.txt

;;

*)

echo "wrong arguments"

;;

esac

exit

以上拼接操作生效的前提是,所有视频文件的格式编码相同,如果需要拼接不同格式的视频文件可以借助以下脚本:

https://gist.github.com/imcaspar/8778002

ffmpeg 拼接mp4_通过 ffmpeg 无损剪切/拼接视频相关推荐

  1. linux视频拼接工具,linux中使用ffmpeg 无损剪切/拼接视频程序

    剪切/拼接视频文件是一种常见需求.在线视频网站现在往往将一个视频文件分割成 n 段,以减少流量消耗.使用 DownloadHelper/DownThemAll 这类工具下载下来的往往就是分割后的文件. ...

  2. 通过 ffmpeg 无损剪切/拼接视频

    剪切/拼接视频文件是一种常见需求.在线视频网站现在往往将一个视频文件分割成 n 段,以减少流量消耗.使用 DownloadHelper/DownThemAll 这类工具下载下来的往往就是分割后的文件. ...

  3. ffmpeg 无损 剪切 分割 视频

    ffmpeg -ss START -t DURATION -i INPUT -vcodec copy -acodec copy OUTPUT 例如: ffmpeg -ss 0:0:21 -t 0:0: ...

  4. FFmpeg命令(一)、使用filter_complex命令拼接视频

    FFmpeg使用filter_complex命令拼接多个视频 filter_complex 拼接两个视频 三个视频拼接 四个视频2x2方式排列 filter_complex filter_comple ...

  5. 使用ffmpeg根据开始和结束时间剪切视频

    本文翻译自:Cutting the videos based on start and end time using ffmpeg I tried to cut the video using the ...

  6. Android实现视频剪切、视频拼接以及音视频合并

    因公司项目有需求,要实现视频剪切,视频拼接以及音视频合并的功能,自己通过在网上查找大量的资料终于把功能实现了,把实现的公共类提取出来,以便以后复习巩固. 使用map4parser作为视频处理包,and ...

  7. Mac使用ffmpeg将.mkv等格式无损转换为.mp4

    Mac使用ffmpeg将.mkv等格式无损转换为.mp4 Mac使用ffmpeg将.mkv等格式无损转换为.mp4 使用脚本批量转换 #! /bin/bash for i in *.mkv; doff ...

  8. python 拼接图片_python使用PIL剪切和拼接图片

    本文实例为大家分享了python使用PIL剪切图片和拼接图片的具体代码,供大家参考,具体内容如下 因工作需要,接触到了PIL这个包,看其他人的博客踩了一些坑,有些博客并没有注明各个位置参数的含义,今天 ...

  9. 音频剪切拼接软件哪个好?给你分享四款音频剪切拼接软件

    大家在给时长较长的视频制作背景音乐的时候,会不会经常需要将几段音频裁剪后再使用呢?毕竟有时我们并不需要添加一整段音频来使用.那你们知道音频要怎么剪切拼接吗?其实有个很简单方法,只要借助一些音频编辑软件 ...

最新文章

  1. python简单代码演示效果-用python画爱心及代码演示
  2. 多任务学习有用的资料
  3. 第一讲,Python的安装(干货)
  4. ASP.NET Web Froms开发模式中实现程序集的延迟加载
  5. linux 内核级资源查看,Linux资源管理
  6. MyBatis基本例子-实现增删改查
  7. python解包wxapkg_微信小程序wxapkg解包器c++版(免装py环境 绿色90k)
  8. ASP.NET2.0服务器控件之自定义状态管理
  9. 基于Windows 7环境的WAPI无线网络应用层控制实现
  10. python 设备ArtNetToDMX512的协议测试
  11. Error: Cannot find module ‘webpack‘
  12. Mysql的锁类型有哪些?
  13. 云上PDF怎么删除页眉页脚_有办法了!批量删除多个Word页眉页脚
  14. cheng@ARM结构与编程之day3-MOV LSL
  15. 计算机毕业设计之java+ssm学生网上请假系统
  16. 51单片机仿真——中断系统(2)
  17. 向量复习(一):定义、求解、四则运算、点积和叉积
  18. Cointelegraph| 安全多方计算对早期隐私格局的影响
  19. 【箱型图】如何看箱型图
  20. 计算机安全审计定义,计算机软考考试必备知识点:安全审计

热门文章

  1. mac os 更改mac地址
  2. jenkins cicd k8s 多分支流水线构建
  3. MapGuide 和 Google Map
  4. infrastructure as a service
  5. python计算圆周率近似值_使用python实现计算圆周率π的方法
  6. 主板维修从入门到精通
  7. 增长率超 100%!东软数据可视化到底什么样?
  8. Mysql CASE方法条件怎么加and或or
  9. python 离线安装驱动
  10. mac安装matlab提示libmwlmgrimpl.dylib文件已损坏