ffmpeg audio convertissant et multiplexant les messages d'erreur / avertissement


0

J'ai une grande collection de disques BluRay et je souhaite qu'elle soit insérée dans ma bibliothèque iTunes pour être lue sur AppleTV.

Je dois convertir les différents flux audio en un format approprié.

Mais il y a plusieurs messages d'erreur / avertissement que je dois gérer.

Voici quelques exemples de fragments de code:

mkvmerge -i german_dd_to_alac__english_truehd_to_alac.mkv
mkvextract tracks german_dd_to_alac__english_truehd_to_alac.mkv 0:video.h264 1:audio1.ac3 2:audio2.truehd 3:audio2_core.ac3 4:sub1.srt
ffmpeg -i german_dd_to_alac__english_truehd_to_alac.mkv -f ffmetadata chapters
ffmpeg -i audio1.ac3 -acodec alac audio1.m4a
[ac3 @ 0000000000502b40] Estimating duration from bitrate, this may be inaccurate
[alac @ 000000000050cc40] encoding as 24 bits-per-sample
ffmpeg -i audio2.truehd -acodec alac -af "aformat=channel_layouts=7.1(wide)" audio2.m4a
[out_0_0 @ 000000000046bc40] 100 buffers queued in out_0_0, something may be wrong.

ffmpeg^
 -probesize 2147483648 -i video.h264 -i audio1_alac.m4a -i audio2_alac.m4a -i sub1.srt -i chapters^
 -map 0:0 -map 1:0 -map 2:0 -map 3:0^
 -metadata:s:a:0 language=ger -metadata:s:a:0 handler="Dolby Digital"^
 -metadata:s:a:1 language=eng -metadata:s:a:1 handler="Dolby TrueHD"^
 -metadata:s:s:0 language=ger -metadata:s:s:0 handler="Deutsch"^
 -movflags disable_chpl^
 -c:s mov_text -c:v copy -c:a copy^
 german_dd_to_alac__english_truehd_to_alac.m4v 2>> ffmpeg.log
[ipod @ 000000000338c040] track 1: codec frame size is not set
[ipod @ 000000000338c040] track 2: codec frame size is not set
[ipod @ 000000000338c040] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[ipod @ 000000000338c040] pts has no value

_

mkvmerge -i german_dts_to_alac__english_dtshdma_to_alac.mkv
mkvextract tracks german_dts_to_alac__english_dtshdma_to_alac.mkv 0:video.h264 1:audio1.dts 2:audio2.dtshdma 3:sub1.srt
ffmpeg -i german_dts_to_alac__english_dtshdma_to_alac.mkv -f ffmetadata chapters
ffmpeg -i audio1.dts -acodec alac audio1.m4a
[dts @ 0000000000332a80] Estimating duration from bitrate, this may be inaccurate
[alac @ 0000000000339d80] encoding as 24 bits-per-sample
ffmpeg -i audio2.dtshdma -acodec alac audio2.m4a

ffmpeg^
 -probesize 2147483648 -i video.h264 -i audio1_alac.m4a -i audio2_alac.m4a -i sub1.srt -i chapters^
 -map 0:0 -map 1:0 -map 2:0 -map 3:0^
 -metadata:s:a:0 language=ger -metadata:s:a:0 handler="DTS"^
 -metadata:s:a:1 language=eng -metadata:s:a:1 handler="DTS-HD Master Audio"^
 -metadata:s:s:0 language=ger -metadata:s:s:0 handler="Deutsch"^
 -movflags disable_chpl^
 -c:s mov_text -c:v copy -c:a copy^
 german_dts_to_alac__english_dtshdma_to_alac.m4v 2>> ffmpeg.log
[ipod @ 0000000002afe740] track 1: codec frame size is not set
[ipod @ 0000000002afe740] track 2: codec frame size is not set
[ipod @ 0000000002afe740] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[ipod @ 0000000002afe740] pts has no value

_

mkvmerge -i german_dtshr_to_alac__english_dtshdma_to_alac.mkv
mkvextract tracks german_dtshr_to_alac__english_dtshdma_to_alac.mkv 0:video.h264 1:audio1.dtshr 2:audio2.dtshdma
ffmpeg -i german_dtshr_to_alac__english_dtshdma_to_alac.mkv -f ffmetadata chapters
ffmpeg -i audio1.dtshr -acodec alac audio1.m4a
[alac @ 00000000005a4dc0] encoding as 24 bits-per-sample
ffmpeg -i audio2.dtshdma -acodec alac -af "aformat=channel_layouts=7.1(wide)" audio2.m4a

ffmpeg^
 -probesize 2147483648 -i video.h264 -i audio1_alac.m4a -i audio2_alac.m4a -i chapters^
 -map 0:0 -map 1:0 -map 2:0^
 -metadata:s:a:0 language=ger -metadata:s:a:0 handler="DTS-HD High Resolution"^
 -metadata:s:a:1 language=eng -metadata:s:a:1 handler="DTS-HD Master Audio"^
 -movflags disable_chpl^
 -c:v copy -c:a copy^
 german_dtshr_to_alac__english_dtshdma_to_alac.m4v 2>> ffmpeg.log
[ipod @ 00000000004f3780] track 1: codec frame size is not set
[ipod @ 00000000004f3780] track 2: codec frame size is not set
[ipod @ 00000000004f3780] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[ipod @ 00000000004f3780] pts has no value

_

[ac3 @ 0000000000502b40] Estimating duration from bitrate, this may be inaccurate

Ne s'affiche que lorsque j'essaie de convertir les formats avec perte suivants: ac3, dts et eac3. Avec perte dts (comme DTS-HD haute résolution) je vais bien.

[out_0_0 @ 000000000046bc40] 100 buffers queued in out_0_0, something may be wrong.

N'apparaît que lorsque j'essaie de convertir TrueHD sans perte, mais que l'audio DTS-HD Master Audio sans perte convient parfaitement.

[ipod @ 000000000338c040] track 1: codec frame size is not set
[ipod @ 000000000338c040] track 2: codec frame size is not set
[ipod @ 000000000338c040] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[ipod @ 000000000338c040] pts has no value

Ces messages sont toujours présents lorsque j'essaie de multiplexer tous les flux.

Vont-ils disparaître lorsque je mets les horodatages au format pts dans le conteneur? Je peux les extraire de mkv (mkvextract timecodes_v2 input.mkv 0: video.timecodes.txt 1: audio1.timecodes.txt 2: audio2.timecodes.txt 3: sub1.timecodes.txt 4: sub2.timecodes.txt 5: sub3 .timecodes.txt 6: sub4.timecodes.txt) mais uniquement au format timecodes_v2. Puis-je convertir timecodes_v2 en pts et les placer dans le conteneur pour éviter ces messages?

Meilleures salutations,

Félix

MODIFIER: Journaux pour le premier extrait: https://pastebin.com/xWq9U2sN


Est-ce que les sorties jouent normalement?
llogan

Oui, ils jouent bien.
FLX

Personne n'a la moindre idée?
FLX

Tracez le journal complet de l'une des commandes.
llogan

Voici les journaux du premier extrait: pastebin.com/xWq9U2sN
FLX

Réponses:


0

Je l'ai finalement résolu.

Je prends simplement le flux vidéo directement d'un conteneur à l'autre:

ffmpeg -i german_dd_to_alac__english_truehd_to_alac.mkv -map 0:0 -c copy german_dd_to_alac__english_truehd_to_alac.m4v

Et que fais mon truc:

ffmpeg^
 -i german_dd_to_alac__english_truehd_to_alac.m4v -i audio1.m4a -i audio2.m4a -i sub1.srt^  -map 0:0 -map 1:0 -map 2:0 -map 3:0^
 -metadata:s:a:0 language=ger -metadata:s:a:0 handler="Dolby Digital"^
 -metadata:s:a:1 language=eng -metadata:s:a:1 handler="Dolby TrueHD"^
 -metadata:s:s:0 language=ger -metadata:s:s:0 handler="Deutsch"^  -movflags disable_chpl^  -c:s mov_text -c:v copy -c:a alac^  final.m4v

Fonctionne comme un charme. Pas de pts ou d'erreur d'horodatage. J'ai résolu l'erreur de définition de la taille de la trame en spécifiant le codec audio -c: un alac. Je ne sais pas pourquoi mais ça marche.

Les "100 tampons en file d'attente dans out_0_0, une erreur peut survenir." Une erreur est toujours présente. Ce serait formidable si je pouvais résoudre ça aussi.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.