On Tue, Mar 28, 2017 at 06:30:30PM +0300, ffm...@scil.sinp.msu.ru wrote: > > Hi! > > Attached patch changes the PCR pid dedication number algo: > pcr_pid belongs to the program, not to entire TS (it was the mistake > in TS code). So, the patch makes it possible to broadcast TS with > several programs inside. > It is possible to set the pcr pid manually by adding in the prog > conf like this (pcr_pid=0x301): > -program > title="Xren2":service_provider="provider5":program_num=0x5579:pcr_pid=0x301:st=0 > Not tested: multiple TS streaming. > > Also, the title, service name and provider name were corrected in > the ffmpeg_opt.c: options required in mpegtsenc.c were not present > in ffmpeg_opt from the genesis, and the only provider was ffmpeg. > Look at example above (service_provider="provider5"). > > Behaviour of "-stream_loop" and "-re" options changes with this patch: > ffmpeg -re \ > -i auu.wav \ > -re \ > -stream_loop 4 \ > -re \ > -i auu1.wav \ > > will loop 4 times auu1.wav, while auu.wav forever. So, the streaming > continues while one prog is finished. Touches all containers. > > Example 1 (streaming 4 progs in one mpeg TS): > ffmpeg -re \ > -i bbbbb_800x450_25fps.avi \ > -i xxxxx.wav \ > -i yyyyy.wav -stream_loop 10\ > -i zzzz.mp3 \ > -map 0:v \ > -map 0:a \ > -map_channel 0.1.0:1.0 \ > -map_channel 0.1.1:1.1 \ > -vcodec libx264 -b:v 800k \ > -x264-params level=30:bframes=5:weightp=0:\ > cabac=0:ref=1:vbv-maxrate=560:vbv-bufsize=2000:analyse=all:me=umh:\ > no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 \ > -mpegts_original_network_id 0x1122 \ > -mpegts_transport_stream_id 0x3344 \ > -mpegts_service_id 0x5566 \ > -streamid 0:0x159 \ > -metadata service_provider="Some provider" \ > -metadata service_name="Some Channel" \ > -c:a:0 libfdk_aac -profile:a aac_he -ac 2 -b:a 32k \ > -streamid 1:0x160 \ > -f mpegts \ > -map 1:a \ > -mpegts_original_network_id 0x1123 \ > -mpegts_transport_stream_id 0x3345 \ > -mpegts_service_id 0x55CA \ > -metadata service_provider="Some provider1" \ > -metadata service_name="Some Channel1" \ > -map_channel 1.0.0:2.0 \ > -map_channel 1.0.1:2.1 \ > -c:a:1 libfdk_aac -profile:a aac_he_v2 -ac 2 -b:a 32k \ > -streamid 2:0x180 \ > -f mpegts \ > -map 2:a \ > -mpegts_original_network_id 0x1127 \ > -mpegts_transport_stream_id 0x3348 \ > -mpegts_service_id 0x55CE \ > -map_channel 2.0.0:3.0 \ > -map_channel 2.0.1:3.1 \ > -c:a:2 libfdk_aac -profile:a aac_he_v2 -ac 2 -b:a 32k \ > -streamid 3:0x182 \ > -map 3:a \ > -mpegts_original_network_id 0x1129 \ > -mpegts_transport_stream_id 0x3349 \ > -mpegts_service_id 0x55CF \ > -map_channel 3.0.0:4.0 \ > -map_channel 3.0.1:4.1 \ > -c:a:3 libfdk_aac -profile:a aac_he_v2 -ac 2 -b:a 32k \ > -streamid 4:0x184 \ > -program > title="Xren0":service_name="Zanunda":service_provider="provider4":program_num=0x5576:st=0:st=1 > \ > -program > title="Xren1":service_provider="provider4":program_num=0x5578:st=2 \ > -program > title="Xren2":service_provider="provider5":program_num=0x5579:st=3 \ > -program > title="Xren3":service_provider="provider6":program_num=0x5581:st=4 \ > -metadata service_provider="Some provider3" \ > -metadata service_name="Some Channel3" \ > -f mpegts udp://172.16.1.10:1234\&pkt_size=1316 > > Example 2 (streaming 2 audio files with looping/repeat; note, to > repeat, use -re for required input stream; 1 mpeg TS out): > ffmpeg -re \ > -i auu.wav \ > -re \ > -stream_loop 4 \ > -re \ > -i auu.wav \ > -map 0:a \ > -mpegts_original_network_id 0x1127 \ > -mpegts_transport_stream_id 0x3348 \ > -mpegts_service_id 0x55CE \ > -map_channel 0.0.0:0.0 \ > -map_channel 0.0.1:0.1 \ > -c:a:0 libfdk_aac -profile:a aac_he_v2 -ac 2 -b:a 32k \ > -streamid 0:0x182 \ > -map 1:a \ > -mpegts_original_network_id 0x1129 \ > -mpegts_transport_stream_id 0x3349 \ > -mpegts_service_id 0x55CF \ > -map_channel 1.0.0:1.0 \ > -map_channel 1.0.1:1.1 \ > -c:a:1 libfdk_aac -profile:a aac_he_v2 -ac 2 -b:a 32k \ > -streamid 1:0x184 \ > -program > title="Xren2":service_provider="provider5":program_num=0x5579:st=0 \ > -program > title="Xren3":service_provider="provider6":program_num=0x5581:st=1 \ > -metadata service_provider="Some provider3" \ > -metadata service_name="Some Channel3" \ > -f mpegts udp://172.16.1.10:1234\&pkt_size=1316
> ffmpeg.c | 26 +++++++++ > ffmpeg_opt.c | 7 !! > ffmpeg_orig.c |only > ffmpeg_vvs.c |only > libavformat/mpegtsenc.c | 126 +++++++++++++++++++++++++++++--------!!!!!!!!! > 5 files changed, 104 insertions(+), 20 deletions(-), 35 modifications(!) > 6416060e36e81bb3008d3a4b62862eb9446ade08 ffmpeg_git.diff > diff -c -r ffmpeg_git_old/ffmpeg.c ffmpeg_git_new/ffmpeg.c > *** ffmpeg_git_old/ffmpeg.c 2017-03-27 19:20:02.000000000 +0300 > --- ffmpeg_git_new/ffmpeg.c 2017-03-28 17:25:10.000000000 +0300 > *************** > *** 4028,4033 **** Please submit a git format patch, i think many people will have difficulty reading this [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The misfortune of the wise is better than the prosperity of the fool. -- Epicurus
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel