spl_autoload_register fonksiyonu ile Composer Beraber Kullanma

Merhabalar,

Genel olarak kendi sınıflarını yazan kişilerin çoğu tek tek require etmemek için spl_autoload_register işlevini kullanır ama eğer composer ile bir şeyler dahil edecekseniz new ile sınıfı dahil ettiğiniz anda spl_autoload_register çalıştırdığı fonksiyon da bu isime ait dosyanın require edilmediğini görüp hata verecektir.

Aslında önüne geçmesi çok basit  composer’dan önce büyük ihtimalle şu şekil’de kullanıyordunuz;

<?php
function SinifYukle($SinifAdi)
{
  require . 'siniflarim/' . strtolower($SinifAdi) . '.php';
}
spl_autoload_register('SinifYukle');

Söylediğim gibi composer ile dahil ettiklerinizi kullanacak iseniz bu kod yapınız da küçük bir değişiklik yapmanız yeterli olacaktır.

<?php
function SinifYukle($SinifAdi)
{
    if (file_exists('siniflarim/' . strtolower($SinifAdi) . '.php')) {

        require . 'siniflarim/' . strtolower($SinifAdi) . '.php';
    }
}

spl_autoload_register('SinifYukle');

Farklı olarak ne yaptık siniflarim adlı dizinde bu fonksiyonun adına ait bir dosya var mı? baktık var ise dahil ettik yok ise null boş bıraktık

Böylece bu basit hatanın önüne geçebilirsiniz.

MacOS – Composer Kurulumu [Hata Çözümleriyle]

Merhabalar,

Composer windows cihazlara rahat şekilde kuruluyor uğraşmıyorsun ama mac cihazlarda maalesef o kadar basit olmuyor.

Öncelikle ben 03-11-2020 Tarihine göre anlatıyorum kurulum şekli değişmiyor tabi ki sadece içeren kodlar da küçük değişiklikler olabilir o yüzden sitesine uğramayı unutmayın. Güncellemeler ve değişiklikleri takip etmeniz için.

Composer Website

Kuruluma başlayalım Spotlight aramasını açın ve terminal.app yazın.

Terminali açtıktan sonra ilk yazmanız gereken kod

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

terminal üzerine yapıştırın ve return edin.

2. Aşama:

php -r "if (hash_file('sha384', 'composer-setup.php') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

terminal üzerine yapıştırın ve return edin.

3. Aşama:

php composer-setup.php

terminal üzerine yapıştırın ve return edin.

4. Aşama:

php -r "unlink('composer-setup.php');"

terminal üzerine yapıştırın ve return edin.

5. Aşama:

Şu anda hiç bir hata almadı iseniz kurulumu gerçekleştirdiniz zaten mac üzerine kuran herkes bu aşamaya kadar geliyor.

php composer.phar --version

Terminal üzerine bu kodu yazıp return edin çıktı olarak Composer Version x.x.x şeklinde verdi ise kurulum başarılıdır.

6. Aşama:

Asıl mevzu bundan sonrası şimdiye kadar yerel bir kurulum yaptık bizim bu composerı global olarak kurmamız gerekiyor ki her seferinde composer diyerek erişebilelim.

Bunun için yapmamız gereken tek şey şu kodu yazmak

mv composer.phar /usr/local/bin/composer

7. Aşama:

command not found: mv.composer.phar diye hata aldı iseniz okumaya devam edin eğer bu hatayı almadı iseniz sizin işleminiz bitmiştir. global olarak kurdunuz artık composer diyerek erişebilirsiniz. Fakat söylediğim hatayı aldı iseniz okumaya devam edin.

Bu hatanın sebebi usr/local dizinin’de bin adlı bir klasörün var olmaması bu yüzden bu klasörü siz manuel olarak oluşturacaksınız.

Terminal ekranına dönün ve şu kodu yazın.

mkdir /usr/local/bin

8. Aşama:

Eğer bunu yazdıktan sonra mkdir: /usr/local/bin: Permission denied hatası aldı iseniz.

Sizin işiniz hala bitmedi okumaya devam edin.

bu hatayı almayan kişiler ise 6. Aşamaya dönsün ve o kodu tekrar yazsın. composeri global olarak kurmuş olacaktır.

Terminalı açın ve aynı kodu bu kez sudo izni ile yazacağız.

sudo mkdir /usr/local/bin

9. Aşama:

Sizden şifre isteyecektir bu şifre oturum şifrenizdir şifrenizi girip return edin şifrenizi yazarken terminal ekranında şifreniz görünmeyecektir. Yani siz yazıp return edin sadece.

Şimdi bin klasörünü oluşturduk sıradaki yapacağımız işlem composer dosyasını taşımak bunun için tekrar terminal ekranına dönün ve şunu yazın.

mv composer.phar /usr/local/bin/composer

10. Aşama:

Eğer hiç bir hata almadı iseniz composer global olarak kurdunuz fakat mv: rename composer.phar to /usr/local/bin/composer: Permission denied diye bir hata aladı iseniz terminal ekranına dönün gene sudo izni ile şu şekilde yazın.

sudo mv composer.phar /usr/local/bin/composer

Son:

Bu kadar composer global yaptınız. Eğer bu aşama da gene password ister ise gene oturum şifrenizi girersiniz istemez ise direkt kurdunuz demektir. Şimdi test edelim bakalım global olarak taşıdık mı?

composer --version

çıktı olarak Composer Version x.x.x şeklinde verdi ise kurulum başarılıdır.

Foruma kayıtlı değilseniz kayıt olup yorum yapmayı kayıtlı isenizde beğenip yorum yapmayı unutmayın.

Posta Yedeğini Alma Ve Geri Yükleme – MacOS

Merhabalar,

Çoğu kişi postaların taşınabilir veriler olduğunu bilmiyor yedeğini alınıp farklı bir hesaba aktarılabildiğini yeni açılmış bir hesaba eski bir e-postadaki dataların aktarılabildiğini vb. bugün size MacOS’da Mail Uygulaması ile nasıl posta yedeğini alınır ve farklı hesaba aktarılır onu göstereceğim.

Bu örneği size Google Gmail’de yeni açtığım bir e-posta adresine zaten varolan bir e-posta adresimdeki e-postaları taşıyarak göstereceğim.

MACOS Mailler Uygulaması

Yeni Bir E-Posta hesabı nasıl Eklenir ?

İlk olarak mail uygulamasını çalıştırın açıldıktan sonra üst bardaki Apple logosunun yanındaki Mail yazısına tıklayın.

Daha sonra da hesap ekle diyerek hesap ekleme ekranına erişin.

Burada bir çok hazır kurulum bulunuyor fakat siz kurumun e-postasını kuracağınız için en alttaki başka bir mail hesabını seçerek e-posta adresini şifresini görünecek isimi ve profil e-postasını belirtip gelen giden mail sunucusunu girmelisiniz.

Ben örneği Google Gmail’de açtığım yeni e-posta adresi ile göstereceğim için ona gireceğim.

Postalar Nasıl Yedeklenir?

ilk olarak altta gördüğünüz gibi yeni e-posta adresinde sadece 2 tane e-posta bulunuyor ben şimdi xmstfax@gmail.com adresimdeki önemli klasöründeki iletilerin yedeğini alacağım.

Bu arada toplamda 997 tane ileti bulunuyor yapacağım şey çok basit posta kutusunda önemli klasörü üstüne gelip sağ tıklayacağım ve Posta Kutusunu Dışa Aktar diyeceğim

daha sonra bu yedeği nereye indireceğini soracaktır ben belgelerde mailler diye bir klasör açıp içine aktaracağım.

Gördüğünüz gibi mail yedeğim indi ve toplam da 70 mb’lık bir posta varmış.

Ben şu anda sadece 1 tane posta kutusunu indirdim oda önemli posta kutusu bu şekilde tüm posta kutularını indireceksiniz.

Postaları yeni E-Posta Hesabına Aktarma Nasıl Yapılır?

Buda son kısım oluyor gene üst menüden mailler uygulaması seçili iken Dosya > Posta Kutularını içe Aktar… diyoruz.

Daha sonra bu şekilde bir pencere açılacak mbox biçimindeki dosyalar diyerek bunu geçici dizine aktarıyoruz.

İçe aktarma süresi maillerin sayısına göre değişecektir.

Ve bitti şu anda yedeğini aldığımız mailleri tekrardan geçici dizine attık ve toplamda 977 ileti olduğu görüyoruz son olarak yapacağım tek şey tüm iletileri seçip yeni yerine aktarmak bunun için yapacağınız şey içe aktaracağınız dizini seçtikten sonra command+a tuşlarına basmak. ve sağ tıklayıp Şuraya taşı üstüne gelip taşınacak olan e-posta adresindeki mail klasörünü seçiyoruz.

ve bu kadar artık postalarınız yeni e-posta adresine taşındı.

müşterilerinizi mağdur etmeyin. İşinizi tam yapın ileride arkanızdan sövmek yerine övgüde bulunup eşine dostuna önersinler. İyi forumlar dilerim.

Windows Geçici Dosyaları Temizleme Bilgisayarınızda Yer Açma

Birçoğunuz bundan habersizdir hatta çoğunluk ilk kez duyuyor olabilir genelde bir program indirip kullandığınız da bunlar oyun, ofis, web vb. türevde programlar olabilir bu programlar geçici dosyalar oluşturur çoğunu işler yada iptal edip siler ama her zaman bu işlemi başarılı bir şekilde gerçekleştirmez yada bilerek tutar.

Kısaca bilgisayarınızda gereksiz bir yer kaplar bunlar ki bu makaleyi okurken aynı zaman da deneyin eğer 2-3 yıldır format atmadı iseniz bilgisayarınıza 60-70 GB gereksiz dosyanın yer kapladığını ve bunları hiç fark etmediğinizi görünce şaşıracaksınız.

Başlayalım şunu belirteyim ben düzenli olarak temizlediğim için örnekte çok fazla dosya görmeyeceksiniz ama kendiniz denediğinizde miktar sizi çok şaşırtacak.

  1. Başlat’ı açın arama kısmına Çalıştır Yazın.
  2. Çıkan ekrandaki kutucuğa %temp% yazın ve tamam deyin.

Gördüğünüz gibi bir dizin açılacaktır ben son temizlemeyi 15 eylül’de yaptım 15 eylülden bugüne 858 Öğe oluşmuş

Toplamda ise 2.889 Dosya ve  2,55 GB’lık bir alan kaplıyor şimdi buradaki tüm dosyaları seçip silin bir kaç tanesi uyarı verecektir onları atla diyerek geçebilirsiniz önemi yok açık olan bir program şuanda kullanıyor olduğundan silmenizi engelliyordur bu işlemi zaten bilgisayarı kapatıp açtığınız da yapar iseniz hiç bir engel çıkmayacaktır çıkarsa da dediğim gibi atla diyerek geçebilirsiniz.

Bu ilk işlemdi ikinci işleme geçelim:

  1. Başlat’ı açın arama kısmına Çalıştır Yazın.
  2. Çıkan ekrandaki kutucuğa temp yazın ve tamam deyin.

Bu dizinde ise 20 öğe 1.649 dosya ve 451 MB’lık bir kaplanan yer var burada da aynı işlemi yapın tümünü seçin ve silin uyarı verir ise atlayın.

Sırada ise son kısımlara geliyoruz:

  1. Başlat’ı açın arama kısmına Bilgisayar Yazın.
  2. Çıkan ekranda temizlemek istediğiniz diski seçin ben C Diskini sistemin kurulu olduğu dizini temizleyeceğim.
  3. Seçtikten sonra sağ tıklayıp özellikler deyin.
  4. Açılan pencere de Diski Temizle Butonuna tıklayın.

Daha sonra açılan pencere de en altta sistem dosyalarını temizle butonuna tıklayın

Son olarak açılacak pencere de silinecek dosyalar yazısının altındaki tüm kutucukları işaretleyin ve tamam diyin.

Ve bu kadar toplam da ise 14 GB’lık çöp temizlemiş olduk ben düzenli olarak bunu yaptığım halde 15 günde 14GB’lık bir çöp birikmiş bunu düzenli olarak yapar iseniz bol bol alanınız kalır.

Windows CMD Üzerinden DNS Değiştirme

Bunun uzun yolu vardır ağ bağlantılarına erişip aktif ağ üzerinde ipv4 protokolünü seçip manuel olarak değiştirmek çoğu kişi bunu yapamaz yada zor gelir yada farklı bir ayar yapıp bozarım diye korkar. Bu yüzden program indirir program ile DNS değiştirir. Aslında uzun uzun iş yükü yapmadan da kısa bir şekilde DNS değiştirmeniz mümkündür.

İlk olarak aktif olarak şuan da kullandığınız ağ bağlantısının adını öğrenmeniz gerekiyor bunun için şu yolları izleyin:

  1. Başlat’ı açın arama kısmına Çalıştır Yazın.
  2. Açılan Penceredeki kutucuğa ncpa.cpl yazdıktan sonra tamam deyin.

Görseldeki gibi ağ bağlantıları alanı açılacaktır. Gördüğünüz gibi 3 tip bağlantı alanı çıktı bende bunların biri kablolu olarak Ethernet ikincisi ise Kablosuz olarak Wi-Fi hangisini değiştirmek istiyor iseniz onun adını kullanacaksınız örnek olması için ben hem kablolu hem de kablosuz ağımın DNS Adreslerini değiştireceğim.

Kablosuz ile başlayalım örnek olarak ben google DNS Adreslerini kullanacağım Bunlar 8.8.8.8 ve 8.8.4.4:

netsh interface ipv4 set dns "Wi-Fi" static 8.8.8.8 primary

netsh interface ipv4 add dns "Wi-Fi" 8.8.4.4 index=2

Veya

netsh interface ip add dns name="Wi-Fi" addr=8.8.8.8

netsh interface ip add dns name="Wi-Fi" addr=8.8.4.4 index=2

Kablolunun DNS Adreslerini değiştirelim:

netsh interface ipv4 set dns "Ethernet" static 8.8.8.8 primary

netsh interface ipv4 set dns "Ethernet" static 8.8.8.8 index=2

Veya

<!-- wp:paragraph -->
netsh interface ip add dns name="Ethernet" addr=8.8.8.8

netsh interface ip add dns name="Ethernet" addr=8.8.4.4 index=2

Öncelikle şunu belirtelim bunu yapmak için yönetici izni gerekmektedir. Eğer yönetici izni olmadan CMD çalıştırır iseniz:

Görselde gördüğünüz gibi bir uyarı alacaksınız. Bu yüzden CMD çalıştırmadan önce sağ tıklayıp yönetici olarak çalıştır demeyi unutmayın.

Yukarıda verilen kodları tek tek girmeniz gerekiyor 2 satır halinde girmeyin önce ilki sonra diğeri

Not: Örnekte ipv4 protokolü üzerinden gösterdik eğer siz ipv6 değiştirecek iseniz o alanları 6 olarak değiştirebilirsiniz.

Son olarak yaptığınız değişiklilerin hepsini görmek için şu komutu yazın böylece tüm ağ bağlantılarının ayarlarını önizlersin:

netsh interface ip show config

file_get_contents ağırlığını çözmek için alternatif fonksiyon

Üzerinde çalıştığım proje de yaşadığım bir sorun vardı local üzerinde çalışırken bunu fark etmemiştim fakat sunucuya aktardığımda sayfa yüklenme süresi 2-3 saniyelere çıkmıştı sebebini anlayamadım.

Buna sebep olan olayı bulmak için yaklaşık 2 saat uğraştım saçma şekilde sebep olan şey file_get_contents sınıfıydı.

Önemli olmayan genel ayarlarımı json olarak tutuyorum ve bu dosyaları file_get_contents sınıfı ile çağırıyordum. 5-10 Tane dosya da bu hız farkını çok hissetmiyorsunuz fakat benim gibi bir çok sayfayı yüklüyorsanız bunu hissediyorsunuz.

Bende alternatif çözümler aradım ve şu an kullandığım yöntem ile 3 saniye geçikme süresini 0,0080 saniyeye düşürdüm yani katlarcasına hız farkı çıktı ortaya.


Fonksiyon:

function print_xml_data_file($path = "")
{
    require($path);
}

function get_xml_data($path = "")
{
    ob_start();
    print_xml_data_file($path);
    $xml_file = ob_get_contents();
    ob_end_clean();
    return $xml_file;
}

Fonksiyon kullanımıda şu şekilde:

$file = json_decode(get_xml_data('/json/jsondosyasi.json'),true);

Ben dediğim gibi bunu json dosyalarım için kullanıyorum normal şartlarda kullanma şekli json_decode(file_get_contents("siteadresi.com/json/jsondosyasi.json"),true) bu şekildeydi fakat aşırı derecede hosting’e attıktan sonra bunu fark ediyorsunuz bu arada.

Ağırlaştığı için alternatif bu yöntemi türettim deneyin hız farkına şaşıracaksınız.

Yabancı Kaynaktan Sebeplenen Güvenli Değil Sorunu Çözümü

Merhaba arkadaşlar SSL serfitikası olduğu halde güvenli değil sorunu olanlar bilir eğer kullanıcılara url girdiriyor ise platform kullanıcılar SSL serfitikası olmayan sitelerin linklerini girdiği zaman o link’de https güvenli görünmeyecektir.

Bunu genellikle forumlar tanıtım siteleri kullanıyor neden bahsediyorum şu şekil’de örnek ile açıklıyorum. Resmin kaynağı imagevisit olsun.

Resim Kaynağı : https://www.imagevisit.com/images/2017/08/28/bucurcin.jpg

benim paylaşacağım proxy’de bu şekil’de olacaktır.

Benim Proxy : https://www.arcface.net/image.php?url=https://www.imagevisit.com/images/2017/08/28/bucurcin.jpg

Kendi kişisel web sitemde kullanıyorum bu özelliği kendim için hazırladığım bu dökümanı yararlı olabileceğini düşündüğüm için paylaşıyorum.

Sistem belli zaten get ile gelen url adresini htmlspecialchars ile temizliyor trime sokarak boşlukları siliyor  daha sonra kontrol yani get_headers ile gelen linke bakıyor kontrol[0] ile get_headers’da dizi halinde değer proxy bilgileri arasında ilk olan http 1.1 200 ok dönüyor ise böyle bir dosya var yok ise else dönüyor else’de de zaten hatalı resim img dönüyor mantığı basit yani bu size şunu sunuyor normalde resim linkini böyle girersiniz. 

<img src="https://www.imagevisit.com/images/2017/08/28/bucurcin.jpg">

ama resimi çektiğiniz yer eğer ssl serfitikalı değil ise size https sorun çıkartacaktır. bu yüzden böyle bir proxy yapar iseniz

<img src="https://www.arcface.net/image.php?url=https%3A%2F%2Fwww.imagevisit.com%2Fimages%2F2017%2F08%2F28%2Fbucurcin.jpg">

Yazdığınız zaman resimi sizin siteniz’den çeker gibi çekecektir. Buda zaten siteniz https olduğu için https sorun vermeyecektir.

<?php

    $url = ""; $link = htmlspecialchars(trim($_GET['url'])); $kontrol = get_headers($link);

    if($kontrol[0] == 'HTTP/1.1 200 OK'){

        $url = $link;

    }else{

        $url = htmlspecialchars(trim('https://www.arcface.net/upload/dosya/default-thumb_159b13c4ed780a.jpg'));

    }

    $imginfo = getimagesize( $url );

    header("Content-type: ".$imginfo['mime']);

    readfile( $url );

?>

PHP Tarihi Ay, Gün Şeklinde Türkçe Yazdırma

Bu bizzat benim bile çok fazla ihtiyacım olan bir şey ezberlenmeyecek kadar uzun bir şey olmasa da bu tür fonksiyonlar ve terimler akılda tutulması zor oluyor sürekli yazmadığımız için akıldan çıkıyor görünce böyleymiş desek bile sonuçta önce görme isteği duyuyoruz.

PHP’de tarih fonksiyonları siz çevirmediğiniz sürece ingilizce kalmaktadır.
Bu vereceğim kod varsayılan dili türkçe olarak belirtip tarihi size türkçe olarak çıktı yapmaktadır.

Öncelikle local dilimizi türkçe olarak belirtelim bunu sayfanızın başına yazın

setlocale(LC_TIME,"tr_TR.UTF8");

daha sonra ise tarihi gün ay şeklinde yazılı nasıl yazdırırız onu göstereyim.

strftime("%e %B %Y %A", strtotime(date ("d-m-Y H:i:s", strtotime("22-09-2021 04:34:00"))));

Eğer setlocale ile dilin türkçe olduğunu belirtmeseydik üstteki kodun çıktısı böyle olacaktı. 22 September 2021 Wednesday

Ama belirttiğimiz için bize türkçe olarak çıktı verecektir.
22 Eylül 2021 Çarşamba

gösterim sırasını değiştirmek isterseniz "%e %B %Y %A" Kısmını düzenlemek yeterlidir.

FFMPEG İle Toplu İşlemler resim, video vb.

