ffmpeg аудіо перетворення і muxing помилки / попередження


0

У мене є велика колекція BluRay і хочу, щоб вона потрапила в мою бібліотеку iTunes для відтворення на AppleTV.

Мені потрібно перетворити різні аудіопотоки на відповідний формат.

Але є декілька повідомлень про помилки / попередження, які потрібно обробити.

Нижче наведено приклади фрагментів коду:

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

Лише спливає, коли я намагаюся перетворити такі формати втрат: ac3, dts і eac3. З втратами dts (як DTS-HD високою роздільною здатністю) я в порядку.

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

Тільки виникає, коли я намагаюся перетворити TrueHD без втрат, без втрат DTS-HD Master Audio прекрасно.

[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

Ці повідомлення завжди присутні, коли я намагаюся усунути всі потоки.

Чи зникнуть вони, коли я поміщу позначки часу в контейнер? Я можу витягти їх з 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), але тільки в форматі timecodes_v2. Чи можна перетворити timecodes_v2 в окуляри і помістити їх у контейнер, щоб уникнути цих повідомлень?

З повагою,

Фелікс

EDIT: Журнали для першого фрагмента: https://pastebin.com/xWq9U2sN


Чи нормально відтворюються виходи?
llogan

Так, вони грають добре.
FLX

Ніхто не має поняття?
FLX

Одягніть повний журнал з однієї з команд.
llogan

Ось журнали для першого фрагмента: pastebin.com/xWq9U2sN
FLX

Відповіді:


0

Я остаточно вирішив її.

Я просто беру відеопотік безпосередньо з одного контейнера в інший:

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

А чим робити мою річ:

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

Працює як шарм. Немає одиниць помилки або помилок часу. Я вирішив розмір кадру, не встановивши помилку, вказавши аудіокодек -c: a alac. Не знаєте чому, але він працює.

„100 буферів в черзі в out_0_0, щось може бути неправильним.“ Помилка все ще існує. Було б чудово, якщо б я теж вирішив це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.