Я хотел бы создать несегментированное видео .mp4 из источника matroska. Я видел this post и создал аналогичный трубопровод. Мой источник содержит только h264 видео и звука, поэтому мой трубопровод выглядит следующим образом:Сроки теряются при преобразовании видео h264 в несегментированный mp4 с использованием gstreamer
gst-launch-1.0 filesrc location=x.mkv ! matroskademux ! h264parse ! mp4mux ! filesink location=x.mp4
Однако работает gst-discoverer-1.0
на результате дает длительность 0: 00: +00,000000000. Также vlc
не может воспроизвести полученный файл .mp4 и не может использоваться в элементе HTML5 <video>
(что является конечной целью этого преобразования).
Если я создаю сегментированный .mp4, добавив fragment-duration=1000
в элемент mp4mux
, то vlc
может воспроизводить .mp4, но это не то, что я хочу. Мне нужна .mp4, где известна общая длина. Что я делаю неправильно?
Дополнительная информация: Длина была в источнике matroska, как показано на рисунке gst-discoverer-1.0
, и vlc
может отображать этот источник. Я также могу воспроизвести несегментированный .mp4 с gstreamer (используя gst-launch-1.0 filesrc location=x.mp4 ! qtdemux ! h264parse ! avdec_h264 ! videoconvert ! autovideosink
). Проверка созданного файла .dot
показывает частоту кадров 10000/1, исходящую из qtdemux
, которая кажется довольно странной.