FFmpeg x264 na x265 u kontejneru mp4

Re:FFmpeg x264 na x265 u kontejneru mp4
« Odpověď #15 kdy: 13. 02. 2023, 19:24:05 »
Pokud člověk není omezený nějakým hloupým zařízením, které nic jiného neumí, tak je asi lepší se MP4 vyhýbat a používat Matrosku, případně webm.


Jigdo

  • ****
  • 478
    • Zobrazit profil
Re:FFmpeg x264 na x265 u kontejneru mp4
« Odpověď #16 kdy: 14. 02. 2023, 01:04:22 »
Zdravím.

Hrál jsem si s tím několik hodin (hledání na internetu a zkoušení), jelikož mě to taky zajímá, protože si občas archivuji televizní nahrávky pomocí ffmpeg do mkv formátu. Zjistil jsem, že mnou navrhované -map_metadata:s:a 0:s:a funguje, když je výstup v mkv, ale nefunguje, když konvertuji do mp4, resp. aspoň to tak vypadalo, protože ani ffprobe ani mpv u výsledku nehlásily žádný tag 'Title' u audio streamu.

Pro ověření jsem hledal, čím se dají editovat metadata u mp4, někdo radil, že to jde ve vlc, což se mi nepodařilo, ale náhodou jsem zjistil, že vlc ten název zvukové stopy zobrazuje. Takže jsem si nainstaloval mediainfo a tento program název zobrazil taky.

Zbytek byl snadný. Vzal jsem nahrávku, která má kromě videa dvě zvukové stopy (českou a anglickou) a také titulky v uvedených jazycích, jak ukazuje výstup z mpv:
Kód: [Vybrat]
$ mpv Nahravka.mkv
 (+) Video --vid=1 (*) 'video' (hevc 1920x800 23.976fps)
 (+) Audio --aid=1 --alang=cze (*) 'audio cz' (ac3 6ch 48000Hz)
     Audio --aid=2 --alang=eng 'audio en' (ac3 6ch 48000Hz)
     Subs  --sid=1 --slang=cze 'subtitles cz' (subrip)
     Subs  --sid=2 --slang=eng 'subtitles en' (subrip)
File tags:
 Title: Nahravka
AO: [pulse] 48000Hz 5.1(side) 6ch float
VO: [gpu] 1920x800 yuv420p10
AV: 00:00:01 / 02:06:01 (0%) A-V:  0.000
Pak jsem zkusil vytáhnout pomocí ffmpeg anglický zvuk a české titulky a výsledek dát do mp4:
Kód: [Vybrat]
ffmpeg -y -i Nahravka.mkv -map 0:v -c:v copy -map 0:a:m:language:eng -c:a copy -map 0:s:m:language:cze -c:s mov_text Nahravka.mp4

Ve výsledku jsou správně oba tituly, jak ukazuje zkrácený výpis programu mediainfo:
Kód: [Vybrat]
Audio
ID                                       : 2
Format                                   : AC-3
Format/Info                              : Audio Coding 3
Commercial name                          : Dolby Digital
Codec ID                                 : ac-3
Duration                                 : 2 h 6 min
Bit rate mode                            : Constant
Bit rate                                 : 640 kb/s
Channel(s)                               : 6 channels
Channel layout                           : L R C LFE Ls Rs
Sampling rate                            : 48.0 kHz
Frame rate                               : 31.250 FPS (1536 SPF)
Compression mode                         : Lossy
Stream size                              : 577 MiB (34%)
Title                                    : audio en
Language                                 : English
Service kind                             : Complete Main
Default                                  : Yes
Alternate group                          : 1

Text
ID                                       : 3
Format                                   : Timed Text
Muxing mode                              : sbtl
Codec ID                                 : tx3g
Duration                                 : 2 h 5 min
Bit rate mode                            : Variable
Bit rate                                 : 53 b/s
Frame rate                               : 0.339 FPS
Stream size                              : 48.4 KiB (0%)
Title                                    : subtitles cz
Language                                 : Czech
Default                                  : Yes
Forced                                   : No
Alternate group                          : 3
Pokud použiji ještě volbu -map_metadata, zkopírují se jen explicitně uvedená metadata, např. pokud u předchozího příkazu přidám -map_metadata:s:a 0:s:a:0, přepíše se mi český název k anglickému zvuku, k ostatním streamům se nenakopíruje nic.
 
Jirka

Tak to je zajimave :) Dekuji.

Ted jsem to zkousel z MKV do MP4 a opravdu tam ten "Title" zustane :)
ffmpeg -y -i in.mkv -map 0:v -c:v copy -map 0:a:m:language:spa -c:a copy -map 0:s:m:language:spa -c:s mov_text out.SPA.mp4


U MP4, se mi to ale nepovedlo
ffmpeg -y -i in.mp4 -map 0:v -c:v copy -map 0:a:m:language:spa -c:a copy -map 0:s:m:language:spa -c:s mov_text -map_metadata:s:a 0:s:a:0 out.SPA.mp4
navic misto SPA se prekopirovaly akorat cinske audio stopy ..... :( a u titulku chybi i "Language"

To vypada ze FFMpeg si s MP4 moc nerozumi :(
« Poslední změna: 14. 02. 2023, 01:08:09 od Jigdo »

Re:FFmpeg x264 na x265 u kontejneru mp4
« Odpověď #17 kdy: 14. 02. 2023, 09:50:49 »

To vypada ze FFMpeg si s MP4 moc nerozumi :(

Vypadá to tak, když ffprobe ani nezobrazí správně metadata. Zkusím ještě zapátrat.

Jirka