cygwin和ffmpeg的下载地址:

https://cygwin.com/install.html

http://www.ffmpeg.org/download.html

标题看上去有些无厘头,然而事实也是如此。事出本因是自己用维棠下载网页视频时速度很是不快,于是复制出来原始的下载地址贴到迅雷上去下载。速度一下提高了很多。但是由于网页上的某些视频是分段下载的,比如一个你在线看视频时服务器其实是将视频拆成几个段落分别下发给客户端(浏览器),这样就涉及一个问题:下载到本地后需要将分段视频合并成一个。维棠当然是有这样的功能,它会自动帮你完成,不过为了提高下载速度而选择迅雷的我就要另想办法了。

因为记得有个开源的视频处理工具ffmpeg好像有类似功能,上网搜索了下发现它确实具备合并视频的能力。同样也找到了具体操作的方法:http://www.cnblogs.com/gmapapi/archive/2013/01/18/2866405.html

本来也是有别人做好的什么“mp4合并器”之类的工具,但是自己来感觉更geek,哈哈。下载并安装好ffmpeg,在cmd按如下操作即可:

ffmpeg -i .mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb .ts
ffmpeg -i .mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb .ts
ffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4

PS:ffmpeg先将mp4文件封装成ts,然后再合并ts流为mp4。

至于为什么跟cygwin扯上关系是这样的,因为不太喜欢cmd,所以在win7上安装了cygwin。因为这个ffmpeg合并mp4的过程每次都手动输入的话还是很麻烦的,所以写了个shell脚本。有朋友会讲那你为什么舍近求远不用bat,答案很简单:不会。

