Board logo

标题: [原创] [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])
  1. 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}
  1. ::插帧软件SVP 4视频插帧转码提取版。
  2. ::二倍帧率。
  3. ::需要安装了SVPcode的SVP 4运行。
  4. ::需要ffff.py。
  5. >"%~dp0fps.txt" ffprobe ^
  6. -v error ^
  7. -select_streams v ^
  8. -of default=noprint_wrappers=1:nokey=1 ^
  9. -show_entries stream=r_frame_rate ^
  10. "%~f1"
  11. Start /Wait "" "C:\Users\lenovo\Desktop\SVP\SVP 4\mpv64\mpv.exe" ^
  12. "%~f1" --o="%~dpn1.MKV" ^
  13. --no-sub --no-sub-auto ^
  14. --input-ipc-server=mpvencodepipe ^
  15. --input-media-keys=no ^
  16. --no-msg-color ^
  17. --vf=vapoursynth:[%~dp0ffff.py]:4:8 ^
  18. --of=matroska ^
  19. --ovc=libx264 --ovcopts=preset=slower,crf=30,threads=8 ^
  20. %--oac=libmp3lame% %--oacopts=b=32k% --no-audio
  21. del "%~dp0fps.txt"
  22. ffmpeg -i "%~dpn1.MKV" -i "%~f1" -map 0:v -c:v copy -map 1:a -c:a copy "%~dp1NEW.%~n1.MP4"
  23. del "%~dpn1.MKV"
复制代码
  1. #ffff.py
  2. #插帧软件转码提取版所需的脚本。
  3. f = open('C:\\Users\\lenovo\\Desktop\\SVP\\fps.txt')
  4. src_fps = eval(f.read())
  5. f.close()
  6. # This script was generated by SVP 4 Manager.
  7. # Check https://www.svp-team.com for more details.
  8. import vapoursynth as vs
  9. core = vs.get_core(threads=8)
  10. core.std.LoadPlugin("C:\\Users\\lenovo\\Desktop\\SVP\\SVP 4\\plugins64\\svpflow1_vs.dll")
  11. core.std.LoadPlugin("C:\\Users\\lenovo\\Desktop\\SVP\\SVP 4\\plugins64\\svpflow2_vs.dll")
  12. clip = video_in
  13. super_params     = "{scale:{up:0},gpu:1,rc:true}"
  14. analyse_params   = "{block:{w:8},main:{search:{coarse:{distance:-12,bad:{sad:2000}},type:2}},refine:[{thsad:250}]}"
  15. smoothfps_params = "{gpuid:11,gpu_qn:2,rate:{num:2,den:1},algo:23,mask:{cover:80},scene:{mode:0}}"
  16. #src_fps     = 25
  17. demo_mode   = 0
  18. stereo_type = 0
  19. nvof = 0
  20. ########## BEGIN OF base.py ##########
  21. # This file is a part of SmoothVideo Project (SVP) ver.4
  22. # This is NOT the full Vapoursynth script, all used variables are defined via
  23. # JScript code that generates the full script text.
  24. def interpolate(clip):
  25. # input_um - original frame in 4:2:0
  26. # input_m  - cropped and resized (if needed) frame
  27. # input_m8 - input_m converted to 8-bit
  28.     input_um = clip.resize.Point(format=vs.YUV420P8,dither_type="random")
  29.     input_m = input_um
  30.     input_m8 = input_m
  31.     if nvof:
  32.         smooth  = core.svp2.SmoothFps_NVOF(input_m,smoothfps_params,nvof_src=input_m8,src=input_um,fps=src_fps)
  33.     else:
  34.         super   = core.svp1.Super(input_m8,super_params)
  35.         vectors = core.svp1.Analyse(super["clip"],super["data"],input_m8,analyse_params)
  36.         smooth  = core.svp2.SmoothFps(input_m,super["clip"],super["data"],vectors["clip"],vectors["data"],smoothfps_params,src=input_um,fps=src_fps)
  37.     if demo_mode==1:
  38.         return demo(input_m,smooth)
  39.     else:
  40.         return smooth
  41. if stereo_type == 1:
  42.     lf = interpolate(core.std.CropRel(clip,0,(int)(clip.width/2),0,0))
  43.     rf = interpolate(core.std.CropRel(clip,(int)(clip.width/2),0,0,0))
  44.     smooth = core.std.StackHorizontal([lf, rf])
  45. elif stereo_type == 2:
  46.     lf = interpolate(core.std.CropRel(clip,0,0,0,(int)(clip.height/2)))
  47.     rf = interpolate(core.std.CropRel(clip,0,0,(int)(clip.height/2),0))
  48.     smooth = core.std.StackVertical([lf, rf])
  49. else:
  50.     smooth =  interpolate(clip)
  51. ########### END OF base.py ###########
  52. smooth = smooth.resize.Point(format=vs.YUV420P8)
  53. smooth.set_output()
复制代码
例子/自用小程序
视频、音频转mp3(就是这么简单粗暴)
  1. for %%a in (%*) do ffmpeg -i "%%~fa" "%%~dpna.MP3"
复制代码
二倍速处理音频
  1. ffmpeg -i "%~1" -filter:a "atempo=2.0" -vn "%~dp1(二倍速)%~nx1"
复制代码
  1. ::无损视频合并
  2. ::用法:按顺序拖入要合并的视频文件,然后回车。完成后按Ctrl+Z再回车,拖入输出路径。
  3. ::要求:音频编码为AAC。
  4. @echo off
  5. Setlocal enabledelayedexpansion
  6. ::CODER BY 老刘 POWERD BY iBAT
  7. copy con "%temp%\list.tmp">nul
  8. set /p outputpath=输出路径:
  9. set /a n=1
  10. for /f "delims=" %%. in ('type "%temp%\list.tmp"') do (
  11. ffmpeg -i "%%~f." -c:v copy -c:a copy -vbsf h264_mp4toannexb -y "%temp%\!n!.ts"
  12. Set "concat=!concat!%temp%\!n!.ts|"
  13. Set /a n+=1
  14. )
  15. ffmpeg -i "concat:!concat:~,-1!" -acodec copy -vcodec copy -absf aac_adtstoasc "!outputpath:"=!\output.mp4"
  16. pause
复制代码
音频混音
改volume可以调整两个音频的音量,保证混音效果
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. ::CODER BY 老刘 POWERD BY iBAT
  4. ffmpeg -i "H:\db.MP3"^
  5. -ss 00:00:03.15 -i "D:\我的文档目录\Tencent Files\632171029\FileRecv\MobileFile\音频录制2019-07-18 21-33-49.wav"^
  6. -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
  7. pause
复制代码
录制桌面(无音频流(无声音),FPS(帧率) 6)
  1. ffmpeg.exe -f gdigrab -framerate 6 -i desktop out.mp4
复制代码
M3U8下载并合并为视频
FLV
  1. "ffmpeg.exe" -threads 0 -i "URL" -c copy -y -f f4v -bsf:a aac_adtstoasc "1.flv"
复制代码
MKV
  1. "ffmpeg.exe" -threads 0 -i "URL" -c copy -y -bsf:a aac_adtstoasc "1.mkv"
复制代码
MP4
  1. "ffmpeg.exe" -threads 0 -i "%~1" -c copy -y -bsf:a aac_adtstoasc "1.mp4"
复制代码
TS
  1. "ffmpeg.exe" -threads 0 -i "URL" -c copy -y -f mpegts "1.ts"
复制代码
  1. ::效果不好弃用,替代命令见下:
  2. ::https://bbs.kafan.cn/thread-2210091-1-1.html
  3. ::视频剪辑合并
  4. ::用法:
  5. ::1、第一个分段中一定要有关键帧(不要截太短),否则会合并失败,变成只有音频流的mp4。
  6. ::2、分段信息例: 1:37-7:21 8:40~10:00 (冒号全角半角都可,-或~分割起始点和终点,空格分隔每一段)
  7. ::缺点:剪切的视频开头有黑屏或卡顿,因为ffmpeg无法seek到关键帧上。
  8. ::优点:不用转码,剪辑真的很快;可编程,可自动化,适合批量粗略剪辑。
  9. @echo off
  10. Setlocal enabledelayedexpansion
  11. :start
  12. ::CODER BY 老刘 POWERD BY iBAT
  13. set /p Filepath=视频文件路径:
  14. set "FilePath=!FilePath:"=!"
  15. Set /p SplitInfo=分段信息:
  16. set SplitInfo=!SplitInfo:-=~!
  17. set SplitInfo=!SplitInfo::=:!
  18. set /a n=1
  19. rem set concat=
  20. cd.>%temp%\concatlist
  21. for %%a in (!SplitInfo!) do (
  22. for /f "tokens=1-2 delims=~" %%b in ("%%a") do (
  23. for /f "tokens=1-2 delims=:" %%d in ("%%b") do (
  24. set SplitFromMinute=%%d
  25. if "!SplitFromMinute:~1!" Equ "" set SplitFromMinute=0%%d
  26. set SplitFromSecond=%%e
  27. if "!SplitFromSecond:~1!" Equ "" set SplitFromSecond=0%%e
  28. if "!SplitFromMinute!:!SplitFromSecond!" Equ "00:00" set SplitFromSecond=01
  29. )
  30. for /f "tokens=1-2 delims=:" %%d in ("%%c") do (
  31. set SplitToMinute=%%d
  32. if "!SplitToMinute:~1!" Equ "" set SplitToMinute=0%%d
  33. set SplitToSecond=%%e
  34. if "!SplitToSecond:~1!" Equ "" set SplitToSecond=0%%e
  35. )
  36. Echo 截取分段 !n! : !SplitFromMinute!:!SplitFromSecond! -^> !SplitToMinute!:!SplitToSecond!
  37. for %%A in ("!Filepath!") do (
  38. rem >nul 2>nul
  39. >nul 2>nul ffmpeg ^
  40. -i "%%~fA" ^
  41. -ss !SplitFromMinute!:!SplitFromSecond! ^
  42. -to !SplitToMinute!:!SplitToSecond! ^
  43. -c:v copy ^
  44. -c:a copy ^
  45. %-vbsf% %h264_mp4toannexb% ^
  46. -y ^
  47. "%temp%\!n!.ts.mp4"
  48. rem Set "concat=!concat!%temp%\!n!.ts.mp4|"
  49. echo file '%temp%\!n!.ts.mp4' >>"%temp%\concatlist"
  50. Set /a n+=1
  51. )
  52. )
  53. )
  54. rem notepad %temp%\concatlist
  55. rem exit
  56. Set /a n-=1
  57. for %%A in ("!Filepath!") do (
  58. ren "%%~fA" "%%~nA.old"
  59. echo 合并 !n! 个分段
  60. rem >nul 2>nul
  61. >nul 2>nul ffmpeg ^
  62. -f concat ^
  63. -safe 0 ^
  64. -i "%temp%\concatlist" ^
  65. -vcodec copy ^
  66. -acodec copy ^
  67. -y ^
  68. "%%~fA"
  69. )
  70. echo.
  71. goto start
  72. rem 以下命令已弃用,仅作备份
  73. ffmpeg ^
  74. -i "concat:!concat:~,-1!" ^
  75. -vcodec copy ^
  76. -absf aac_adtstoasc ^
  77. -acodec copy ^
  78. -y ^
  79. "%%~fA"
复制代码
  1. ::音频去噪
  2. ::用法:媒体文件拖到bat上,然后按提示输入参数
  3. @echo off
  4. Setlocal enabledelayedexpansion
  5. ::CODER BY 老刘 POWERD BY iBAT
  6. set /p t=噪音出现时间点(MM:SS):
  7. set /p x=去噪效果(0~1,推荐0.2~0.3):
  8. ffmpeg -i "%~1" "%tmp%\origin.wav"
  9. ffmpeg -i "%~1" -ss 00:!t! -t 1 "%tmp%\noise.wav"
  10. sox "%tmp%\noise.wav" -n noiseprof "%tmp%\noise.prof"
  11. sox "%tmp%\origin.wav" "%~dp1[NO_Noise]%~n1.wav" noisered "%tmp%\noise.prof" !x!
  12. pause
复制代码
  1. ::视频音量调整
  2. ::音频编码会被转为mp3
  3. @set /p vpath=拖入视频路径:
  4. @set /p volume=输入音量增幅(单位dB):
  5. @set /p audio_bitrate=输入音频码率(单位kbps):
  6. @Call :处理 "%vpath:"=%"
  7. @Exit
  8. :处理
  9. @ffmpeg -i "%~1" -c:v copy -c:a libmp3lame -b:a %audio_bitrate%k -af "volume=%volume%dB" "%~dp1(+%volume%dB)%~nx1"
复制代码
  1. ::视频音频流码率压缩
  2. ::压缩到:mp3 16kbps
  3. ::将视频拖动到批处理上。
  4. FFMPEG -i "%~1" -c:a libmp3lame -b:a 16k -c:v copy "%~dp1(audio_16k)%~n1.MP4"
复制代码
  1. ::视频帧率快速压缩
  2. ::压缩到:13fps
  3. ::将视频拖动到批处理上。
  4. FFMPEG -i "%~1" -r 13 -c:v libx264 -preset ultrafast -c:a copy "%~dp1(13fps)%~n1.MP4"
复制代码
  1. ::视频帧率、音频流码率压缩
  2. ::压缩到:13fps;mp3 16kbps
  3. ::将视频拖动到批处理上。
  4. FFMPEG -i "%~1" -r 13 -c:v libx264 -preset ultrafast -c:a libmp3lame -b:a 16k "%~dp1(13fps audio_16k)%~n1.MP4"
复制代码
  1. ::视频流+第二个音频流生成新视频
  2. 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
复制代码
  1. ::导出第二个音频流
  2. ffmpeg -i ".\2019.10.12 - 21.28.39.02.mp4" -map 0:a:1 -c:a copy 1.aac
复制代码
  1. ::视频动态码率压缩。
  2. ::压缩到crf=30。
  3. @rem echo %time%
  4. @ffmpeg.exe -i "%~f1" -c:a copy -c:v libx264 -preset slower -crf 30 "%~f1.new.mp4"
  5. @rem echo %time%
  6. @pause
复制代码
  1. ::mpv视频动态码率压缩。
  2. ::压缩到crf=30,占用比ffmpeg低。
  3. @echo %time%
  4. @Start /Wait "" "C:\Users\lenovo\Desktop\SVP\SVP 4\mpv64\mpv.exe" ^
  5. "%~f1" --o="%~dpn1.mkv" ^
  6. --no-sub --no-sub-auto ^
  7. --input-media-keys=no ^
  8. --no-msg-color ^
  9. --of=matroska ^
  10. --ovc=libx264 --ovcopts=preset=slower,crf=30,threads=8 ^
  11. %--oac=libmp3lame% %--oacopts=b=32k% %--no-audio%
  12. @echo %time%
  13. @pause
复制代码
  1. ::得到视频帧率
  2. >"%~dp0fps.txt" ffprobe ^
  3. -v error ^
  4. -select_streams v ^
  5. -of default=noprint_wrappers=1:nokey=1 ^
  6. -show_entries stream=r_frame_rate ^
  7. "%~f1"
复制代码
  1. ::嵌入ASS字幕
  2. ::若出现Could not create a libass track when reading file 错误,请将字幕编码改为UTF-8
  3. 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获取视频文件时长
  1. @echo off
  2. for /f "tokens=2 delims=, " %%a in ('ffmpeg -i "1.mp4" 2^>^&1 ^| find "Duration:"') do (
  3.     set str=%%a
  4. )
  5. echo %str%
  6. 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
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. for /f "delims=" %%i in ('dir /b /s /a-d *.mp4') do (
  5.     for /f "tokens=2 delims=, " %%a in ('ffmpeg -i "%%i" 2^>^&1 ^| find "Duration:"') do (
  6.         set "str=%%a"
  7.     )
  8.     set str=!str:~0,-3!
  9.     set str=!str::=:!
  10.     ren "%%i" "%%~ni【!str!】%%~xi"
  11. )
复制代码
批处理用ffmpeg获取视频文件比特率
  1. @echo off
  2. for /f "tokens=6 delims=:" %%a in ('ffmpeg -i "1.mp4" 2^>^&1 ^| find "bitrate:"') do (
  3.     set str=%%a
  4. )
  5. set str=%str:~1%
  6. echo %str%
  7. pause
复制代码
批处理用ffmpeg获取视频文件分辨率
  1. @echo off
  2. for /f "tokens=11" %%a in ('ffmpeg -i "1.mp4" 2^>^&1 ^| find "Video:"') do (
  3.     set str=%%a
  4. )
  5. echo %str%
  6. 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
  1. @echo off
  2. for /f "tokens=2" %%i in ('ffmpeg -i 1.mp4 -map 0:v:0 -c copy -f null - 2^>^&1 ^| findstr /b "frame="') do (
  3.     set "FrameCount=%%i"
  4. )
  5. echo %FrameCount%
  6. pause
复制代码
  1. ffprobe -v error -select_streams v:0 -count_packets -show_entries stream=nb_read_packets -of csv=p=0 1.mp4
复制代码
  1. mediainfo --Output="Video;%FrameCount%" 1.mp4
复制代码
批处理用ffmpeg提取某个时间点的帧为图片
  1. 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秒一个文件
  1. @echo off
  2. cd /d "%~dp0"
  3. 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音频文件时长并转换成秒数
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "tokens=2-4 delims=:. " %%a in ('ffmpeg -i "in.mp3" 2^>^&1 ^| find "Duration:"') do (
  4.     call :Time2SS %%a %%b %%c
  5. )
  6. echo,%SS%
  7. pause
  8. goto :eof
  9. :Time2SS
  10. set /a HH=1%1-100
  11. set /a MM=1%2-100
  12. set /a SS=1%3-100
  13. set /a HH2MM=HH*60
  14. set /a MM+=HH2MM
  15. set /a MM2SS=MM*60
  16. set /a SS+=MM2SS
  17. 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 编辑
  1. echo
  2. setlocal enabledelayedexpansion
  3. rem 设置文件所在目录
  4. set src_dir=E:\test\
  5. rem filename用于存放目标文件名
  6. set filename=""
  7. cd /d %src_dir%
  8. for %%a in ("CC*.flv") do ffmpeg -i "%%a" -bsf:v h264_mp4toannexb -f mpegts -c copy ".\%%~na.ts"
  9. (for %%i in (CC*.ts) do @echo file '%%i') > 0.txt
  10. for /f %%a in ('dir /od /tc /b CC*.flv') do (
  11.     set filename=%%~na
  12.     if not !filename! == ""  (
  13.       goto ffmpeg
  14.     )
  15. )
  16. :ffmpeg
  17. ffmpeg -f concat -safe 0 -i 0.txt -c copy %filename%.mp4
  18. pause
复制代码
在执行最后一步的时候,如果flv文件名中有中文字符就会无法合并,我明明加了-safe参数啊

搞明白了,txt需要UTF-8编码,fffmpeg才能识别中文字符,加了个chcp 65001就好了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2