python+ffmpeg截取视频段

http://blog.csdn.net/yang_xian521/article/details/7440190

cv2.videowriter缺点:只能写avi格式,视频大小不能超过2G,没有音频,上面这个博客介绍了opencv写视频


下载ffmpeg的压缩包,直接解压

下载地址:http://ffmpeg.zeranoe.com/builds/ 。下载Windows版本的FFmpeg


建议采用python+ffmpeg截取视频段,但是当视频文件路径含中文时出错,中文乱码。Python用subprocess调用乱码问题。

解决方法:视频文件路径编码:unicode

在利用subprocess.call时再encode一下cmd


md = ffmpegPath + ' -y -i ' + CurMediaPath.decode('utf-8') + ' -ss ' + videoStartTime + ' -t ' + videoEndTime +\
	' -acodec copy -vcodec copy -async 1 ' + videoSaveDir.decode('utf-8')
subprocess.call(cmd.encode(sys.getfilesystemencoding()), shell=True)

CurMediaPath和videoSaveDir开始是utf-8,decode之后为unicode

ffmpegPath:ffmpegPath解压路径

-ss: 截取视频的开始时间

-t:截取视频的结束时间


指定路径时:

import subprocess

subprocess.call('C:/Users/liesmars/Desktop/QS02016/SRC/External/bin/ffmpeg.exe -y -i C:/Users/liesmars/Desktop/b.mp4 -ss 00:00:0.0 -t 00:00:40.0 -acodec copy -vcodec copy -async 1 C:/Users/liesmars/Desktop/b3.mp4')

print 'over'


剪切的同时,格式不变,音视频参数不变:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -acodec copy -vcodec copy -async 1 bjysxyt1.mp4


剪切的同时,音视频参数不变,只转换格式:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -acodec copy -vcodec copy -async 1 bjysxyt1.flv


剪切的同时,格式不变,只转换音视频参数:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -ab 56k -ar 44100 -b:v 2200k -r 29.97 -s 640x360 bjysxyt1.mp4


剪切的同时,既转换格式又转换音视频参数:ffmpeg -y -i bjysxyt5.mp4 -ss 00:00:00.0 -t 00:01:00.0 -ab 56k -ar 44100 -b:v 2200k -r 29.97 -s 640x360 bjysxyt1.flv

说明:-i表示输入文件;-acodec copy -vcodec copy 表示音频、视频不进行编解码,直接复制源视频;-ss表示起始时间,-t表示时长,格式均为“小时:分钟:秒”。


ffmpeg可参考博客:http://yuanhuan.blog.51cto.com/3367116/1246370

你可能感兴趣的:(python)