树莓派环境下使用python将h264格式的视频转为mp4
个人博客 地址:https://www.wenhaofan.com/a/20190430144809
下载安装MP4Box
命令行下执行以下指令安装MP4Box
sudo apt-get install gpac
代码
核心代码为使用 os.system 模块通过调用系统命令使用MP4Box将H264格式的视频转为MP4
import os
import random
import time
import ctcmsconf #初始化文件夹
def init_video_folder():
exist=os.path.exists(ctcmsconf.H264_PATH)
if not exist:
os.makedirs(H264_PATH)
exist=os.path.exists(ctcmsconf.MP4_PATH)
if not exist:
os.makedirs(ctcmsconf.MP4_PATH) #将h264视频转为mp4
def convert_to_mp4(source_path,target_path):
cmod='MP4Box -fps '+str(ctcmsconf.MP4_FPS)+' -add '+source_path+' '+target_path;
execute_state = os.system('MP4Box -fps '+str(ctcmsconf.MP4_FPS)+' -add '+source_path+' '+target_path);
print(cmod)
print(execute_state)
if execute_state==0:
return True
else:
return False #判断文件是否存在
def check_is_exist(path,suffix):
return os.path.exists(path+'.'+suffix) #生成mp4文件保存路径
def gen_mp4_filepath(filename=''):
if filename=='':
filename=gen_random_filename(ctcmsconf.MP4_PATH+'record-'+format_currrenttime('%Y%m%d%H%m%s'))
else:
filename=gen_random_filename(filename)
if check_is_exist(filename,'mp4'):
return gen_mp4_filepath(filename)
else:
return filename+'.mp4'
#生成h264文件保存路径
def gen_h264_filepath(filename=''):
if filename=='':
filename=gen_random_filename(ctcmsconf.H264_PATH+'record-'+format_currrenttime('%Y%m%d%H%m%s'))
else:
filename=gen_random_filename(filename)
if check_is_exist(filename,'h264'):
return gen_mp4_filepath(filename)
else:
return filename+'.h264' #生成随机文件名
def gen_random_filename(filename):
return filename+str(random.randint(0,10))
#格式化时间
def format_currrenttime(format='%Y-%m-%d %H:%M:%S'):
return time.strftime(format,time.localtime(time.time()))
ctcmsconf.py
H264_PATH='/home/pi/ctcms/record/h264/'; #将该路径修改为你本地h264文件的存储路径
MP4_PATH='/home/pi/ctcms/record/mp4/'; #将该路径修改为你本地mp4文件的存储路径
MP4_FPS=15; # FPS 视频帧率,该值越大视频所占空间也会越大,相应的会更流畅
树莓派环境下使用python将h264格式的视频转为mp4的更多相关文章
- Sublime Text3配置在可交互环境下运行python快捷键
安装插件 在Sublime Text3下面写代码感觉很不错,但是写Python的时候遇到了一些问题. 用Sublime Text3打开python文件,或者在Sublime Text3下写好pytho ...
- 4.1. 如何在Windows环境下开发Python
4.1. 如何在Windows环境下开发Python 4.1. 如何在Windows环境下开发Python 4.1.1. Python的最原始的开发方式是什么样的 4.1.1.1. 找个文本编辑器,新 ...
- Linux 环境下安装python相关
目录 Linux 环境下安装python相关 linux软件包管理工具之yum工具(如同pip3工具) yum源理解 下载阿里云的.repo仓库文件 ,放到/etc/yum.repos.d/ yum安 ...
- Centos7.4环境下搭建Python开发环境(虚拟机安装+python安装+pycharm安装)
目录 一.安装 Centos7.4虚拟机 二.安装 python3.6.7 三.安装 pycharm 一般情况下,大家都是在 Windows平台下进行 Python开发,软件安装和环境搭建都非常&qu ...
- 尚学python课程---11、linux环境下安装python注意
尚学python课程---11.linux环境下安装python注意 一.总结 一句话总结: 准备安装依赖包:zlib.openssl:yum install zlib* openssl*:pytho ...
- 尚学linux课程---10、linux环境下安装python
尚学linux课程---10.linux环境下安装python 一.总结 一句话总结: 直接在官网下载python的源码包即可,然后在linux下安装 linux下安装软件优先想到的的确是yum,但是 ...
- 从零开始Windows环境下安装python+tensorflow
从零开始Windows环境下安装python+tensorflow 2017年07月12日 02:30:47 qq_16257817 阅读数:29173 标签: windowspython机器学习te ...
- Docker环境下运行python+selenium+chrome
Docker环境下运行python+selenium+chrome docker运行时占用的资源非常少,而且能将环境进行有效的隔离,可以快速的进行部署,因此可以将docker与selenium结合实现 ...
- Win10 + VS2017 15.5.6 环境下解决 Python 3.6 环境无法刷新DB的问题
作为宇宙第一IDE,VS2017对Python的支持还算可以,虽然和PyCharm等Python专用IDE相比还有些差距,但是经过后续的更新升级,我相信VS2017将越来越完善.由于本人一直都是使用V ...
随机推荐
- 20200120--python学习第12天
今日内容 函数中高级(闭包/高价函数) 内置函数 内置模块(.py文件) 内容回顾 函数基础概念 a.函数基本结构 def func(arg): return arg v1 = func(123) b ...
- Java TreeMap使用方法
1.使用默认的TreeMap 构造函数,其中key值需要有比较规则. 2.使用默认的TreeMap 构造函数,Key中添加自定义类型,自定义类型必须继承Comparator. 3.使用比较器类来来实现 ...
- AtCoder Beginner Contest 156
https://atcoder.jp/contests/abc156/tasks A - Beginner #include <bits/stdc++.h> #define ll long ...
- shell 颜色输出
#!/bin/bash function display_method(){ clearDisplayMetho=0 if [ $displayMethod -eq 0 ]; then echo -e ...
- shell脚本自动备份MySQL数据库
脚本如下: #!/bin/bash #数据库IP dbserver='127.0.0.1' #数据库用户名 dbuser='root' #数据密码 dbpasswd=' #数据库,如有多个库用空格分开 ...
- css实现文字过长显示省略号的方法
<div class="title">当对象内文本溢出时显示省略标记</div> 这是一个例子,其实我们只需要显示如下长度: css实现网页中文字过长截取. ...
- getElementsByName和getElementById获取控件
js对控件的操作通常使用getElementsByName或getElementById来获取不同的控件进行操作 getElementsByName() 得到的是一个array, 不能直接设value ...
- Flume 自定义拦截器 多行读取日志+截断
前言: Flume百度定义如下: Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,F ...
- Android.bp文件简介
Android.bp是用来替换Android.mk的配置文件,它使用Blueprint框架来解析.Blueprint是生成.解析Android.bp的工具,是Soong的一部分.Soong则是专为An ...
- stlink 下载报错:Error Flash Download failed - "Cortext-M0+"
stlink 下载报错:Error Flash Download failed - "Cortext-M0+" 解决方法: STM32 ST-LINK Utility 用这个软件把 ...