FFMPEG Şu aralar çok fazla kullandığım bir servis oldu önceden videoları bir video edit programına atıp oradan çıktı alırdım ama artık FFMPEG kullanarak tek bir satır ile istediğim formatta çıktı alıyorum.

Öncelikle bir videonun tipini nasıl değiştirirsiniz FFMPEG ile onu göstereceğim aynı şekilde bir görsel tipini nasıl değiştirisiniz bunu göstereceğim.

Daha sonra toplu işlemler nasıl yapılır onu göstereceğim.

İlk Olarak bir görsel nasıl değiştirilir onu göstermek istiyorum.

ffmpeg -i gorsel.jpg gorsel.png

Üstteki kod en basitinden gorsel.jpg adlı görseli gorsel.png olarak değiştirir. Fakat diyelim ki a klasöründeki bir görseli b klasörüne değiştirerek kaydetmek istiyorsunuz. O zamanda şu şekilde kullanacaksınız.

// Öncelikle en dış dizinde olduğunuza emin olmak için şunu yazın "cd /"
cd /

Daha sonra görselin yolunu girerek çevirme işlemini gerçekleştirin:

// /Users/arcface/Downloads/ dizininden /Users/arcface/Desktop/ dizinine gorseli değiştirerek aktarıyoruz.
ffmpeg -i /Users/arcface/Downloads/gorsel.jpg /Users/arcface/Desktop/gorsel.png

Yukardaki örnekte gösterdiğim şekilde dizin yolunu belirterek a dizinindeki dosyayı b dizinine bu şekilde aktarabilirsiniz.

Peki videoları nasıl çevirebiliriz örneğin mov uzantılı bir video klibi mp4 nasıl çeviririz.

ffmpeg -i video.mov -codec copy video.mp4

Gayet basit ve hızlı şekilde yukarıdaki kod ile işlemi gerçekleştirebilirsiniz. Eğer a klasöründen b klasörüne aktaracaksanız da görseldeki yöntem ile bire bir aynıdır. Dosya yolu girmeniz yeterli.

Geçelim toplu işlemlere benim en çok ihtiyacımın olduğu bölümde bu zaten binlerce görselim var ve hepsini çevirmem gerekiyor ama çevirirkende adlarının eski adlarıyla aynı olması gerekiyor bunu nasıl yaparız.

for i in *.jpg;
  do name=`echo "$i" | cut -d'.' -f1`
  echo "$name"
  ffmpeg -i "$i" "${name}.png"
done

Aslında bunun içinde bir for döngüsü kullanıyoruz .jpg uzantılı tüm görselleri döngüye sokuyor bu döngüdeki bu değerleri her dönüşte name değişkenine aktarım ffmpeg kullanıyoruz bu şekilde topluca jpg dosyalarını aynı isimde uzantılarını değiştirerek kaydetmiş oluyoruz.

Peki diyelim ki burada farklı bir dizine kaydetmek istiyorsunuz toplu işlemde o zaman ne yapacaksınız. Tekli işlemdeki mantığı kullanamazsınız çünkü name değişkenine atarken aynı zamanda dizin yolunuda atıyoruz bu sebeple öncelikle görselin olduğu dizine erişmek gerekiyor.

cd /Users/arcface/Downloads/gorseller/

Üsteki şekilde öncelikle terminal’den gorsel dizinine giriyoruz daha sonra

for i in *.jpg
  do name=`echo "$i" | cut -d'.' -f1`
  echo "$name"
  ffmpeg -i "$i" "/Users/arcface/Desktop/yeni_dizin/${name}.png"
done

Yukarıdaki şekilde kullanıyoruz böylece bulunduğu dizin görsellerin dizini olduğundan dolayı sadece görsel adını değişkene atıyor ve yeni yolu 2 parametreye atadığımız için yeni dizine kaydetmiş oluyor.

Videolarda nasıl toplu işlem yaparız. Aslında gene aynı mantık sadece ffmpeg kodunu düzenleyeceğiz.

for i in *.mov;
  do name=`echo "$i" | cut -d'.' -f1`
  echo "$name"
  ffmpeg -i "$i" -codec copy "${name}.mp4"
done

Gördüğünüz gibi sadece -codec copy kodunu ekledik ve uzantıları değiştirdik işlem bire bir aynı a klasöründen b klasörüne aktarmak içinde üstteki örneğin aynını yapabilirsiniz.