Забота о бесшумных кадрах заливки, конвертирующих mp4 в ts? - PullRequest
0 голосов
/ 13 февраля 2019
videoOutputSettings = [
  AVVideoCodecKey: AVVideoCodecH264,
  AVVideoWidthKey: width,
  AVVideoHeightKey: height,
  AVVideoCompressionPropertiesKey: [
    AVVideoAverageBitRateKey: avgBitRate,
    AVVideoExpectedSourceFrameRateKey: fps,
    AVVideoProfileLevelKey: AVVideoProfileLevelH264BaselineAutoLevel
  ]
]
audioOutputSettings = [
  AVFormatIDKey: kAudioFormatMPEG4AAC,
  AVSampleRateKey: 44100,
  AVNumberOfChannelsKey: 2
]

Я записываю видео + аудио с помощью AVCaptureSession (экран, камера и микрофон в OSX) и кодирую его с помощью AVAssetWriter (AVFileType.mp4), меняя записи каждые 6 секунд.Каждый раз, когда пишется новая часть, приложение nodeJS будет уведомлено и с помощью ffmpeg преобразует его в ts с

ffmpeg -y -i generatedFile.mp4 -c copy -copyts -muxdelay 0 -muxpreload 0 outputFile.ts

Я вручную напишу m3u8 в виде:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:7
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:6.140227,
11214532343c4cae953d45e94a1660ea-0.ts
#EXTINF:6.284218,
11214532343c4cae953d45e94a1660ea-1.ts
#EXTINF:6.099999999999998,
11214532343c4cae953d45e94a1660ea-2.ts
#EXTINF:6.133333,
11214532343c4cae953d45e94a1660ea-3.ts
#EXTINF:6.133333,
11214532343c4cae953d45e94a1660ea-4.ts
#EXTINF:6.100000000000001,
11214532343c4cae953d45e94a1660ea-5.ts
#EXTINF:6.133333,
11214532343c4cae953d45e94a1660ea-6.ts
#EXTINF:6.199999999999996,
11214532343c4cae953d45e94a1660ea-7.ts
#EXTINF:6.0666670000000025,
11214532343c4cae953d45e94a1660ea-8.ts
#EXT-X-ENDLIST

Проблема в том, что у меня есть звуковые промежутки между частями, и я считаю, что кадры заливки AAC обрабатываются неправильно.Правильно ли я полагаю, что так?

файл примера

❯ afinfo 11.mp4
File:           11.mp4
File type ID:   mp4f
Num Tracks:     1
----
Data format:     2 ch,  44100 Hz, 'aac ' (0x00000000) 0 bits/channel, 0 bytes/packet, 1024 frames/packet, 0 bytes/frame
                no channel layout.
estimated duration: 6.128617 sec
audio bytes: 87558
audio packets: 266
bit rate: 113407 bits per second
packet size upper bound: 401
maximum packet size: 401
audio data file offset: 577163
optimized
audio 270272 valid frames + 2112 priming + 0 remainder = 272384
format list:
[ 0] format:      2 ch,  44100 Hz, 'aac ' (0x00000000) 0 bits/channel, 0 bytes/packet, 1024 frames/packet, 0 bytes/frame
Channel layout: Stereo (L R)
----

файл примера

❯ ffprobe -v error -show_format -show_streams 1.mp4
[STREAM]
index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=Baseline
codec_type=video
codec_time_base=1/60
codec_tag_string=avc1
codec_tag=0x31637661
width=1920
height=1080
coded_width=1920
coded_height=1088
has_b_frames=0
sample_aspect_ratio=1:1
display_aspect_ratio=16:9
pix_fmt=yuv420p
level=40
color_range=tv
color_space=bt709
color_transfer=bt709
color_primaries=bt709
chroma_location=bottom
field_order=unknown
timecode=N/A
refs=1
is_avc=true
nal_length_size=4
id=N/A
r_frame_rate=30/1
avg_frame_rate=30/1
time_base=1/600
start_pts=3600
start_time=6.000000
duration_ts=7260
duration=12.100000
bit_rate=4227137
max_bit_rate=N/A
bits_per_raw_sample=8
nb_frames=183
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=1
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
TAG:creation_time=2019-02-13T13:21:51.000000Z
TAG:language=und
TAG:handler_name=Core Media Video
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_long_name=AAC (Advanced Audio Coding)
profile=LC
codec_type=audio
codec_time_base=1/44100
codec_tag_string=mp4a
codec_tag=0x6134706d
sample_fmt=fltp
sample_rate=44100
channels=2
channel_layout=stereo
bits_per_sample=0
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/44100
start_pts=272991
start_time=6.190272
duration_ts=545352
duration=12.366259
bit_rate=115688
max_bit_rate=128000
bits_per_raw_sample=N/A
nb_frames=269
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=1
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
TAG:creation_time=2019-02-13T13:21:51.000000Z
TAG:language=und
TAG:handler_name=Core Media Audio
[/STREAM]
[FORMAT]
filename=1.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=6.000000
duration=12.366259
size=3317034
bit_rate=2145860
probe_score=100
TAG:major_brand=mp42
TAG:minor_version=1
TAG:compatible_brands=mp41mp42isom
TAG:creation_time=2019-02-13T13:21:51.000000Z
[/FORMAT]

Можно ли как-нибудь сгенерировать ts-файлы с задержкой кодера?забота о?

...