Not: Aynı soruyu henüz bu komünü bulamadığım kısa bir süre önce stackoverflow'a gönderdim . Bu soruyu bu topluluğa daha uygun olduğu için tekrar gönderiyorum.
1. Ne denedim
AVCHD kameramla kaydedilen bazı .MTS (AVCHD formatı) dosyalarım var . Özellikleri aşağıda gösterildiği gibidir:
$ ffprobe 140612_Canon-00000.MTS
ffprobe version 2.2.1 Copyright (c) 2007-2014 the FFmpeg developers
(snip)
Input #0, mpegts, from '140612_Canon-00000.MTS':
Duration: 00:48:58.40, start: 0.800300, bitrate: 5563 kb/s
Program 1
Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448),
yuv420p, 1440x1080 [SAR 4:3 DAR 16:9],
29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz,
stereo, fltp, 256 kb/s
Kare hızı / zaman tabanı kısmına dikkat edin: 29,97 fps, 29,97 tbr, 90k tbn, 59,94 tbc
Şimdi İsterdim yeniden kodlama H264 video akışı olmadan, .mp4 dosyası bu dosyayı dönüştürmek ile, diğer taraftan, AAC onun ses akışını transcoding . Bu yüzden aşağıdaki komutu denedim:
ffmpeg -i 140612_Canon-00000.MTS -t 60 -y -vcodec copy -acodec libfaac -ab 128k 140612_Canon-00001.MTS.mp4
2. Sonuç
ve çıktı dosyasının özellikleri aşağıda gösterildiği gibidir:
$ ffprobe 140612_Canon-00000.MTS.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '140612_Canon-00000.MTS.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf55.33.100
Duration: 00:01:00.04, start: 0.021333, bitrate: 4590 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1440x1080 [SAR 4:3 DAR 16:9], 4448 kb/s,
59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D),
48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
Kare hızı / zaman tabanı kısmına bakın: 59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc . Her ne kadar ffmpeg video akışını kopyalamış olsa da, kare hızı ve zaman tabanı iki kat değerle değiştirildi .
Bu nedenle, çıkış dosyasını QuickTime Player veya VLC Player ile açıp oynattığımda sesin bir sorunu yok, ancak video akışı düzgün oynatılmıyor. Video, tekrar tekrar çerçevesinin ileri ve geri titremesi ile oynatılır.
3. Soru
- H264 video akışını doğru şekilde yeniden kodlamadan .MTS dosyasını (AVCHD) fmpmp ile .mp4'e nasıl dönüştürebilirim ?
- Kapsayıcıyı ve anahtarını dönüştürdüğümde orijinal kare hızı / zaman tabanı değerlerini (fps / tbr / tbn / tbc) nasıl saklayabilirim .
ffmpeg
-vcodec copy
- Bir video akışını yeniden kodlamadan ffmpeg komut satırı seçenekleriyle kare hızı / zaman tabanı değerlerini (fps / tbr / tbn / tbc) nasıl ayarlayabilirim .
Herhangi bir fikir?
4. -r 29.97
Seçenek ekleme
Profesör Sparkles bana eklemem için bir tavsiye verdi -r 29.97
. Bunu denedim:
ffmpeg -i 140612_Canon-00001.MTS -t 60 -r 29.97 -y -vcodec copy -acodec libfaac -ab 128k 140612_Canon-00001.MTS.mp4
Ancak, çıktı dosyasının kare hızı / zaman tabanı hala yanlış:
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1440x1080 [SAR 4:3 DAR 16:9], 4448 kb/s,
59.94 fps, 59.94 tbr, 11988 tbn, 59.94 tbc (default)
5. MP4Box kullanarak Remux
Profesör Sparkles'ın tavsiyelerine göre, MP4Box kullanarak demux ve remux'u denedim.
brew install mp4box
ffmpeg -i 140612_Canon-00000.MTS -t 60 -y \
-vcodec copy -an 140612_Canon-00000.MTS.h264
ffmpeg -i 140612_Canon-00000.MTS -t 60 -y \
-vn -acodec libfaac -ab 128k 140612_Canon-00000.MTS.aac
mp4box -add 140612_Canon-00000.MTS.h264:fps=29.97 \
-add 140612_Canon-00000.MTS.aac \
-new 140612_Canon-00000.MTS.mp4
ve çıktı:
ffprobe 140612_Canon-00000.MTS.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '140612_Canon-00000.MTS.mp4':
(snip)
Duration: 00:02:00.22, start: 0.000000, bitrate: 2293 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661),
yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 2228 kb/s,
29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
creation_time : 2014-07-14 00:38:23
handler_name : 140612_Canon-00000.MTS.h264:fps=29.97
- Imported with GPAC 0.5.0-rev4065
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 125 kb/s (default)
Biraz ileriye doğru görünüyor. Kare hızı / zaman tabanı kısmına bakın: 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc . Bu, orijinal akışına eşleşmektedir haricindetbn
(kaptan zaman tabanı değeri).
Ancak, çıktı dosyasını Quicktime Player veya VLC ile oynattığımda , video yarı hızda oynatılıyor .
Her ne kadar orijinal dosya 90k tbn
(saniyede 90000 keneler) ve MP4Box'ın yeni çıktı dosyasının orijinal dosyanın 30k tbn
sadece üçte biri olmasına rağmen, çıktı dosyası yarı hızda oynatılır.
Sebebini bilmiyorum. Ama geri kalanı, tbn
değeri nasıl ayarlayabileceğimi düşünüyorum .
5-b. MediaInfo'nun çıktı dosyası hakkındaki raporu
Ayrıca MP4Box kullanarak 5. Remux tarafından oluşturulan çıktı dosyasında MediaInfo aracı denedim . Çıktı burada: https://gist.github.com/kaorukobo/c5ab9eaa413dff6cd26a
6. avconv çalışıyor
Volodya'nın avconv
iyi çalıştığını bildirdi . Ayrıca aynı kamerayla kaydedilmiş kısa bir örnek film dosyası (Canon-00006.MTS) hazırladım. Tamam, deneyelim:
brew install avconv
avconv -i Canon-00006.MTS -c:a copy -c:v copy -y Canon-00006.MTS.mp4
ffprobe Canon-00006.MTS.mp4
Çıktı dosyasının ffprobe bilgileri burada: https://gist.github.com/kaorukobo/5b53244ade2632ff1211 ve kare hızı / zaman tabanı bilgileri aşağıdaki gibidir: 59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc
Volodya'nın bildirdiği gibi çıktı dosyası VLC Player ile iyi oynatıldı . Bununla birlikte, Quicktime Player X ile açıldığında, video normal hızda oynatıldı, ancak çerçevesinin tekrar tekrar titremesi sağlandı.
7. Neden "Ücretsiz AVCHD to MOV" uygulaması çalışır?
Gibi benim önceki yorumunda belirtildiği , MOV Free AVCHD uygulamanın "Rewrap MOV" özelliği o MP4 ama MOV değil yapar halde iyi çalıştı.
Yazılım kendi ffmpeg (veya avconv) programını dahili olarak çağırıyor ve hangi seçeneklerin geçtiğini gördüm. Aşağıda gösterildiği gibi:
/Applications/Free AVCHD to Mov.app/Contents/Resources/bin/com.geranium-soft.convert \
-i /path/to/140710_Canon-00003.MTS \
-map 0:0 -map 0:1 -c:a libfaac -vol 256 -b:a 128k -c:v copy \
-sn -movflags faststart -threads 0 -pix_fmt yuv420p -y \
/path/to/140710_Canon-00003.mov
Aynı seçenekleri geçmeyi denedim (Kesinlikle aynı. Çıkış kabı türünü MOV olarak ayarladım ve hatta -t 60
anahtarı kaldırdım .) Ffmpeg programına dönüştürme ve dönüştürme. Ancak sonuç şu ana kadar bildirilenle aynıydı .
Her neyse, bu harika uygulama ".mp4" ve "ffmpeg tarafından" hariç, "H264 video akışını yeniden kodlamadan .MTS dosyasını (AVCHD) .mp4'e nasıl dönüştürebilirim?" Ama hala bu uygulamanın neden iyi olduğu ile ilgileniyorum ama ffmpeg yok.