python使用ffmpeg批量将flv转mp4

python使用ffmpeg批量将flv转mp4

体积小

如果需要体积比较小,可以将h265格式的mp4封装。60M转为40M,花了583.61s,太慢了。

# 
# ffmpeg -i test.flv -c:v libx265 -c:a copy -crf 20 test.mp4

把coderStr 的值改成下面这个。

 coderStr = " -c:v libx265 -c:a copy -crf 20 "

速度快

如果需要速度快,直接复制原数据。速度最快。体积没多大变化。

# ffmpeg -i test.flv -vcodec copy -acodec copy test3.mp4

脚本

用命令行批量转时,遇到了一些文件名含空格出错的事情。所以,这里通过python循环来批量执行命令。
脚本如下

import os
from os import path as mpath
import time


def ffmpeg_updatefile(path ,coderStr ,oldFormat ,newFormat ):
    # 获取文件路径,获取文件名称列表
    source = mpath.normpath(path)
    videoList = os.listdir(source)
    videoListTemp = [];

    # 只选择目录下的mkv文件
    for Sname in videoList:
        if Sname.endswith(oldFormat):
            videoListTemp.append(Sname)

    # 执行ffmpeg命令
    for i in videoListTemp:
        oldname = i
        oldname = os.path.join(path,oldname)
        
        output  = i[0:-4]
        newname = output + newFormat
        newname = os.path.join(path,newname)
        
        otherStr = " "
        cmd = "ffmpeg -i "+ otherStr +"\""+ oldname +"\" "+ coderStr +" \""+ newname + "\""
        #os.system(cmd)
        #time.sleep(12)
        print(cmd)
        
    
    pass
    
    
if __name__ == '__main__':
    #path = r'F:\result\video2'
    #当前目录
    path = os.getcwd()
    oldFormat = '.flv'
    newFormat = '.mp4'
    coderStr = " -vcodec copy -acodec copy "
    ffmpeg_updatefile(path,coderStr,oldFormat,newFormat)   

    

ffmpeg常用命令

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件] 

参数选项: 
(1) -an: 去掉音频 
(2) -vn: 去掉视频 
(3) -acodec: 设定音频的编码器,未设定时则使用与输入流相同的编解码器。音频解复用在一般后面加copy表示拷贝 
(4) -vcodec: 设定视频的编码器,未设定时则使用与输入流相同的编解码器,视频解复用一般后面加copy表示拷贝 
(5) –f: 输出格式(视频转码)
(6) -bf: B帧数目控制 
(7) -g: 关键帧间隔控制(视频跳转需要关键帧)
(8) -s: 设定画面的宽和高,分辨率控制(352*278)
(9) -i:  设定输入流
(10) -ss: 指定开始时间(0:0:05(11) -t: 指定持续时间(0:05(12) -b: 设定视频流量,默认是200Kbit/s
(13) -aspect: 设定画面的比例
(14) -ar: 设定音频采样率
(15) -ac: 设定声音的Channel数
(16)  -r: 提取图像频率(用于视频截图)
(17) -c:v:  输出视频格式
(18) -c:a:  输出音频格式
(18) -y:  输出时覆盖输出目录已存在的同名文件


-vcoder 设定视频的编码器,未设定时则使用与输入流相同的编解码器

参考资料

ffmpeg常用命令

你可能感兴趣的:(ffmpeg,python,开发语言)