#! /bin/bash
#what: merge mp4 files into output.mp4
#usage: mmp4 -i mp4files [-o output.mp4]
# e.g: mmp4 xxx..mp4 xxx..mp4 xxx..mp4 -o yyy.mp4
# output: yyy.mp4, default output.mp4 declare -a VIDEOS
CONCAT=""
OUTPUT=""
COUNT= if [ $# -eq ]; then
echo "usage: mmp4 -i mp4files [-o output.mp4]"
exit
elif [ "$1" != "-i" ]; then
echo "usage: mmp4 -i mp4files [-o output.mp4]"
exit
else
shift
until [ $# -eq -o "$1" == "-o" ]
do
VIDEOS[$COUNT]="$1"
let COUNT++
shift
done
if [ "$1" == "-o" ]; then
shift
if [ "$1" != "" ]; then
OUTPUT="$1"
else
echo "usage: mmp4 -i mp4files [-o output.mp4]"
exit
fi
else
OUTPUT="output.mp4"
fi
if [ $COUNT -eq ]; then
echo "usage: mmp4 -i mp4files [-o output.mp4]"
exit
fi
fi for VIDEO in ${VIDEOS[@]}
do
ffmpeg -loglevel -i "$VIDEO" -vcodec copy -acodec copy -vbsf h264_mp4toannexb ${VIDEO%.*}.ts
CONCAT=$CONCAT"|${VIDEO%.*}.ts"
done ffmpeg -loglevel -i "concat:${CONCAT:1}" -acodec copy -vcodec copy -absf aac_adtstoasc $OUTPUT
rm *.ts

保存上述代码为mmp4.sh,然后在cygwin下创建个链接/usr/bin/mmp4,就可以使用了。

mmp4 xxx..mp4 xxx..mp4 xxx..mp4

PS:合并xxx.1/2/3.mp4到output.mp4

啊,好像说来跟cygwin没什么关系。为了避免文不对题,还是再记录下cygwin的部分事宜:

1、cygwin的安装源,可以使用国内的http://mirrors.163.com这样安装时会快一些。

2、安装cygwin上非默认而不存在的工具时(比如curl),可以打开cygwin的setup程序,在选择package时输入自己想安装的工具,状态都改成install然后安装即可。

3、cygwin在使用本地命令显示中文乱码,可在标题框右键选择options,设置Text:locale=C, Character-set=GBK

cygwin和ffmpeg的两三事的更多相关文章

  1. cygwin编译ffmpeg移植到android平台问题集锦

    编译环境: windows xp Cygwin 1.1.3.1 NDK r9 1.提示各种command not found 比如 ./config.sh: line 6: $'--arch=arm\ ...

  2. Cygwin 编译 ffmpeg

    1.在官网下载linux下的压缩包 https://ffmpeg.zeranoe.com/builds/source/ffmpeg/ffmpeg-3.2.4.tar.xz 2.进入cygwin,假定将 ...

  3. Windows环境下使用cygwin ndk_r9c编译FFmpeg

     一.废话 最近学习,第一步就是编译.我们需要编译FFmpag,x264,fdk_aac,一步步来.先来讲一下FFmpeg,网上说的很多都是几百年前的,我亲测完美可用 联系我可以直接评论,也可以加我Q ...

  4. android之ffmpeg:设置cygwin

    开发android ndk 的时候需要一个编译工具编译c程序,ndk需要linux下编译,所以win环境下提供Cygwin模拟linux编译C android-ndk 较低版本的这个工具的配置网上很多 ...

  5. Windows下FFmpeg各版本库文件下载

    ffmpeg主要是基于linux开发,当然它也支持windows,不过并不支持visual studio系列IDE(因为它使用了大量C99特性,而vs不支持C99). 要想在windows上使用 一可 ...

  6. Cygwin VS MinGW

    首先MingW和cygwin都可以用来跨平台开发.  MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC.  Cygwin则是全面模拟了Linux的接口 ...

  7. mingW与cygwin

    转自:http://hi.baidu.com/ooxxer/item/d25dccc072846a50ac00ef7e# 首先MingW和cygwin都可以用来跨平台开发.  MinGW是Minima ...

  8. 开源项目:FFmpeg

    ffmpeg命令行使用 将JPG格式图片转成YUV420P格式: ffmpeg -i Z:\demo\pic.jpg -s 720x480 Z:\demo\pic.yuv 解码H265成YUV420 ...

  9. Cygwin,Mingw

    MinGW vs Cygwin MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC. Cygwin则是全面模拟了Linux的接口,提供给运行在它上面的的 ...

随机推荐

  1. Log4j2 — Log4j2导入、LogEvent、配置文件编写及路径

    1. Log4j2的导入 首先到http://logging.apache.org/log4j/2.x/download.html 上下载最新的log4j2的jar包,然后再eclipse中加入log ...

  2. 字符串和整形数组的相互转化(JAVA程序)

    package te; public class StringConvert { static int[] a = {0,1,1,0,1,1,0,2}; static String s = " ...

  3. One day one cf,Keep Wa away from me.

    Codeforces Round #379 (Div. 2) A水,算字符个数 B水,贪心优先组成后者 C贪心尺取,以消耗排序change那个,然后贪心另一个 D对角线就是x0+y0 == x1+y1 ...

  4. 简易数据加密传输电路(VHDL)(原创)

    LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.std_logic_unsigned.ALL; ENTITY KEKE IS --定义实体wsj ...

  5. struts2.1.6教程十二、总结

    本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例. 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官 ...

  6. bytes与str

    Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str ...

  7. WCF(远程服务器返回错误: 400 错误的请求)

    类似相关问题有以下: WCF- restful接口 POST方式调用报错(远程服务器返回错误: 400 错误的请求) WCF Rest:不使用UriTemplate使用post方式传参解决HTTP40 ...

  8. 基于dubbo的SSM(Spring,SpringMvc,Mybatis)整合的Maven多工程(下)

    上篇是SSM的maven单工程(http://www.cnblogs.com/yuanjava/p/6748956.html).中篇是 SSM的maven多工程(http://www.cnblogs. ...

  9. Weighted Effect Coding: Dummy coding when size matters

    If your regression model contains a categorical predictor variable, you commonly test the significan ...

  10. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...