标题: [原创] [20230511更新]老刘常用的FFmpeg命令 [打印本页]
作者: 老刘1号 时间: 2019-11-11 13:15 标题: [20230511更新]老刘常用的FFmpeg命令
本帖最后由 老刘1号 于 2023-5-12 18:58 编辑
不定期更新。
注意:ffmpeg的参数位置不同,意义不同,请不要改变参数位置。
中文文档(2018)
官方帮助
ffmpeg Documentation
ffplay Documentation
ffprobe Documentation
MPV Manual
离线帮助:
ffmpeg -h -- print basic options
ffmpeg -h long -- print more options
ffmpeg -h full -- print all options (including all format and codec specific options, very long)
ffmpeg -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf
视频转码为H.264/H.265编码(软编码,固定码率)
软编解码,封装格式mp4,视频流转h264编码,码率300k;音频流转mp3,码率32k。
参数介绍:
-vcodec:指定视频编码器,可简写为-c:v。
可以指定编码器为libx265,编码更慢,但在码率减少51-74%的情况下,H.265编码视频的质量还能与H.264编码视频近似甚至更好。
-acodec:指定音频编码器,可简写为-c:a。
-b:a:指定音频流的码率。
-b:v:指定视频流的码率。
以下为libx264编码器的参数:
-preset:品质,此处指定为faster。
可选:ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo
品质高于ultrafast,效果就比一般转码软件好。低码率也很清晰。
-tune:优化,此处指定为film。
可选:
film:电影真人类型
animation:动画
grain:需要保留大量的grain
stillimage:静态图像编码时使用
psnr:提高psnr做了优化的参数
ssim:提高ssim做了优化参数
fastdecode:可以快速解码的参数
zerolatency:零延迟,用在需要非常低的延迟的情况,比如电视电话会议编码
其它没有加进去的参数:
-r:修改帧率
-s:修改尺寸(如-s 1920x1080)
-ss:视频开始时间。(-ss hh:mm:ss[.xxx])
-t:持续时间(-t hh:mm:ss[.xxx]或-t 秒数)
-to:截止时间。(-to hh:mm:ss[.xxx])- FFMPEG -i "%~1" -vcodec libx264 -preset faster -tune film -b:v 300k -c:a libmp3lame -b:a 32k "%~dp1(new)%~n1.MP4"
复制代码
视频转码为H.264/H.265编码(动态码率)
软编码器(兼容性较好,CPU占用大):
编码器名:libx264、libx265
参数:指定-crf(一般18就可以),-preset只决定最终文件大小,不影响视频质量。
参数详解:
设定CRF值,来确定画质。
数字越小画质越高,数字越大画质越差,一般在设定在16-24之间。
在其他参数不变的情况下,CRF值每减小6,输出的文件会变大一倍左右。
接着设定 Preset,来确定编码速度。
编码越快,生成的文件越大;编码越慢,文件越小。
一般设定在faster-slower之间。CRF模式下不影响画质,只和编码速度、文件大小有关。
硬编码器(兼容性一般,CPU占用低,编码速度快):
Intel QuickSync
编码器名:h264_qsv、hevc_qsv
参数:
h264_qsv:preset=veryslow,profile=high,look_ahead=1,global_quality=18
hevc_qsv:preset=veryslow,profile=main,look_ahead=1,global_quality=18
AMD AMF(首先你需要有A卡)
编码器名:h264_amf、hevc_amf
参数:
h264_amf:b=10000000,quality=quality,profile=high,rc=vbr_peak,maxrate=13000000,bufsize=20000000
hevc_amf:b=10000000,quality=quality,profile=main,rc=vbr_peak,maxrate=13000000,bufsize=20000000
Nvidia NVENC(首先你需要有N卡)
编码器名:h264_nvenc、hevc_nvenc
参数:
h264_nvenc:b=10000000,preset=slow,profile=high,rc=vbr_hq,maxrate=13000000,bufsize=20000000
hevc_nvenc:b=10000000,preset=slow,profile=main,rc=vbr_hq,maxrate=13000000,bufsize=20000000
SVP 4 插帧转码提取版(无水印)
ffff.py与转码参数的对应
最终视频帧率
=src_fps*smoothfps_params.rate.num/smoothfps_params.rate.den
num和den是整数。
SVP着色器
最快:algo:1
锐利(适用于动画):algo:2
分块(仅使用CPU):block:true,algo:11
简单清淡:algo:11
简单:algo:21,mask:{cover:80}
标准:algo:13
复杂:algo:23,mask:{cover:80}
帧插补
恒定帧间隔(流畅):scene:{mode:0}
“2m”伪影最小:scene:{mode:2}
“1.5m”少量伪影:scene:{limits:{m1:0,m2:0}}
“1m”普通模式:scene:{mode:1}
自适应
1m-1.5m-2m:scene:{adaptive:321}
1m-1m-2m:scene:{adaptive:331}
恒定帧间隔-1m-1.5:scene:{}
恒定帧间隔-1m-2m:scene:{adaptive:310}
- ::插帧软件SVP 4视频插帧转码提取版。
- ::二倍帧率。
- ::需要安装了SVPcode的SVP 4运行。
- ::需要ffff.py。
- >"%~dp0fps.txt" ffprobe ^
- -v error ^
- -select_streams v ^
- -of default=noprint_wrappers=1:nokey=1 ^
- -show_entries stream=r_frame_rate ^
- "%~f1"
- Start /Wait "" "C:\Users\lenovo\Desktop\SVP\SVP 4\mpv64\mpv.exe" ^
- "%~f1" --o="%~dpn1.MKV" ^
- --no-sub --no-sub-auto ^
- --input-ipc-server=mpvencodepipe ^
- --input-media-keys=no ^
- --no-msg-color ^
- --vf=vapoursynth:[%~dp0ffff.py]:4:8 ^
- --of=matroska ^
- --ovc=libx264 --ovcopts=preset=slower,crf=30,threads=8 ^
- %--oac=libmp3lame% %--oacopts=b=32k% --no-audio
- del "%~dp0fps.txt"
- ffmpeg -i "%~dpn1.MKV" -i "%~f1" -map 0:v -c:v copy -map 1:a -c:a copy "%~dp1NEW.%~n1.MP4"
- del "%~dpn1.MKV"
复制代码
- #ffff.py
- #插帧软件转码提取版所需的脚本。
- f = open('C:\\Users\\lenovo\\Desktop\\SVP\\fps.txt')
- src_fps = eval(f.read())
- f.close()
-
- # This script was generated by SVP 4 Manager.
- # Check https://www.svp-team.com for more details.
-
- import vapoursynth as vs
- core = vs.get_core(threads=8)
-
- core.std.LoadPlugin("C:\\Users\\lenovo\\Desktop\\SVP\\SVP 4\\plugins64\\svpflow1_vs.dll")
- core.std.LoadPlugin("C:\\Users\\lenovo\\Desktop\\SVP\\SVP 4\\plugins64\\svpflow2_vs.dll")
-
- clip = video_in
-
- super_params = "{scale:{up:0},gpu:1,rc:true}"
- analyse_params = "{block:{w:8},main:{search:{coarse:{distance:-12,bad:{sad:2000}},type:2}},refine:[{thsad:250}]}"
- smoothfps_params = "{gpuid:11,gpu_qn:2,rate:{num:2,den:1},algo:23,mask:{cover:80},scene:{mode:0}}"
-
- #src_fps = 25
- demo_mode = 0
- stereo_type = 0
- nvof = 0
-
- ########## BEGIN OF base.py ##########
- # This file is a part of SmoothVideo Project (SVP) ver.4
- # This is NOT the full Vapoursynth script, all used variables are defined via
- # JScript code that generates the full script text.
-
- def interpolate(clip):
- # input_um - original frame in 4:2:0
- # input_m - cropped and resized (if needed) frame
- # input_m8 - input_m converted to 8-bit
- input_um = clip.resize.Point(format=vs.YUV420P8,dither_type="random")
- input_m = input_um
- input_m8 = input_m
-
- if nvof:
- smooth = core.svp2.SmoothFps_NVOF(input_m,smoothfps_params,nvof_src=input_m8,src=input_um,fps=src_fps)
- else:
- super = core.svp1.Super(input_m8,super_params)
- vectors = core.svp1.Analyse(super["clip"],super["data"],input_m8,analyse_params)
- smooth = core.svp2.SmoothFps(input_m,super["clip"],super["data"],vectors["clip"],vectors["data"],smoothfps_params,src=input_um,fps=src_fps)
-
-
- if demo_mode==1:
- return demo(input_m,smooth)
- else:
- return smooth
-
- if stereo_type == 1:
- lf = interpolate(core.std.CropRel(clip,0,(int)(clip.width/2),0,0))
- rf = interpolate(core.std.CropRel(clip,(int)(clip.width/2),0,0,0))
- smooth = core.std.StackHorizontal([lf, rf])
- elif stereo_type == 2:
- lf = interpolate(core.std.CropRel(clip,0,0,0,(int)(clip.height/2)))
- rf = interpolate(core.std.CropRel(clip,0,0,(int)(clip.height/2),0))
- smooth = core.std.StackVertical([lf, rf])
- else:
- smooth = interpolate(clip)
- ########### END OF base.py ###########
-
-
- smooth = smooth.resize.Point(format=vs.YUV420P8)
- smooth.set_output()
复制代码
例子/自用小程序
视频、音频转mp3(就是这么简单粗暴)- for %%a in (%*) do ffmpeg -i "%%~fa" "%%~dpna.MP3"
复制代码
二倍速处理音频- ffmpeg -i "%~1" -filter:a "atempo=2.0" -vn "%~dp1(二倍速)%~nx1"
复制代码
- ::无损视频合并
- ::用法:按顺序拖入要合并的视频文件,然后回车。完成后按Ctrl+Z再回车,拖入输出路径。
- ::要求:音频编码为AAC。
- @echo off
- Setlocal enabledelayedexpansion
- ::CODER BY 老刘 POWERD BY iBAT
- copy con "%temp%\list.tmp">nul
- set /p outputpath=输出路径:
- set /a n=1
- for /f "delims=" %%. in ('type "%temp%\list.tmp"') do (
- ffmpeg -i "%%~f." -c:v copy -c:a copy -vbsf h264_mp4toannexb -y "%temp%\!n!.ts"
- Set "concat=!concat!%temp%\!n!.ts|"
- Set /a n+=1
- )
- ffmpeg -i "concat:!concat:~,-1!" -acodec copy -vcodec copy -absf aac_adtstoasc "!outputpath:"=!\output.mp4"
- pause
复制代码
音频混音
改volume可以调整两个音频的音量,保证混音效果- @echo off
- Setlocal enabledelayedexpansion
- ::CODER BY 老刘 POWERD BY iBAT
- ffmpeg -i "H:\db.MP3"^
- -ss 00:00:03.15 -i "D:\我的文档目录\Tencent Files\632171029\FileRecv\MobileFile\音频录制2019-07-18 21-33-49.wav"^
- -filter_complex "[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=1[a0]; [1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=1[a1]; [a0][a1]amerge=inputs=2[aout]" -map "[aout]" -ac 2 -y h:\mix_v0.5.mp3
- pause
复制代码
录制桌面(无音频流(无声音),FPS(帧率) 6)- ffmpeg.exe -f gdigrab -framerate 6 -i desktop out.mp4
复制代码
M3U8下载并合并为视频
FLV- "ffmpeg.exe" -threads 0 -i "URL" -c copy -y -f f4v -bsf:a aac_adtstoasc "1.flv"
复制代码
MKV- "ffmpeg.exe" -threads 0 -i "URL" -c copy -y -bsf:a aac_adtstoasc "1.mkv"
复制代码
MP4- "ffmpeg.exe" -threads 0 -i "%~1" -c copy -y -bsf:a aac_adtstoasc "1.mp4"
复制代码
TS- "ffmpeg.exe" -threads 0 -i "URL" -c copy -y -f mpegts "1.ts"
复制代码
- ::效果不好弃用,替代命令见下:
- ::https://bbs.kafan.cn/thread-2210091-1-1.html
- ::视频剪辑合并
- ::用法:
- ::1、第一个分段中一定要有关键帧(不要截太短),否则会合并失败,变成只有音频流的mp4。
- ::2、分段信息例: 1:37-7:21 8:40~10:00 (冒号全角半角都可,-或~分割起始点和终点,空格分隔每一段)
- ::缺点:剪切的视频开头有黑屏或卡顿,因为ffmpeg无法seek到关键帧上。
- ::优点:不用转码,剪辑真的很快;可编程,可自动化,适合批量粗略剪辑。
- @echo off
- Setlocal enabledelayedexpansion
- :start
- ::CODER BY 老刘 POWERD BY iBAT
- set /p Filepath=视频文件路径:
- set "FilePath=!FilePath:"=!"
- Set /p SplitInfo=分段信息:
-
- set SplitInfo=!SplitInfo:-=~!
- set SplitInfo=!SplitInfo::=:!
- set /a n=1
- rem set concat=
- cd.>%temp%\concatlist
- for %%a in (!SplitInfo!) do (
- for /f "tokens=1-2 delims=~" %%b in ("%%a") do (
- for /f "tokens=1-2 delims=:" %%d in ("%%b") do (
- set SplitFromMinute=%%d
- if "!SplitFromMinute:~1!" Equ "" set SplitFromMinute=0%%d
- set SplitFromSecond=%%e
- if "!SplitFromSecond:~1!" Equ "" set SplitFromSecond=0%%e
- if "!SplitFromMinute!:!SplitFromSecond!" Equ "00:00" set SplitFromSecond=01
- )
-
- for /f "tokens=1-2 delims=:" %%d in ("%%c") do (
- set SplitToMinute=%%d
- if "!SplitToMinute:~1!" Equ "" set SplitToMinute=0%%d
- set SplitToSecond=%%e
- if "!SplitToSecond:~1!" Equ "" set SplitToSecond=0%%e
- )
- Echo 截取分段 !n! : !SplitFromMinute!:!SplitFromSecond! -^> !SplitToMinute!:!SplitToSecond!
- for %%A in ("!Filepath!") do (
- rem >nul 2>nul
- >nul 2>nul ffmpeg ^
- -i "%%~fA" ^
- -ss !SplitFromMinute!:!SplitFromSecond! ^
- -to !SplitToMinute!:!SplitToSecond! ^
- -c:v copy ^
- -c:a copy ^
- %-vbsf% %h264_mp4toannexb% ^
- -y ^
- "%temp%\!n!.ts.mp4"
- rem Set "concat=!concat!%temp%\!n!.ts.mp4|"
- echo file '%temp%\!n!.ts.mp4' >>"%temp%\concatlist"
- Set /a n+=1
- )
- )
- )
- rem notepad %temp%\concatlist
- rem exit
- Set /a n-=1
- for %%A in ("!Filepath!") do (
- ren "%%~fA" "%%~nA.old"
- echo 合并 !n! 个分段
- rem >nul 2>nul
- >nul 2>nul ffmpeg ^
- -f concat ^
- -safe 0 ^
- -i "%temp%\concatlist" ^
- -vcodec copy ^
- -acodec copy ^
- -y ^
- "%%~fA"
- )
- echo.
- goto start
-
-
- rem 以下命令已弃用,仅作备份
- ffmpeg ^
- -i "concat:!concat:~,-1!" ^
- -vcodec copy ^
- -absf aac_adtstoasc ^
- -acodec copy ^
- -y ^
- "%%~fA"
复制代码
- ::音频去噪
- ::用法:媒体文件拖到bat上,然后按提示输入参数
- @echo off
- Setlocal enabledelayedexpansion
- ::CODER BY 老刘 POWERD BY iBAT
- set /p t=噪音出现时间点(MM:SS):
- set /p x=去噪效果(0~1,推荐0.2~0.3):
- ffmpeg -i "%~1" "%tmp%\origin.wav"
- ffmpeg -i "%~1" -ss 00:!t! -t 1 "%tmp%\noise.wav"
- sox "%tmp%\noise.wav" -n noiseprof "%tmp%\noise.prof"
- sox "%tmp%\origin.wav" "%~dp1[NO_Noise]%~n1.wav" noisered "%tmp%\noise.prof" !x!
- pause
复制代码
- ::视频音量调整
- ::音频编码会被转为mp3
- @set /p vpath=拖入视频路径:
- @set /p volume=输入音量增幅(单位dB):
- @set /p audio_bitrate=输入音频码率(单位kbps):
- @Call :处理 "%vpath:"=%"
- @Exit
- :处理
- @ffmpeg -i "%~1" -c:v copy -c:a libmp3lame -b:a %audio_bitrate%k -af "volume=%volume%dB" "%~dp1(+%volume%dB)%~nx1"
复制代码
- ::视频音频流码率压缩
- ::压缩到:mp3 16kbps
- ::将视频拖动到批处理上。
- FFMPEG -i "%~1" -c:a libmp3lame -b:a 16k -c:v copy "%~dp1(audio_16k)%~n1.MP4"
复制代码
- ::视频帧率快速压缩
- ::压缩到:13fps
- ::将视频拖动到批处理上。
- FFMPEG -i "%~1" -r 13 -c:v libx264 -preset ultrafast -c:a copy "%~dp1(13fps)%~n1.MP4"
复制代码
- ::视频帧率、音频流码率压缩
- ::压缩到:13fps;mp3 16kbps
- ::将视频拖动到批处理上。
- FFMPEG -i "%~1" -r 13 -c:v libx264 -preset ultrafast -c:a libmp3lame -b:a 16k "%~dp1(13fps audio_16k)%~n1.MP4"
复制代码
- ::视频流+第二个音频流生成新视频
- ffmpeg -i ".\2019.10.12 - 21.28.39.02.mp4" -map 0:v -c:v copy -map 0:a:1 -c:a copy 1.mp4
复制代码
- ::导出第二个音频流
- ffmpeg -i ".\2019.10.12 - 21.28.39.02.mp4" -map 0:a:1 -c:a copy 1.aac
复制代码
- ::视频动态码率压缩。
- ::压缩到crf=30。
- @rem echo %time%
- @ffmpeg.exe -i "%~f1" -c:a copy -c:v libx264 -preset slower -crf 30 "%~f1.new.mp4"
- @rem echo %time%
- @pause
复制代码
- ::mpv视频动态码率压缩。
- ::压缩到crf=30,占用比ffmpeg低。
- @echo %time%
- @Start /Wait "" "C:\Users\lenovo\Desktop\SVP\SVP 4\mpv64\mpv.exe" ^
- "%~f1" --o="%~dpn1.mkv" ^
- --no-sub --no-sub-auto ^
- --input-media-keys=no ^
- --no-msg-color ^
- --of=matroska ^
- --ovc=libx264 --ovcopts=preset=slower,crf=30,threads=8 ^
- %--oac=libmp3lame% %--oacopts=b=32k% %--no-audio%
-
- @echo %time%
- @pause
复制代码
- ::得到视频帧率
- >"%~dp0fps.txt" ffprobe ^
- -v error ^
- -select_streams v ^
- -of default=noprint_wrappers=1:nokey=1 ^
- -show_entries stream=r_frame_rate ^
- "%~f1"
复制代码
- ::嵌入ASS字幕
- ::若出现Could not create a libass track when reading file 错误,请将字幕编码改为UTF-8
- ffmpeg -i input.mp4 -i input.ass -vf ass=input.ass output.mp4
复制代码
视频码率检测:
https://blog.csdn.net/qq_23282479/article/details/119488291
视频ts切片并生成m3u8
https://www.cnblogs.com/fieldtianye/p/13427303.html
作者: Batcher 时间: 2019-11-11 21:10
感谢分享
借这个机会看看关注 ffmpeg 的朋友们多不多
批处理用ffmpeg获取视频文件时长- @echo off
- for /f "tokens=2 delims=, " %%a in ('ffmpeg -i "1.mp4" 2^>^&1 ^| find "Duration:"') do (
- set str=%%a
- )
- echo %str%
- pause
复制代码
批处理调用ffprobe批量删除小于6秒和大于240秒的mp4视频文件
http://bbs.bathome.net/thread-61303-1-1.html#pid276466
批处理用ffmpeg在视频文件名后追加文件时长
http://bbs.bathome.net/thread-59515-1-1.html- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- for /f "delims=" %%i in ('dir /b /s /a-d *.mp4') do (
- for /f "tokens=2 delims=, " %%a in ('ffmpeg -i "%%i" 2^>^&1 ^| find "Duration:"') do (
- set "str=%%a"
- )
- set str=!str:~0,-3!
- set str=!str::=:!
- ren "%%i" "%%~ni【!str!】%%~xi"
- )
复制代码
批处理用ffmpeg获取视频文件比特率- @echo off
- for /f "tokens=6 delims=:" %%a in ('ffmpeg -i "1.mp4" 2^>^&1 ^| find "bitrate:"') do (
- set str=%%a
- )
- set str=%str:~1%
- echo %str%
- pause
复制代码
批处理用ffmpeg获取视频文件分辨率- @echo off
- for /f "tokens=11" %%a in ('ffmpeg -i "1.mp4" 2^>^&1 ^| find "Video:"') do (
- set str=%%a
- )
- echo %str%
- pause
复制代码
批处理调用ffprobe批量删除宽大于高的mp4视频文件
http://bbs.bathome.net/thread-67680-1-1.html#pid276468
批处理用ffmpeg获取图片和视频的高度和宽度,进行重命名
http://bbs.bathome.net/thread-61980-2-1.html#pid253147
批处理用ffmpeg获取视频文件帧数
http://bbs.bathome.net/thread-59764-2-1.html#pid244327- @echo off
- for /f "tokens=2" %%i in ('ffmpeg -i 1.mp4 -map 0:v:0 -c copy -f null - 2^>^&1 ^| findstr /b "frame="') do (
- set "FrameCount=%%i"
- )
- echo %FrameCount%
- pause
复制代码
- ffprobe -v error -select_streams v:0 -count_packets -show_entries stream=nb_read_packets -of csv=p=0 1.mp4
复制代码
- mediainfo --Output="Video;%FrameCount%" 1.mp4
复制代码
批处理用ffmpeg提取某个时间点的帧为图片- ffmpeg -i "1.mp4" -ss 00:00:35 -frames:v 1 "1.png"
复制代码
批处理用ffmpeg批量删除片头片尾
http://bbs.bathome.net/thread-50807-1-1.html#pid213428
批处理用ffmpeg根据时长分割mp3音频文件,分割为每60秒一个文件- @echo off
- cd /d "%~dp0"
- ffmpeg -i "in.mp3" -f segment -segment_time 60 -c copy "out_%%03d.mp3"
复制代码
批处理用ffmpeg把mp3音频文件根据时长分割为三等分
http://bbs.bathome.net/thread-54211-1-1.html#pid224827
批处理用ffmpeg获取mp3音频文件时长并转换成秒数- @echo off
- cd /d "%~dp0"
- for /f "tokens=2-4 delims=:. " %%a in ('ffmpeg -i "in.mp3" 2^>^&1 ^| find "Duration:"') do (
- call :Time2SS %%a %%b %%c
- )
- echo,%SS%
- pause
- goto :eof
-
- :Time2SS
- set /a HH=1%1-100
- set /a MM=1%2-100
- set /a SS=1%3-100
- set /a HH2MM=HH*60
- set /a MM+=HH2MM
- set /a MM2SS=MM*60
- set /a SS+=MM2SS
- goto :eof
复制代码
批处理用ffmpeg给视频批量截图结尾最后3秒处
http://bbs.bathome.net/thread-63898-1-1.html#pid259756
批处理调用ffmpeg给mp3文件追加静音
http://bbs.bathome.net/thread-66880-1-1.html#pid271518
批处理调用ffmpeg去除MP3文件首尾处的静音区
http://bbs.bathome.net/thread-66892-1-1.html#pid271569
批处理调用ffmpeg合并mp3文件
http://bbs.bathome.net/thread-66899-1-1.html#pid271596
批处理调用ffmpeg合并wav和mp3实现混响效果
http://bbs.bathome.net/thread-67636-1-1.html#pid275193
每个文件夹里面的图片合成单独的视频
http://bbs.bathome.net/thread-69151-1-1.html#pid281451
作者: 老刘1号 时间: 2019-11-11 22:11
回复 2# Batcher
这个帖子在首页待不了两天,标题也不利于搜索;况且坛友大部分也对这个没有硬性需求,人气肯定不多~
人气是要有对应的板块,丰富的学习资料,友好的讨论气氛才能慢慢涨起来的。
我觉得论坛冷门的板块也不少,应该不差这几个吧
作者: 523066680 时间: 2019-11-12 08:07
本帖最后由 523066680 于 2019-11-12 08:52 编辑
回复 3# 老刘1号
我们找个机会杠起来,人气肯定会有的。
我也经常用FFMPEG, 有些有问题的订单,我们会让客户发产品故障视频,保存作为参考。这些手机拍摄的原视频,通常几十秒就一百多M。
FFMPEG转mp4,不需要什么复杂的参数,转换后可以达到10M以内,很好用。通常我会加个 -vb 1M 保持画质
说到FFMPEG,就不免想起一个人 雷霄骅
作者: 老刘1号 时间: 2019-11-12 10:18
回复 4# 523066680
是啊,搞这个的谁不知道雷佬呢,可惜……
作者: Batcher 时间: 2019-11-12 10:19
说到FFMPEG,就不免想起一个人 Steven Liu
国内唯一出现在官网的核心maintainer
一起爬过长城
作者: xczxczxcz 时间: 2019-11-15 18:01
不用那么麻烦。象TS把二进制合并就可以了。
作者: happy886rr 时间: 2019-11-17 18:01
回复 1# 老刘1号
通过这个帖子,我学会了转码
作者: yangjiangh 时间: 2020-4-2 00:15
真心不错 学习了
作者: xp3000 时间: 2020-4-2 11:09
FFmpeg有没有办法精确给音频文件添加音效?而不是录音,需要时间0误差,比如关闭一个声道时候给伴奏混响。
电脑安装了DFX Audio Enhancer,这个必要。
graphstudionext不会弄,这个应该可以0误差,采集时候声卡功放几个输出统一用N合1连接到一个录音接口,然后软件不会弄了
作者: 老刘1号 时间: 2020-4-2 21:37
回复 10# xp3000
ffmpeg适合批量粗略处理,这种比较精确的建议用专业的音频处理软件
上面有混音的例子
作者: checking 时间: 2020-4-10 02:56
回复 1# 老刘1号
这个教程帮大忙了,感谢
作者: 慕夜蓝化 时间: 2020-4-10 05:32
最近刚刚用到这个命令,感觉很强大。支持。
作者: myacg 时间: 2020-4-20 15:12
回复 1# 老刘1号
老刘!VOB无损去隔行扫描做不做的到?
作者: aries215 时间: 2020-6-14 21:09
楼主不应该推荐H.265编码,授权复杂混乱。
我国有AVS2编码,算法比265好,授权简单实惠。
作者: aries215 时间: 2021-9-2 10:25
本帖最后由 aries215 于 2021-9-2 10:50 编辑
回复 1# 老刘1号
我去年向FFmpeg发布者提交建议,已经内置国产AVS2/AVS3编码解码功能,支持8K/60P,解码速度大幅领先AV1:
https://github.com/BtbN/FFmpeg-Builds/releases
作者: gesla 时间: 2023-4-10 16:38
本帖最后由 gesla 于 2023-4-10 21:34 编辑
- echo
- setlocal enabledelayedexpansion
-
- rem 设置文件所在目录
- set src_dir=E:\test\
-
- rem filename用于存放目标文件名
- set filename=""
-
- cd /d %src_dir%
- for %%a in ("CC*.flv") do ffmpeg -i "%%a" -bsf:v h264_mp4toannexb -f mpegts -c copy ".\%%~na.ts"
- (for %%i in (CC*.ts) do @echo file '%%i') > 0.txt
- for /f %%a in ('dir /od /tc /b CC*.flv') do (
- set filename=%%~na
- if not !filename! == "" (
- goto ffmpeg
- )
- )
-
- :ffmpeg
- ffmpeg -f concat -safe 0 -i 0.txt -c copy %filename%.mp4
- pause
复制代码
在执行最后一步的时候,如果flv文件名中有中文字符就会无法合并,我明明加了-safe参数啊
搞明白了,txt需要UTF-8编码,fffmpeg才能识别中文字符,加了个chcp 65001就好了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |