2013-03-05 12 views
6

Jeśli mam plik .mp4 ze strumieniem wideo i strumieniem audio. Po wykonaniu tego polecenia:Czy istnieje sposób uzyskania dokładnie 1-sekundowego klipu przy użyciu ffmpeg z przychodzącym kodekiem AAC do AAC

ffmpeg -i input.mp4 -ss 00:00:14.000 -t 00:00:01.000 -vn -c:a libfaac audio.m4a 

Wynikiem jest czas trwania: 00: 00: 01.02, początek: 0,021179. Chcę się upewnić, że czas rozpoczęcia zaczyna się od 0, więc resample go za pomocą:

ffmpeg -i audio.m4a -ss 00:00:00.000 -t 00:00:01.000 -c:a libfaac audio2.m4a 

Wynikiem tego polecenia ma Czas trwania: 00: 00: 01.02, start: 0.000000. Czy istnieje sposób, aby uzyskać dokładną 1 sekundę jako wynik końcowy z wartością 0 dla początku?

W poprzednich próbach użyłem flag -map 0: 1 -ab 128k -ar 44100 ale zapewnia to samo wyniki.

Mogę podać pełne wyjście z ffmpeg, jeśli zajdzie taka potrzeba.

Dzięki.

+0

kilka pytań: Jaka jest częstotliwość próbkowania audio w oryginalnym pliku? 44100 lub 48000 Hz? Czy oryginalny dźwięk również jest AAC? Jeśli tak, to czy chcesz transkodować audio (co spowoduje utratę pokoleniową), zamiast bezstratnego remuxingu? –

+0

Oto informacje o strumieniu audio: Strumień nr 0: 1 (pol): Dźwięk: aac (mp4a/0x6134706D), 48000 Hz, mono, fltp, 96 kb/s Co do drugiego pytania, transkodowanie dźwięku byłoby w porządku . Wystarczy uzyskać * dokładnie * jedną sekundę czasu trwania z czasem rozpoczęcia równym 0. –

Odpowiedz

0

naprawiłem to przez liczbę klatek zamiast

$ ffmpeg -i input.mp4 -ss 14 -frames 46 -vn pass-1.m4a 

$ ffmpeg -i pass-1.m4a -c copy audio.m4a 

Rezultatów

 
$ ffmpeg -i audio.m4a 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'audio.m4a': 
    Metadata: 
    major_brand  : M4A 
    minor_version : 512 
    compatible_brands: isomiso2 
    encoder   : Lavf55.1.100 
    Duration: 00:00:01.00, start: 0.000000, bitrate: 135 kb/s 
    Stream #0:0(und): Audio: aac (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 
          125 kb/s 
    Metadata: 
     handler_name : SoundHandler 
Powiązane problemy