1399-12-21 22:19 FFmpeg - هر کار ویدیویی و صوتی را می توانید با FFMPEG انجام دهید
رضا اکبری استرآبادی

 
یا ابا صالح ادرکنی

FFmpeg

باعرض سلام وادب خدمت برادر و استاد عزیزم وکسب اجازه از ایشون قصد دارم مبحثی پیرامون FFmpeg باز کنم و به اندازه سوادم شما را با فرامین اون آشنا کنم .

1399-12-21 22:48 ffmpeg - تغییر فرمت - برش فیلم و صدا - افزایش حجم صدا
رضا اکبری استرآبادی

 
ffmpeg چیست : یک نرم افزار سورس باز هست که روی ویندوز ، لینوکس و IOS قابل استفاده می باشد .

سایت ffmpeg

من از خط فرمان ffmpeg استفاده می کنم . لذا یکسری از دستوراتی که خودم استفاده کرده ام خدمتتان عرض می کنم .

خط فرمان های زیر را در command prompt یا powershell در ویندوز اجرا می کنیم .

D:\ffmpeg.exe -i d:\file1.avi d:\file1.mp4


خوب اول مسیر فایل ffmpeg را میدهیم و بعد با i- مسیر فایل مبدا با فرمتش را قید می کنیم و بعد بلا فاصله مسیر و فرمت فایل مقصد را می نویسیم
نکته 1: اگر در مسیری کلمات فارسی یا کاراکتر خاصی داشتید مسیر ها را داخل " " قراردهید . مثلا :
"D:\لیست\ffmpeg.exe"


نکته2 : تقریبا از هر فرمتی به هر فرمتی قابل تبدیل می باشد . (audio و video)

برای کوتاه شدن به شکل خلاصه می نویسم .
#cut mp3
ffmpeg.exe -ss 10 -to 16 -i input.mp3 output.mp3

در این دستور از ثانیه 10 فایل به مدت 16 ثانیه جدا می کند و در در فایل خروجی یه فایل 16 ثانیه ایجاد می کند .

#Extract the audio from video
ffmpeg.exe -i input.mp4 -vn -ab 256 output.mp3

در این دستور شما می توانید صدا را از فیلم جدا کنید و فایل صدای فیلم را داشته باشید .


#Mute a video (Remove the audio component)
ffmpeg.exe -i input.mp4 -an output.mp4

در این دستور صدای فیلم را ازش میگیریم و در واقع فیلم بی صدا میشود.

#Change the audio volume
ffmpeg.exe -i input.mp3 -af 'volume=5' output.mp3

صدای فایل را تا5 برابر بالا میبرد .

لینک اشتراک گذاری این پست : ffmpeg
1399-12-22 00:42 ffmpeg -فریم های یک ویدو - برش تصویر و فیلم - چسباندن صدا و تصویر
رضا اکبری استرآبادی

 
حال به یکسری از دستورات دیگر می پردازیم :

# گرفتن تمام فریم های یک ویدو
ffmpeg.exe -i input.mkv -r 1/1 output %03d.bmp

با این دستور می تونید تمام فریم های یک فیلم را بیرون بکشید .

#crop video
ffmpeg.exe -i input .mp4 -filter:v "crop=9:3:150:250" output .mp4

یک قسمتی از صفحه فیلم را برش می دهد که با "crop=9:3:150:250" اندازه وجای اون مشخص می شود .

#Add an image in front of video using ffmpeg اضافه کردن عکس به فیلم
ffmpeg.exe -i input .mp4 -i frames_1.png -filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,20)'" -pix_fmt yuv420p -c:a copy output.mp4

یک عکس و یک فیلم می دهیم و می گوییم در چه موقعیتی و( 25 عرض و 25 طول ) چه زمانی (ثانیه 0 تا تانیه 20 ) و در خروجی به ما فیلمی با افزودن اون عکس به ما می دهد .

# merge two file audio
ffmpeg.exe -i "concat:input1.mp3| input 2.mp3" -codec copy output.mp3

با این دستور می توانید دوفایل را به هم بچشبانید .

لینک اشتراک گذاری این پست : ffmpeg
1399-12-22 01:51 ffmpeg.exe , ffplay.exe , ffprobe.exe -متادیتاها - پخش ویدیو - حذف صدا - speed - کدک
رضا اکبری استرآبادی

 
# پاک کردن کلیه متادیتاها
ffmpeg.exe -i input.mp3 -map 0 -map_metadata -1 -c copy output.mp3

#پاک کردن متادیتا و قراردادن دیتای جدید
ffmpeg.exe -i input.mp3 -map_metadata -1 -c:v copy -metadata title="test afshin2" -c:a copy output.mp3

# درج متادیتا
ffmpeg.exe -i input.ts -metadata title="my afshin" output.ts

# خواندن متا دیتا
#ffmpeg.exe -i input_video.mp3 -f ffmetadata metadata.txt

# پخش فیلم بی صدا
ffplay.exe -i input.mp4 -vf "select=not(mod(n\,1))" -an

نکته 3: an- باعث حذف صدا می شود .

نکته 4 : برای افزایش سرعت های خیلی زیاد که معمولا برای مونیتورینگ می باشد باید فرمت ts باشد
#یعنی به صورت هر 120 فریم یک فریم نمایش میدهد
ffplay.exe -i my.ts -vf "select=not(mod(n\,120))" -an


#اطلاعات دقیقی از کدک و فرمت و تایم متادیتای فایل می دهد
ffprobe.exe input.mp4


لینک اشتراک گذاری این پست : ffmprg
1399-12-22 02:07 ffmpeg , ffplay , ffprobe - روی کل فیلم تایم می اندازد - تایم - لیبل - تایتل - زیرنویس
رضا اکبری استرآبادی

 
ffmpeg , ffplay , ffprobe
# روی کل فیلم تایم می اندازد

اگر دستورات زیر را در powershell بنویسید روی کل فیلم در جایی که شما مشخص می کنید تایم همان لحظه فیلم را با هر متن دیگری که بخواهد نشان میدهد




$Source="E:\ok\myt2.mp4" # مسیر فایل مبدا
$target="E:\ok\tv3_1219_2100.mp4" #مسیر فایل مقصد
$hour="21" # ساعت شروع
$Minutes="57" # دقیقه شروع
$Fontsize="36" # بزرگی فونت
$FontColor="yellow" #رنگ فونت
$Boxcoler="black" # رنگ پس زمینه فونت
$transparent="0.9" # روشنایی پس زمینه فونت
$x="150" # محل قرار گیری فونت در محور طول ها
$y="2" # محل قرار گیری فونت دز محور عرض ها
$FontFile="E\:\\ok\\FreeSerif.ttf" # مسیر فایل فونت
$Timecode_reate="25" # فرمت reate

Remove-Item $target # پاک کردن فایل مقصد در صورت وجود

$paramet= "drawtext=fontfile='"+$FontFile+"':fontsize="+$Fontsize
$paramet+=":fontcolor="+$FontColor+":x="+$x+":y="+$y+":box=1:boxcolor="+$Boxcoler
$paramet+="@"+$transparent+": rate=2:timecode='"
$paramet+=$hour +"\:"+ $Minutes+ "\:00\:00':timecode_rate="+$Timecode_reate

اعمال تغییرات با ffmpeg.exe
E:\ok\ffmpeg.exe -y -i $Source -vf $paramet $target

پخش فایل ایجاد شده از مسیر مشخص شده با ffplay.exe
E:\ok\ffplay.exe -i $target


لینک اشتراک گذاری این پست : ffmprg - ffplay - ffprobe
1400-01-04 21:41 برش قسمتی از ویدیو یا صدا - تغییر فرمت تمام فایل های یک فلدر - کانورت - convert ffmpeg
رضا اکبری استرآبادی

 
برش قسمتی از فیلم یا صدا :


#Cut video file into a smaller clip از ثانیه 50 به طول 20 ثانیه برش میزند
E:\ok\ffmpeg.exe -i E:\ok\my3.mp4 -ss 00:00:50.0 -codec copy -t 20 E:\ok\test10.mp4



Clear-Host
ForEach ($file in Get-ChildItem D:\MyAfshin\Video\ -filter "*.mpg")
{
$myArray= $file.name.split(".",2)
$myArray[0]
$Source="D:\MyAfshin\Video\" + $myArray[0] + ".mpg"
$Newitem="D:\MyAfshin\Video\"+ $myArray[0]+".mp4"

if ((Test-Path $Source ) -and ( Test-Path $Newitem) )
{
Remove-Item $Source
}
D:\MyAfshin\ffmpeg.exe -i $Source $Newitem -threads 5
Remove-Item $Source
}

درکد با لا هرچی فایل mpg در مسیر مشخص شده می باشد را تغییر فرمت به mp4 میده و فایل های mpg قبلی را هم حذف می کند .

لینک اشتراک گذاری این پست : برش قسمتی از ویدیو یا صدا ffmpeg
1400-03-31 09:18 pcm_s24le - 1*QP2LAMBDA - 56*QP2LAMBDA - xd5c - mxf - XDCam hd 422 50i- 16*9 - 1920*1080 - تبدیل فرمت بدون استفاده از کپی کدک - codec - Downmix both channels
رضا اکبری استرآبادی

 
سلام . وقت بخیر
امروز شما رو با تجربه ای جدید آشنا می کنم که چند روزی من رو سرکار گذاشت .... حقیقتش ما در شرکت احتیاج داشتیم که فایلی بافرمت MXF را به MXF تبدیل کنیم .!! خوب شما هم بهتر از من می دونید که به ظاهر MXF ----> MXF بی معنی هست . ولی حقیقت این هست هر گردی گردو نیست . ما به MXF ی با مشخصات XDcam HD 4.2.2 50i 1920*1080 و 16*9 - 25 f احتیاج داشتیم . که تو چرخه با این قالب به مشکل بر نخورد . و برحسب شرایط کد ها مون نمی تونستیم از کپی کدک استفاده کنیم . ولذا می بایست این property ها را خودمان به فایل تخصیص می دادیم . و بعد از چند روز بالاخره موفق شدم .... و اون کد زیر هست :




E:\ReadMemoryConcatFile\ffmpeg.exe -i E:\ReadMemoryConcatFile\109_4429.MXF -c:a pcm_s24le -ar 48000 -ac 1 -map 0:0 -map 0:1 -map 0:1 -map 0:1 -map 0:1 -map 0:1 -map 0:1 -map 0:1 -map 0:1 -vf copy -field_order tt -top 1 -flags +ildct+ilme -alternate_scan 1 -g 12 -timecode 01:00:00:00 -c:v mpeg2video -r 25 -pix_fmt yuv422p -vf scale=1920x1080 -aspect 16:9 -color_range 1 -color_primaries 1 -color_trc 1 -colorspace 1 -non_linear_quant 1 -dc 11 -intra_vlc 1 -qmin 1 -lmin "1*QP2LAMBDA" -qmax 28 -lmax "56*QP2LAMBDA" -b:v 50000000 -minrate 50000000 -maxrate 50000000 -minrate 50000000 -bufsize 17825792 -bf 2 -metadata creation_time=now -vtag xd5c -intra_matrix 8,17,17,19,17,19,21,21,21,21,21,21,23,22,23,24,24,24,24,24,24,24,25,25,25,26,26,26,29,29,29,26,26,26,25,25,27,27,28,29,29,29,31,32,32,31,31,30,30,33,33,34,34,34,38,38,37,37,43,43,44,50,50,58 -inter_matrix 16,17,17,18,18,18,19,19,19,19,20,20,20,20,20,21,21,21,21,21,21,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,25,24,24,24,25,26,26,26,26,25,27,27,27,27,27,28,28,28,28,30,30,30,31,31,33 -f mxf E:\ReadMemoryConcatFile\test10.mxf



خب خوب بود . جواب کار ما رو داد . ... ولی از اونجا که همیشه کار به اینجا ختم نمیشه یه مشکل دیگه داشتیم و اون هم این بود که باند صدا ی ما 8 کاناله Stereo بود و ما می بایست باند صدا مون می شد Mono و 2 کاناله که کانال چپ صدای محیط باشه و باند راست صدای میکروفن !!!... آخه چرا ... نه ....
خوب یه کمی جستجو از خود سایت FFMpeg پیدا کردم ... آخ جون ....



-filter_complex "[0:a]channelsplit=channel_layout=stereo"

و از دیگر کدهایی که پیدا کردم این ها بودن :

ffmpeg -i stereo.wav -map_channel 0.0.0 left.wav -map_channel 0.0.1 right.wav
ffmpeg -i stereo.wav -filter_complex "[0:0]pan=1|c0=c0[left]; [0:0]pan=1|c0=c1[right]" -map "[left]" left.wav -map "[right]" right.wav
-threads "16"
-filter_complex channelsplit
-filter_complex amix=inputs=2: duration=longest

-filter_complex "[0:a]channelsplit[l][r]" -map 0:v -map "[l]" -map "[r]"
-filter_complex "[0:a]channelsplit=channel_layout=stereo"


اینم لینکی از خود سایت اصلی که هرنوع تبدیل کانال صدایی را یاد داده

لینک اشتراک گذاری این پست : XDCam hd 422 50i
1400-07-10 20:13 Extract audio from video - Get video file information - Cut video into small clips - Split video file into multiple parts -Mute audio - Merge audio and video - Convert video to images - Convert images to video - Converting MP4 to FLV - Insert subtitles - Extract subtitles - Rotate video - Convert video into an animated GIF -v Convert to CD/DVD format
رضا اکبری استرآبادی

 
دستورات پر کاربرد در FFmpeg
Extract audio from video
- Get video file information
- Cut video into small clips
-Split video file into multiple parts
-Mute audio
- Merge audio and video
- Convert video to images
- Convert images to video
- Converting MP4 to FLV
- nsert subtitles
Extract subtitles
- Rotate video
- Convert video into an animated GIF
-Convert to CD/DVD format



//Extract audio from video
-vn disables video recording to the output file
-ac sets the number of audio channels
-ab sets audio bitrate to 187kb/s
-f sets an output format to mp3

E:\_Work_\FFMPEG-EXE\ffmpeg-4.2.1-win64.exe -i E:\_Work_\FFMPEG-EXE\475.mp4 -vn -ac 2 -ab 187 -f mp3 E:\_Work_\FFMPEG-EXE\Audio.mp3

//Get video file information
The -hide_banner argument hides copyrights information.

E:\_Work_\FFMPEG-EXE\ffmpeg-4.2.1-win64.exe -i E:\_Work_\FFMPEG-EXE\475.mp4 -hide_banner

//Cut video into small clips
# -ss parameter specifies the start time stamp in HH:MM:SS.ms format
# -t argument specifies the final clip's duration (time) in seconds
# -codec copy - parameter would copy all streams without re-encoding

E:\_Work_\FFMPEG-EXE\ffmpeg-4.2.1-win64.exe -i E:\_Work_\FFMPEG-EXE\475.mp4 -hide_banner -ss 00:01:00.0 -codec copy -t 20 E:\_Work_\FFMPEG-EXE\OutputVideo.mp4


//Split video file into multiple parts

#The first part is 30 secs long from the beginning of the file (-t argument)
#The second part will contain the video data from the 50th second till the end of the file (-ss argument)

E:\_Work_\FFMPEG-EXE\ffmpeg-4.2.1-win64.exe -i E:\_Work_\FFMPEG-EXE\475.mp4 -hide_banner -t 00:00:30 -c copy E:\_Work_\FFMPEG-EXE\475-1.mp4 -ss 00:00:50 -codec copy E:\_Work_\FFMPEG-EXE\475-2.mp4

//Mute audio
E:\_Work_\FFMPEG-EXE\ffmpeg-4.2.1-win64.exe -i E:\_Work_\FFMPEG-EXE\475.mp4 -hide_banner -an E:\_Work_\FFMPEG-EXE\475Video.mp4


//Merge audio and video
E:\_Work_\FFMPEG-EXE\ffmpeg-4.2.1-win64.exe -i E:\_Work_\FFMPEG-EXE\Audio.mp3 -i E:\_Work_\FFMPEG-EXE\475.mp4 -hide_banner E:\_Work_\FFMPEG-EXE\Video55.mp4


//Convert video to images
ffmpeg -i sample-mp4-file.mp4 -hide_banner image%d.jpg


//Convert images to video
ffmpeg -f image2 -i image%d.jpg -hide_banner OutputVideo.mp4

//Converting MP4 to FLV
ffmpeg -i file.mp4 -hide_banner -vn -ac 2 -ab 187 -f flv OutputVideo.flv

//Convert FLV to MPG
ffmpeg -i OutputVideo.mpg -hide_banner -ab 26k -f flv OutputVideo.flv

//Convert video into an animated GIF
ffmpeg -i file.mp4 -hide_banner Output.gif

//Convert to CD/DVD format
# Use -target type to create video CD or DVD formatted output file.
# Target type supports vcd, svcd, dvd, dv and dv50 formats that may be prefixed with pal-, ntsc- or film- to use the corresponding standard:
ffmpeg -i file.mp4 -hide_banner -target film-vcd vcd_video.mpg

//Insert subtitles
ffmpeg -i file.mp4 -hide_banner -i subtitles.srt -c copy -c:s mov_text OutputVideo.mp4

//Add subtitles to video stream
ffmpeg -i file.mp4 -hide_banner -vf subtitles=subtitles.srt OutputVideo.mp4

//Extract subtitles
//Get subtitle stream information
ffmpeg -i OutputVideo.mp4
# The output indicates, that subtitles are available in file at stream #0:2.
ffmpeg -i OutputVideo.mp4 -hide_banner -map 0:2 subtitles.srt
#Where -map 0:2 specifies the required stream.


//Rotate video
ffmpeg -i file.mp4 -hide_banner -filter:v 'transpose=1' OutputVideo.mp4





1400-07-13 15:22 remove multiple segments video - Speeding up/slowing down video - Split video file into multiple parts - FFmpeg
رضا اکبری استرآبادی

 
- Speeding up/slowing down video
- Split video file into multiple parts
- remove multiple segments video

منابع ارزشمند :
Map
filters - trim
filters - concat



// Smooth
ffmpeg -i input.mkv -filter:v "minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=120'" output.mkv

//Speeding up/slowing down audio
ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv
ffmpeg -fflags +genpts -r 15 -i raw.h264 -i input.mp4 -map 0:v -c:v copy -map 1:a -af atempo=0.5 -movflags faststart output.mp4

// setpts filter
ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25*PTS" output.mkv
ffmpeg -i input.mkv -filter:v "setpts=2.0*PTS" output.mkv

ffmpeg -i qS_lu5dKo9A2qoNW.mp4 -c:v libvpx -b:v 3200k -filter:v fps=15 -t 6 -an -sn -copyts -threads 4 horsie4.webm
ffmpeg -i qS_lu5dKo9A2qoNW.mp4 -c:v libvpx -b:v 3200k -filter:v "setpts=2.0*PTS" -ss 00:00:03 -t 6.9 -an -sn -copyts -threads 4 slowmotion.webm

E:\_Work_\FFMPEG-EXE\ffmpeg-4.2.1-win64.exe -i E:\_Work_\FFMPEG-EXE\475Video.mp4 -filter_complex "[0:v]trim=start=5: duration=10,setpts=PTS-STARTPTS[a];[0:v]trim=start=20: duration=10,setpts=PTS-STARTPTS[b]; [a][b]concat[c];[0:v]trim=start=40: duration=20,setpts=PTS-STARTPTS[d];[c][d]concat [out1] " -map [out1] E:\_Work_\FFMPEG-EXE\Video.mp4

E:\_Work_\FFMPEG-EXE\ffmpeg-4.2.1-win64.exe -i E:\_Work_\FFMPEG-EXE\475Video.mp4 -filter_complex "[0:v]trim=start=5 : duration=10,setpts=PTS*2.5[a];[0:v]trim=start=20 : duration=10,setpts=PTS*0.3[b]; [a][b]concat[c];[0:v]trim=start=40 : duration=20,setpts=PTS*3.5[d];[c][d]concat [out1] " -map [out1] E:\_Work_\FFMPEG-EXE\Video.mp4





For H.264:
ffmpeg -i input.mp4 -map 0:v -c:v copy -bsf:v h264_mp4toannexb raw.h264

For H.265:
ffmpeg -i input.mp4 -map 0:v -c:v copy -bsf:v hevc_mp4toannexb raw.h265
Then generate new timestamps while muxing to a container:

ffmpeg -fflags +genpts -r 30 -i raw.h264 -c:v copy output.mp4



خوب اینم یه سری دستور دیگه که کاملا واضحه داره چیکار میکنه :
منبع :





ffmpeg -i in.ts -filter_complex \
"[0:v]trim=duration=30[a]; \
[0:v]trim=start=40:end=50,setpts=PTS-STARTPTS[b]; \
[a][b]concat[c]; \
[0:v]trim=start=80,setpts=PTS-STARTPTS[d]; \
[c][d]concat[out1]" -map [out1] out.ts


ffmpeg -i utv.ts -filter_complex \
"[0:v]trim=duration=30[av];[0:a]atrim=duration=30[aa];\
[0:v]trim=start=40:end=50,setpts=PTS-STARTPTS[bv];\
[0:a]atrim=start=40:end=50,asetpts=PTS-STARTPTS[ba];\
[av][bv]concat[cv];[aa][ba]concat=v=0:a=1[ca];\
[0:v]trim=start=80,setpts=PTS-STARTPTS[dv];\
[0:a]atrim=start=80,asetpts=PTS-STARTPTS[da];\
[cv][dv]concat[outv];[ca][da]concat=v=0:a=1[outa]" -map [outv] -map [outa] out.ts


-y -i in.mp4 -filter_complex
[0:v]trim=start=10.0:end=15.0,setpts=PTS-STARTPTS,format=yuv420p[0v];
[0:a]atrim=start=10.0:end=15.0,asetpts=PTS-STARTPTS[0a];
[0:v]trim=start=65.0:end=70.0,setpts=PTS-STARTPTS,format=yuv420p[1v];
[0:a]atrim=start=65.0:end=70.0,asetpts=PTS-STARTPTS[1a];[0v][0a][1v]
[1a]concat=n=2:v=1:a=1[outv][outa] -map [outv] -map [outa] out.mp4

1400-07-13 16:03 - FFmpeg Split Video into Frames - FFmpeg Split Video by Size - FFmpeg Split Video into Parts of Equal Duration - FFmpeg Split Video by Scene - FFmpeg Split Video by Time or Duration - FFmpeg Split Video by Width - FFmpeg Split Video Horizontally - Lossless Split Video Command (keep first portion) - How to Use FFmpeg To Resize A Video - How to Rotate Videos using FFmpeg
رضا اکبری استرآبادی

 
- FFmpeg Split Video into Frames
- FFmpeg Split Video by Size
- FFmpeg Split Video into Parts of Equal Duration
- FFmpeg Split Video by Scene
- FFmpeg Split Video by Time or Duration
- FFmpeg Split Video by Width
- FFmpeg Split Video Horizontally
- Lossless Split Video Command (keep first portion)
- How to Use FFmpeg To Resize A Video
- How to Rotate Videos using FFmpeg




منبع : newbedev



//FFmpeg Split Video into Frames
ffmpeg -i video.mp4 thumb%04d.jpg -hide_banner


//FFmpeg Split Video by Size
./split-video.sh huge-video.mov 64000000 "-c:v libx264 -crf 23 -c:a copy -vf scale=960:-1"


//FFmpeg Split Video into Parts of Equal Duration
ffmpeg -i "input_video.MTS" -ss 164 -f segment -segment_time 120 -vcodec copy -reset_timestamps 1 -map 0:0 -an output_video%d.MTS

//FFmpeg Split Video by Scene
split.sh -d 0.5 -o /tmp/parts -f file.mp4

//FFmpeg Split Video by Time or Duration
ffmpeg -ss 00:00:00 -t 00:50:00 -i largefile.mp4 -acodec copy \-vcodec copy smallfile.mp4


//FFmpeg Split Video by Width
ffmpeg -i input.mp4 -filter:v "crop=iw*(5/10):ih*(5/10):iw:0" output.mp4
ffmpeg -i input.mp4 -filter:v "crop=iw*(5/10):ih*(5/10):iw:0:keep_aspect=1" output.mp4


//FFmpeg Split Video Horizontally
ffmpeg -i input.mp4 -filter:v "crop=iw*(5/10):ih*(5/10):iw:0" output.mp4
ffmpeg -i input.mp4 -filter:v "crop=iw*(5/10):ih*(5/10):iw:0:keep_aspect=1" output.mp4


//Lossless Split Video Command (keep first portion)
ffmpegmpeg -i originalvideo.mp4 -ss 0:0:4 -t 0:1:10 -vcodec copy -acodec copy outputvideo.mp4

//Lossless Split Video Command (keep both portions)
ffmpeg -i largefile.mp4 -t 00:50:00 -c -vcodec copy -acodec copy smallfile1.mp4 \-ss 00:50:00 -c -vcodec copy -acodec copy smallfile2.mp4


//How to Use FFmpeg To Resize A Video
ffmpeg -i video_1920.mp4 -vf scale=640:360 video_640.mp4 -hide_banner
ffmpeg -i -vf scale=1280:720 -preset slow -crf 18

//How to Rotate Videos using FFmpeg
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
/*
0 = 90° rotation anti-clockwise and vertical flip

1 = 90° rotation clockwise

2 = 90° rotation anti-clockwise

3 = 90° rotation clockwise and vertical flip

For 180° = =transpose=1,transpose=1"

For 270° = =transpose=1,transpose=1,transpose=1"

Thus, the command for 270° would be like,
*/
ffmpeg -i input.mp4 -vf " transpose=1,transpose=1,transpose=1" output.mp4



1401-01-18 02:03 ffmpeg - mp4box - subtitles
رضا اکبری استرآبادی

 
با سلام
چند روز پیش دوستی سوالی در رابطه با subtitles پرسید . گفتم بعد نیست کد هایش را در اینجا هم قرار بدم .


E:\ffmpeg\ffmpeg.exe -f mp4 -i "E:\ffmpeg\hosein.mp4" -f srt -i "E:\ffmpeg\hosein.srt" -c:v copy -c:a copy -c:s mov_text -metadata:s:s:0 language=fas -c:s mov_text -disposition:s:0 default -metadata:s:s:0 language=English -y "E:\ffmpeg\hosein-srt.mp4"
یا


E:\ffmpeg\ffmpeg.exe -f mp4 -i "E:\ffmpeg\hosein.mp4" -f srt -i "E:\ffmpeg\hosein.srt" -c:v copy -c:a copy -c:s mov_text -metadata:s:s:0 language=persian -c:s mov_text -disposition:s:0 default -metadata:s:s:0 language=English -y "E:\ffmpeg\hosein-srt.mp4"



وبرای اوتوماتیک اجرا شدن زیرنویس :


اول
E:\ffmpeg\mp4box.exe -add E:\ffmpeg\vt1.mp4 -add E:\ffmpeg\vt1.en.srt:lang=English -new ya.mp4
دوم
E:\ffmpeg\ffmpeg.exe -i ya.mp4 -map 0 -c copy -c:s:0 srt mp4box_mov-text_converted-by-ffmpeg-to-srt.mkv



البته به دستور دیگه هم برای فرمت mp4 هست که من به error خوردم !!... خوشحال میشم کسی بلد بود ما رو هم بی بهره نذاره ...


E:\ffmpeg\mp4box.exe -add E:\ffmpeg\vt1.mp4 -add E:\ffmpeg\hosein.srt:txtflags=0xC0000000 -new ya.mp4

که اینم error ش هست ... !؟

mp4box-srt- ffmpeg

موفق باشید.
1401-05-01 11:06 ffmpeg - کاهش سایز - فریم - کیفیت - ffmpeg Lower the video quality
رضا اکبری استرآبادی

 
کاهش سایز بر اساس فریم


G:\_Work_\FFMPEG-EXE\ffmpeg.exe -i 'C:\Users\akbari\Videos\Rec 0003.mp4' -vcodec libx265 -crf 20 C:\Users\akbari\Videos\output.mp4

کاهش سایز براساس کیفیت

G:\_Work_\FFMPEG-EXE\ffmpeg.exe -i C:\Users\akbari\Videos\output2.mp4 -c:v libx264 -b:v 300k C:\Users\akbari\Videos\output3.mp4
1401-05-07 14:13 split file in ports 30 Seconds - FFMPEG -تقسیم یک فایل به فاصله های زمانی 30 ثانیه
رضا اکبری استرآبادی

 

تقسیم یک فایل به فاصله های زمانی 30 ثانیه .
تو کد زیر با فرض اینکه فایل 300 ثانیه می باشد به 10 قسمت تقسیم کرده ایم :



# split file in ports 30 Seconds

$OriginPath="C:\Users\akbari.r\Videos\"
$NameFile="m"
$FormatFile=".mp4"

$FFmpegexe="G:\_Work_\FFMPEG-EXE\ffmpeg.exe"

$TimeSpan_strat=(New-TimeSpan -Hours 0 -Minutes 0 -Seconds 0)
$TimeSpan_Step=(New-TimeSpan -Hours 0 -Minutes 0 -Seconds 30)
write-host $TimeSpan_strat
write-host $TimeSpan_Step
for ($num = 1 ; $num -le 10 ; $num++)
{


$Origin=$OriginPath+$NameFile+$FormatFile
$Destination= $OriginPath+ $NameFile+"P"+$num+$FormatFile
$Destination=$Destination.Replace("+" , "")

G:\_Work_\FFMPEG-EXE\ffmpeg.exe -i $Origin -ss $TimeSpan_strat -t $TimeSpan_Step -y -codec copy $Destination

$TimeSpan_strat=[TimeSpan]$TimeSpan_strat+[TimeSpan]$TimeSpan_Step

write-host $TimeSpan_strat
write-host $num

}