Bir python işlevinde videodan ses çıkarmak için ffmpeg dosyasını kaydırın


0

Videodan ses çıkarmak için ffmpeg'i bir python işlevine sarmak istiyorum. Komut satırında mp4 videolardan başarıyla ses çıkartabiliyorum.

ffmpeg -i sourcevideo.mp4 -vn -acodec copy audiotrack.m4a

Fakat aşağıdaki fonksiyon çok garip bir hata veriyor ve bir çözüm bulamıyorum:

def extractAudioTrack(self,inputFilename):
    print "extract audio from of: " + inputFilename
    command = [ FFMPEG_BIN,
                '-i', inputFilename,
                '-vn', 
                '-acodec', 'copy', 
                '-f', 'm4a',
                '-'
                ]
    pipe = sp.Popen(command, stdout = sp.PIPE)
    return StringIO(pipe.proc.stdout.read())

Hata:

[NULL @ 0x657480] Requested output format 'm4a' is not a suitable output format
pipe:: Invalid argument

Neyi yanlış yapıyorum?


Sen örnek komut satırı kodunuzla eşleşmiyor. Örnek komutunuzda bulunmuyor -f m4a, belki de kodunuzdan çıkarın.
ağır,

Yanıtlar:


1

Çözüm bulundu. MP4 bir boruya yazamaz ve bu nedenle akamaz. Akış akışına uyulmaması için, dosyanın başlangıcında bittiğinde çıkış başlığını yazabilmesi için geri dönmesi gerekir.

Bunu düzeltmek için bir çözüm buldum. Basitçe -movflags frag_keyframe + empty_moov seçeneğini ekleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.