Как извлечь h264 и элементарный поток aac из mp4 / mkv с помощью gstreamer

Я не смог найти стабильный и сбалансированный подход для демультиплексирования A/V-потока, а затем сохранить его как воспроизводимое видео в формате h264 в приложении B.

Ну, я попробовал следующие шаги для сжатия файла.

gst-launch-0.10 filesrc location = h264_720p_mp_3.1_3mbps_aac_shrinkage.mkv! matroskademux! местонахождение файла = abc.h264

-rw-rw-r-- 1 XXX XXX 28697147 1 ноября 10:04 h264_720p_mp_3.1_3mbps_aac_shrinkage.mkv
-rw-rw-r-- 1 XXX XXX 27581733 1 ноября 10:19 abc.h264

файл был сохранен с "не таким меньшим" размером, но не может быть воспроизведен, однако формат родительского контейнера можно воспроизвести с помощью следующего конвейера

gst-launch-0.10 filesrc location=h264_720p_mp_3.1_3mbps_aac_shrinkage.mkv! matroskademux! h264parse! ffdec_h264! ffmpegcolorspace! ximagesink

Вопросы
Q1. Какими методами можно извлечь видео ES и Audio ES из разных контейнеров с помощью gstreamer?

Q2. Q1, используя другие методы, которые всегда работают и / или просты?

1 ответ

В общем, вам нужно указать, какой пэд вас интересует. В противном случае вы не сможете отличить аудио ES от видео ES.

На моей машине работает следующее:

gst-launch-1.0 filesrc location=example.mkv ! queue ! matroskademux name=dmux dmux.video_0 ! queue ! filesink location=vid.265 dmux.audio_0 ! queue ! filesink location=aud.aac

У меня работает выполнение всех команд. Он создает файл потока байтов h.264 из видеофайла mp4. Вновь созданный файл также воспроизводится с использованием ffplay или gst-play-1.0

gst-launch-1.0 filesrc location =. / VID-20190903-WA0012.mp4! qtdemux name = pnkj_demux! h264parse! видео /x-h264, формат потока = поток байтов! расположение файловой ссылки =. / VID-20190903-WA0012_1.264

gst-launch-1.0 -e filesrc location =. / VID-20190903-WA0012.mp4! qtdemux name = pnkj_demux! h264parse! видео /x-h264, формат потока = поток байтов! расположение файловой ссылки =. / VID-20190903-WA0012_2.264

gst-launch-1.0 filesrc location =. / VID-20190903-WA0012.mp4! qtdemux name = pnkj_demux pnkj_demux.video_0! h264parse! видео /x-h264, формат потока = поток байтов! расположение файловой ссылки =. / VID-20190903-WA0012_3.264

gst-launch-1.0 -e filesrc location =. / VID-20190903-WA0012.mp4! qtdemux name = pnkj_demux pnkj_demux.video_0! h264parse! видео /x-h264, формат потока = поток байтов! расположение файловой ссылки =./VID-20190903-WA0012_4.264

Другие вопросы по тегам